Skip to content
Permalink
Browse files

Make elem.free rebuild menus (fixes #649)

Also make sure removed elements don't stay selected.
  • Loading branch information...
LBPHacker committed Jun 11, 2019
1 parent 75e6ece commit 8897c6daea2f724fffc0db6bd5f9a77914cfa584
Showing with 28 additions and 26 deletions.
  1. +26 −25 src/gui/game/GameModel.cpp
  2. +1 −1 src/gui/game/GameModel.h
  3. +1 −0 src/lua/LuaScriptInterface.cpp
@@ -353,21 +353,20 @@ void GameModel::BuildMenus()
decoToolset[2] = GetToolFromIdentifier("DEFAULT_UI_SAMPLE");
decoToolset[3] = GetToolFromIdentifier("DEFAULT_PT_NONE");

//Set default tools
regularToolset[0] = GetToolFromIdentifier("DEFAULT_PT_DUST");
regularToolset[1] = GetToolFromIdentifier("DEFAULT_PT_NONE");
regularToolset[2] = GetToolFromIdentifier("DEFAULT_UI_SAMPLE");
regularToolset[3] = GetToolFromIdentifier("DEFAULT_PT_NONE");

regularToolset[0] = GetToolFromIdentifier(activeToolIdentifiers[0]);
regularToolset[1] = GetToolFromIdentifier(activeToolIdentifiers[1]);
regularToolset[2] = GetToolFromIdentifier(activeToolIdentifiers[2]);
regularToolset[3] = GetToolFromIdentifier(activeToolIdentifiers[3]);

if(activeToolIdentifiers[0].length())
regularToolset[0] = GetToolFromIdentifier(activeToolIdentifiers[0]);
if(activeToolIdentifiers[1].length())
regularToolset[1] = GetToolFromIdentifier(activeToolIdentifiers[1]);
if(activeToolIdentifiers[2].length())
regularToolset[2] = GetToolFromIdentifier(activeToolIdentifiers[2]);
if(activeToolIdentifiers[3].length())
regularToolset[3] = GetToolFromIdentifier(activeToolIdentifiers[3]);
//Set default tools
if (!regularToolset[0])
regularToolset[0] = GetToolFromIdentifier("DEFAULT_PT_DUST");
if (!regularToolset[1])
regularToolset[1] = GetToolFromIdentifier("DEFAULT_PT_NONE");
if (!regularToolset[2])
regularToolset[2] = GetToolFromIdentifier("DEFAULT_UI_SAMPLE");
if (!regularToolset[3])
regularToolset[3] = GetToolFromIdentifier("DEFAULT_PT_NONE");

lastTool = activeTools[0];

@@ -412,24 +411,26 @@ void GameModel::BuildFavoritesMenu()
notifyLastToolChanged();
}

Tool * GameModel::GetToolFromIdentifier(ByteString identifier)
Tool *GameModel::GetToolFromIdentifier(ByteString const &identifier)
{
for (std::vector<Menu*>::iterator iter = menuList.begin(), end = menuList.end(); iter != end; ++iter)
for (auto *menu : menuList)
{
std::vector<Tool*> menuTools = (*iter)->GetToolList();
for (std::vector<Tool*>::iterator titer = menuTools.begin(), tend = menuTools.end(); titer != tend; ++titer)
for (auto *tool : menu->GetToolList())
{
if (identifier == (*titer)->GetIdentifier())
return *titer;
if (identifier == tool->GetIdentifier())
{
return tool;
}
}
}
for (std::vector<Tool*>::iterator iter = extraElementTools.begin(), end = extraElementTools.end(); iter != end; ++iter)
for (auto *extra : extraElementTools)
{
if (identifier == (*iter)->GetIdentifier())
return *iter;
if (identifier == extra->GetIdentifier())
{
return extra;
}
}

return NULL;
return nullptr;
}

void GameModel::SetEdgeMode(int edgeMode)
@@ -147,7 +147,7 @@ class GameModel
float GetToolStrength();
Tool * GetLastTool();
void SetLastTool(Tool * newTool);
Tool * GetToolFromIdentifier(ByteString identifier);
Tool *GetToolFromIdentifier(ByteString const &identifier);
Tool * GetElementTool(int elementID);
std::vector<Tool*> GetToolList();
std::vector<Tool*> GetUnlistedTools();
@@ -2876,6 +2876,7 @@ int LuaScriptInterface::elements_free(lua_State * l)
}

luacon_sim->elements[id].Enabled = false;
luacon_model->BuildMenus();

lua_getglobal(l, "elements");
lua_pushnil(l);

0 comments on commit 8897c6d

Please sign in to comment.
You can’t perform that action at this time.