The problem was keeping a reference in a class/object means that it will not get updated copies when levelmanager makes a new level. Honestly that whole constelation of bullshit needs to die. Closes #62.
This commit is contained in:
parent
ae1a48deed
commit
b839fb6463
2 changed files with 15 additions and 13 deletions
|
@ -13,8 +13,7 @@ namespace gui {
|
||||||
using std::any, std::any_cast, std::string, std::make_any;
|
using std::any, std::any_cast, std::string, std::make_any;
|
||||||
|
|
||||||
UI::UI(GameLevel level) :
|
UI::UI(GameLevel level) :
|
||||||
$level(level),
|
$level(level)
|
||||||
$blanket($level.world->get_the<::ritual::Blanket>())
|
|
||||||
{
|
{
|
||||||
$gui.position(STATUS_UI_X, STATUS_UI_Y, STATUS_UI_WIDTH, STATUS_UI_HEIGHT);
|
$gui.position(STATUS_UI_X, STATUS_UI_Y, STATUS_UI_WIDTH, STATUS_UI_HEIGHT);
|
||||||
$gui.layout(
|
$gui.layout(
|
||||||
|
@ -139,23 +138,23 @@ namespace gui {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$blanket.reset();
|
blanket().reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::select_item(SelectedItem pair) {
|
void UI::select_item(SelectedItem pair) {
|
||||||
auto& sprite = $gui.get<Sprite>(pair.slot_id);
|
auto& sprite = $gui.get<Sprite>(pair.slot_id);
|
||||||
|
|
||||||
if($blanket.is_selected(pair.item_id)) {
|
if(blanket().is_selected(pair.item_id)) {
|
||||||
$blanket.deselect(pair.item_id);
|
blanket().deselect(pair.item_id);
|
||||||
sprite.sprite->setColor({255, 255, 255, 255});
|
sprite.sprite->setColor({255, 255, 255, 255});
|
||||||
} else {
|
} else {
|
||||||
$blanket.select(pair.item_id);
|
blanket().select(pair.item_id);
|
||||||
sprite.sprite->setColor({255, 200, 200, 200});
|
sprite.sprite->setColor({255, 200, 200, 200});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::update_selection_state() {
|
void UI::update_selection_state() {
|
||||||
if($blanket.no_selections()) {
|
if(blanket().no_selections()) {
|
||||||
clear_craft_result();
|
clear_craft_result();
|
||||||
state(State::OPENED);
|
state(State::OPENED);
|
||||||
} else {
|
} else {
|
||||||
|
@ -167,7 +166,7 @@ namespace gui {
|
||||||
void UI::load_blanket() {
|
void UI::load_blanket() {
|
||||||
// update the list of available items
|
// update the list of available items
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for(auto& [item_id, item] : $blanket.contents) {
|
for(auto& [item_id, item] : blanket().contents) {
|
||||||
auto slot_id = $gui.entity("inv_slot", i++);
|
auto slot_id = $gui.entity("inv_slot", i++);
|
||||||
|
|
||||||
$gui.set_init<Sprite>(slot_id, {item});
|
$gui.set_init<Sprite>(slot_id, {item});
|
||||||
|
@ -192,7 +191,7 @@ namespace gui {
|
||||||
auto& belt = $level.world->get_the<::ritual::Belt>();
|
auto& belt = $level.world->get_the<::ritual::Belt>();
|
||||||
belt.equip(belt.next(), ritual);
|
belt.equip(belt.next(), ritual);
|
||||||
$level.world->send<Events::GUI>(Events::GUI::NEW_RITUAL, $level.player, {});
|
$level.world->send<Events::GUI>(Events::GUI::NEW_RITUAL, $level.player, {});
|
||||||
$blanket.consume_crafting();
|
blanket().consume_crafting();
|
||||||
clear_craft_result();
|
clear_craft_result();
|
||||||
|
|
||||||
load_blanket();
|
load_blanket();
|
||||||
|
@ -203,8 +202,8 @@ namespace gui {
|
||||||
void UI::run_crafting_engine() {
|
void UI::run_crafting_engine() {
|
||||||
$craft_state.reset();
|
$craft_state.reset();
|
||||||
|
|
||||||
for(auto [item_id, setting] : $blanket.selected) {
|
for(auto [item_id, setting] : blanket().selected) {
|
||||||
auto& item = $blanket.get(item_id);
|
auto& item = blanket().get(item_id);
|
||||||
$ritual_engine.load_junk($craft_state, item);
|
$ritual_engine.load_junk($craft_state, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -246,7 +245,7 @@ namespace gui {
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::clear_craft_result() {
|
void UI::clear_craft_result() {
|
||||||
$blanket.reset();
|
blanket().reset();
|
||||||
$gui.close<Text>("result_text");
|
$gui.close<Text>("result_text");
|
||||||
$gui.close<Sprite>("result_image");
|
$gui.close<Sprite>("result_image");
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,6 @@ namespace gui {
|
||||||
guecs::UI $gui;
|
guecs::UI $gui;
|
||||||
GameLevel $level;
|
GameLevel $level;
|
||||||
textures::SpriteTexture $ritual_ui;
|
textures::SpriteTexture $ritual_ui;
|
||||||
::ritual::Blanket& $blanket;
|
|
||||||
::ritual::Engine $ritual_engine;
|
::ritual::Engine $ritual_engine;
|
||||||
::ritual::CraftingState $craft_state;
|
::ritual::CraftingState $craft_state;
|
||||||
|
|
||||||
|
@ -65,6 +64,10 @@ namespace gui {
|
||||||
void complete_combine();
|
void complete_combine();
|
||||||
void update_selection_state();
|
void update_selection_state();
|
||||||
void update_level(GameLevel &level);
|
void update_level(GameLevel &level);
|
||||||
|
|
||||||
|
::ritual::Blanket& blanket() {
|
||||||
|
return $level.world->get_the<::ritual::Blanket>();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue