Mostly does everything I need, minus the ritual description. That'll have to probably be a separate generator. Next, rewrite this crap.

master
Zed A. Shaw 3 days ago
parent 2ceab51c40
commit d1bd6b7c45
  1. 36
      ritual_ui.cpp
  2. 1
      ritual_ui.hpp

@ -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});

@ -35,6 +35,7 @@ namespace gui {
void render(sf::RenderWindow &window);
void update();
void attempt_combine();
void update_items();
void combine_clicked(DinkyECS::Entity ent);
void inv_slot_clicked(DinkyECS::Entity ent, DinkyECS::Entity item_id);

Loading…
Cancel
Save