#include "Crawler.h" #include "DEFINES.h" #include "olcPixelGameEngine.h" #include "safemap.h" #include "MenuIconButton.h" #include "MenuLabel.h" INCLUDE_GFX typedef Attribute A; const Menu Menu::InitializeTestSubMenu(){ Menu testSubMenu({30,30},{24*4,24*5}); MenuFunc goBack=[](MenuFuncData data){ data.menu.stack.pop_back(); }; testSubMenu.AddComponent("BACK",new MenuComponent(TEST_2,{{24*1,24*1},{24*2,24*1}},"Go Back",goBack)); int index=0; for(auto&theme:Menu::themes){ if(theme.displayName==Menu::themeSelection){ testSubMenu.I(A::INDEXED_THEME)=index; break; } index++; } MenuFunc themePrev=[](MenuFuncData data){ bool found=false; data.menu.I(A::INDEXED_THEME)--; if(data.menu.I(A::INDEXED_THEME)<0){ data.menu.I(A::INDEXED_THEME)=themes.size()-1; } int index=0; for(auto&theme:Menu::themes){ if(index==data.menu.I(A::INDEXED_THEME)){ Menu::themeSelection=theme.displayName; ((MenuLabel*)(data.menu.components["THEME_DISPLAY"]))->SetLabel("Theme\n"+Menu::themes[themeSelection].GetThemeName()); break; } index++; } }; testSubMenu.AddComponent("PREV_THEME",new MenuComponent(TEST_2,{{24*-0.5,24*3},{24*1,24*1}},"<",themePrev)); testSubMenu.AddComponent("THEME_DISPLAY",new MenuLabel(TEST_2,{{24*0.5,24*3},{24*3,24*1}},"Theme\n"+Menu::themes[themeSelection].GetThemeName())); MenuFunc themeNext=[](MenuFuncData data){ data.menu.I(A::INDEXED_THEME)=(size_t(data.menu.I(A::INDEXED_THEME))+1)%themes.size(); int index=0; for(auto&theme:Menu::themes){ if(index==data.menu.I(A::INDEXED_THEME)){ Menu::themeSelection=theme.displayName; ((MenuLabel*)(data.menu.components["THEME_DISPLAY"]))->SetLabel("Theme\n"+Menu::themes[themeSelection].GetThemeName()); break; } index++; } }; testSubMenu.AddComponent("NEXT_THEME",new MenuComponent(TEST_2,{{24*3.5,24*3},{24*1,24*1}},">",themeNext)); return testSubMenu; }