Initial loot UI works to load an item by its world entity ID.
This commit is contained in:
parent
f208ca946e
commit
4b34de2109
6 changed files with 67 additions and 20 deletions
|
@ -27,20 +27,6 @@ namespace gui {
|
|||
bg_color.a = 140;
|
||||
$gui.set<Background>($gui.MAIN, {$gui.$parser, bg_color});
|
||||
|
||||
// fill in 4 slots for prototype
|
||||
for(int i = 0; i < 4; i++) {
|
||||
auto id = $gui.entity("item_", i);
|
||||
|
||||
$gui.set<guecs::Rectangle>(id, {THEME.PADDING,
|
||||
THEME.TRANSPARENT, THEME.LIGHT_MID });
|
||||
|
||||
$gui.set<guecs::Effect>(id, {0.4f, "ui_shader"});
|
||||
$gui.set<guecs::Clickable>(id, {
|
||||
[=](auto, auto) { fmt::println("clicked button_{}", i); }
|
||||
});
|
||||
$gui.set<guecs::Sprite>(id, {"broken_yoyo"});
|
||||
}
|
||||
|
||||
auto close = $gui.entity("close");
|
||||
$gui.set<guecs::Rectangle>(close, {});
|
||||
$gui.set<guecs::Label>(close, {L"CLOSE"});
|
||||
|
@ -48,6 +34,34 @@ namespace gui {
|
|||
guecs::make_action(*$level.world, Events::GUI::LOOT_CLOSE));
|
||||
|
||||
$gui.init();
|
||||
update();
|
||||
}
|
||||
|
||||
void LootUI::update() {
|
||||
dbc::check(contents.size() < 16, "too many items in loot contents, must be < 16");
|
||||
for(int i = 0; i < 16; i++) {
|
||||
auto id = $gui.entity("item_", i);
|
||||
if($gui.has<guecs::Rectangle>(id)) {
|
||||
$gui.remove<guecs::Rectangle>(id);
|
||||
$gui.remove<guecs::Effect>(id);
|
||||
$gui.remove<guecs::Clickable>(id);
|
||||
$gui.remove<guecs::Sprite>(id);
|
||||
}
|
||||
}
|
||||
|
||||
for(size_t item_i = 0; item_i < contents.size(); item_i++) {
|
||||
auto id = $gui.entity("item_", int(item_i));
|
||||
$gui.set_init<guecs::Rectangle>(id, {THEME.PADDING,
|
||||
THEME.TRANSPARENT, THEME.LIGHT_MID });
|
||||
$gui.set_init<guecs::Effect>(id, {0.4f, "ui_shader"});
|
||||
$gui.set<guecs::Clickable>(id, {
|
||||
[=](auto, auto) { fmt::println("clicked button"); }
|
||||
});
|
||||
|
||||
auto item = contents.at(item_i);
|
||||
auto& sprite = $level.world->get<components::Sprite>(item);
|
||||
$gui.set_init<guecs::Sprite>(id, {sprite.name});
|
||||
}
|
||||
}
|
||||
|
||||
void LootUI::render(sf::RenderWindow& window) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue