hud.open_permanent semantics update
This commit is contained in:
parent
d9dc974685
commit
33d14be71c
@ -441,7 +441,16 @@ void Hud::openInventory(glm::ivec3 block, UiDocument* doc, std::shared_ptr<Inven
|
|||||||
* @param doc element layout document
|
* @param doc element layout document
|
||||||
*/
|
*/
|
||||||
void Hud::openPermanent(UiDocument* doc) {
|
void Hud::openPermanent(UiDocument* doc) {
|
||||||
remove(doc->getRoot());
|
auto root = doc->getRoot();
|
||||||
|
remove(root);
|
||||||
|
|
||||||
|
auto invview = std::dynamic_pointer_cast<InventoryView>(root);
|
||||||
|
if (invview) {
|
||||||
|
auto level = frontend->getLevel();
|
||||||
|
auto player = level->player;
|
||||||
|
auto inventory = player->getInventory();
|
||||||
|
invview->bind(inventory, frontend, interaction.get());
|
||||||
|
}
|
||||||
add(HudElement(hud_element_mode::permanent, doc, doc->getRoot(), false));
|
add(HudElement(hud_element_mode::permanent, doc, doc->getRoot(), false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -23,12 +23,16 @@ namespace scripting {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int l_hud_open_inventory(lua_State* L) {
|
int l_hud_open_inventory(lua_State* L) {
|
||||||
scripting::hud->openInventory();
|
if (!scripting::hud->isInventoryOpen()) {
|
||||||
|
scripting::hud->openInventory();
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int l_hud_close_inventory(lua_State* L) {
|
int l_hud_close_inventory(lua_State* L) {
|
||||||
scripting::hud->closeInventory();
|
if (scripting::hud->isInventoryOpen()) {
|
||||||
|
scripting::hud->closeInventory();
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,10 +81,6 @@ UiDocument* require_layout(lua_State* L, const char* name) {
|
|||||||
|
|
||||||
int l_hud_open_permanent(lua_State* L) {
|
int l_hud_open_permanent(lua_State* L) {
|
||||||
auto layout = require_layout(L, lua_tostring(L, 1));
|
auto layout = require_layout(L, lua_tostring(L, 1));
|
||||||
auto invview = std::dynamic_pointer_cast<InventoryView>(layout->getRoot());
|
|
||||||
if (invview) {
|
|
||||||
luaL_error(L, "layout must not contain 'inventory' element");
|
|
||||||
}
|
|
||||||
scripting::hud->openPermanent(layout);
|
scripting::hud->openPermanent(layout);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user