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;
|
||||
|
||||
UI::UI(GameLevel level) :
|
||||
$level(level),
|
||||
$blanket($level.world->get_the<::ritual::Blanket>())
|
||||
$level(level)
|
||||
{
|
||||
$gui.position(STATUS_UI_X, STATUS_UI_Y, STATUS_UI_WIDTH, STATUS_UI_HEIGHT);
|
||||
$gui.layout(
|
||||
|
@ -139,23 +138,23 @@ namespace gui {
|
|||
}
|
||||
}
|
||||
|
||||
$blanket.reset();
|
||||
blanket().reset();
|
||||
}
|
||||
|
||||
void UI::select_item(SelectedItem pair) {
|
||||
auto& sprite = $gui.get<Sprite>(pair.slot_id);
|
||||
|
||||
if($blanket.is_selected(pair.item_id)) {
|
||||
$blanket.deselect(pair.item_id);
|
||||
if(blanket().is_selected(pair.item_id)) {
|
||||
blanket().deselect(pair.item_id);
|
||||
sprite.sprite->setColor({255, 255, 255, 255});
|
||||
} else {
|
||||
$blanket.select(pair.item_id);
|
||||
blanket().select(pair.item_id);
|
||||
sprite.sprite->setColor({255, 200, 200, 200});
|
||||
}
|
||||
}
|
||||
|
||||
void UI::update_selection_state() {
|
||||
if($blanket.no_selections()) {
|
||||
if(blanket().no_selections()) {
|
||||
clear_craft_result();
|
||||
state(State::OPENED);
|
||||
} else {
|
||||
|
@ -167,7 +166,7 @@ namespace gui {
|
|||
void UI::load_blanket() {
|
||||
// update the list of available items
|
||||
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++);
|
||||
|
||||
$gui.set_init<Sprite>(slot_id, {item});
|
||||
|
@ -192,7 +191,7 @@ namespace gui {
|
|||
auto& belt = $level.world->get_the<::ritual::Belt>();
|
||||
belt.equip(belt.next(), ritual);
|
||||
$level.world->send<Events::GUI>(Events::GUI::NEW_RITUAL, $level.player, {});
|
||||
$blanket.consume_crafting();
|
||||
blanket().consume_crafting();
|
||||
clear_craft_result();
|
||||
|
||||
load_blanket();
|
||||
|
@ -203,8 +202,8 @@ namespace gui {
|
|||
void UI::run_crafting_engine() {
|
||||
$craft_state.reset();
|
||||
|
||||
for(auto [item_id, setting] : $blanket.selected) {
|
||||
auto& item = $blanket.get(item_id);
|
||||
for(auto [item_id, setting] : blanket().selected) {
|
||||
auto& item = blanket().get(item_id);
|
||||
$ritual_engine.load_junk($craft_state, item);
|
||||
}
|
||||
|
||||
|
@ -246,7 +245,7 @@ namespace gui {
|
|||
}
|
||||
|
||||
void UI::clear_craft_result() {
|
||||
$blanket.reset();
|
||||
blanket().reset();
|
||||
$gui.close<Text>("result_text");
|
||||
$gui.close<Sprite>("result_image");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue