| 203 | } |
| 204 | |
| 205 | std::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 | { |
nothing calls this directly
no test coverage detected