MCPcopy Create free account
hub / github.com/REGoth-project/REGoth / initializeItems

Method initializeItems

src/ui/Menu.cpp:205–272  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

203}
204
205std::map<Daedalus::GameState::MenuItemHandle, UI::MenuItem*> UI::Menu::initializeItems()
206{
207 Daedalus::GEngineClasses::C_Menu& menu = getScriptData();
208 std::vector<Daedalus::GameState::MenuItemHandle> items;
209
210 for (int i = 0; i < Daedalus::GEngineClasses::MenuConstants::MAX_ITEMS; i++)
211 {
212 if (!menu.items[i].empty())
213 {
214 items.push_back(m_pVM->getGameState().createMenuItem());
215
216 LogInfo() << "Initializing item: " << menu.items[i];
217 m_pVM->initializeInstance(ZMemory::toBigHandle(items.back()),
218 m_pVM->getDATFile().getSymbolIndexByName(menu.items[i]),
219 Daedalus::IC_MenuItem);
220 }
221 }
222
223 // Create actual views
224 std::map<Daedalus::GameState::MenuItemHandle, MenuItem*> outMap;
225 for (Daedalus::GameState::MenuItemHandle& h : items)
226 {
227 Daedalus::GEngineClasses::C_Menu_Item& itemData = getItemScriptData(h);
228
229 MenuItem* m = nullptr;
230 switch (itemData.type)
231 {
232 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_UNDEF:
233 break;
234 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_INPUT:
235 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_TEXT:
236 if ((itemData.flags & Daedalus::GEngineClasses::C_Menu_Item::EFlags::IT_MULTILINE) &&
237 !(itemData.flags & Daedalus::GEngineClasses::C_Menu_Item::EFlags::IT_SELECTABLE))
238 {
239 m = new MenuItemTypes::MenuItemScrollableText(m_Engine, *this, h);
240 }
241 else
242 {
243 m = new MenuItemTypes::MenuItemText(m_Engine, *this, h);
244 }
245 break;
246 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_SLIDER:
247 break;
248 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_CURSOR:
249 break;
250 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_CHOICEBOX:
251 break;
252 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_BUTTON:
253 break;
254 case Daedalus::GEngineClasses::C_Menu_Item::MENU_ITEM_LISTBOX:
255 m = new MenuItemTypes::MenuItemListbox(m_Engine, *this, h);
256 break;
257 default:
258 LogWarn() << "Invalid item type: " << itemData.type;
259 }
260
261 if (m)
262 {

Callers

nothing calls this directly

Calls 6

push_backMethod · 0.80
initializeInstanceMethod · 0.80
backMethod · 0.80
getSymbolIndexByNameMethod · 0.80
isSelectableMethod · 0.80
emptyMethod · 0.45

Tested by

no test coverage detected