|
|
|
@ -78,6 +78,26 @@ namespace gui { |
|
|
|
|
auto& blanket = $level.world->get_the<ritual::Blanket>(); |
|
|
|
|
blanket.select(item_id); |
|
|
|
|
|
|
|
|
|
attempt_combine(); |
|
|
|
|
|
|
|
|
|
// display the possible outcome here
|
|
|
|
|
if($craft_state.is_combined()) { |
|
|
|
|
auto ritual = $engine.finalize($craft_state); |
|
|
|
|
using enum ritual::Element; |
|
|
|
|
switch(ritual.element) { |
|
|
|
|
case FIRE: |
|
|
|
|
$gui.show_sprite("result_image", "broken_yoyo-64"); |
|
|
|
|
break; |
|
|
|
|
case LIGHTNING: |
|
|
|
|
$gui.show_sprite("result_image", "pocket_watch-64"); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
$gui.show_sprite("result_image", "severed_finger-64"); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
$gui.close<Sprite>("result_image"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
update_items(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -97,12 +117,8 @@ namespace gui { |
|
|
|
|
update_items(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void RitualUI::combine_clicked(DinkyECS::Entity ent) { |
|
|
|
|
// auto cell = $gui.cell_for(ent);
|
|
|
|
|
void RitualUI::attempt_combine() { |
|
|
|
|
auto& blanket = $level.world->get_the<ritual::Blanket>(); |
|
|
|
|
auto& bs = $gui.get<Sprite>(ent); |
|
|
|
|
bs.sprite->setColor({200, 0, 0}); |
|
|
|
|
|
|
|
|
|
$craft_state = $engine.start(); |
|
|
|
|
|
|
|
|
|
for(auto [ent, yes] : blanket.selected) { |
|
|
|
@ -111,6 +127,14 @@ namespace gui { |
|
|
|
|
|
|
|
|
|
// finalize here ritual here
|
|
|
|
|
$engine.plan($craft_state); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void RitualUI::combine_clicked(DinkyECS::Entity ent) { |
|
|
|
|
// auto cell = $gui.cell_for(ent);
|
|
|
|
|
auto& bs = $gui.get<Sprite>(ent); |
|
|
|
|
bs.sprite->setColor({200, 0, 0}); |
|
|
|
|
|
|
|
|
|
attempt_combine(); |
|
|
|
|
|
|
|
|
|
if($craft_state.is_combined()) { |
|
|
|
|
// add it to the belt
|
|
|
|
@ -141,10 +165,10 @@ namespace gui { |
|
|
|
|
|
|
|
|
|
for(auto& [item_id, item] : blanket.contents) { |
|
|
|
|
auto button = $gui.entity("inv_slot", i++); |
|
|
|
|
auto selector = $gui.entity("craft", j++); |
|
|
|
|
std::string sprite_name = fmt::format("{}-64", item); |
|
|
|
|
|
|
|
|
|
if(blanket.is_selected(item_id)) { |
|
|
|
|
auto selector = $gui.entity("craft", j++); |
|
|
|
|
$gui.set_init<Sprite>(selector, {sprite_name}); |
|
|
|
|
} else if($gui.has<Clickable>(button)) { |
|
|
|
|
$gui.set_init<Sprite>(button, {sprite_name}); |
|
|
|
|