std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> DesuraJSBinding::getGames() { auto im = getItemManager(); if (!im) return std::vector<gcRefPtr<UserCore::Item::ItemInfoI>>(); std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> gList; im->getGameList(gList); return gList; }
wxMenu* TBIGameMenu::createMenu(uint32 &lastMenuId) { gcMenu* menu = new gcMenu(); m_IdMapList.clear(); auto pItemManager = getItemManager(); if (!pItemManager) return menu; std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> gList; pItemManager->getGameList(gList); std::sort(gList.begin(), gList.end(), [](gcRefPtr<UserCore::Item::ItemInfoI> left, gcRefPtr<UserCore::Item::ItemInfoI> right){ return strcmp(left->getName(), right->getName()) <= 0; }); for (size_t x=0; x<gList.size(); x++) { auto item = gList[x]; if (!item) continue; if ((item->getStatus() & UserCore::Item::ItemInfoI::STATUS_DEVELOPER) && !(item->getStatus() & (UserCore::Item::ItemInfoI::STATUS_INSTALLING|UserCore::Item::ItemInfoI::STATUS_DOWNLOADING|UserCore::Item::ItemInfoI::STATUS_UPDATING|UserCore::Item::ItemInfoI::STATUS_READY|UserCore::Item::ItemInfoI::STATUS_INSTALLED))) continue; wxMenuItem* menuItem = new gcMenuItem(menu, lastMenuId, item->getName()); menu->Append(menuItem); m_IdMapList[lastMenuId] = item->getId(); loadIcon(menuItem, item->getIcon()); lastMenuId++; } if (menu->GetMenuItemCount() == 0) { wxMenuItem* noItems = new gcMenuItem(menu, lastMenuId, Managers::GetString(L"#TB_NOITEMS")); lastMenuId++; menu->Append(noItems); noItems->Enable(false); } return menu; }
wxMenu* TBIModMenu::createMenu(uint32 &lastMenuId) { gcMenu* menu = new gcMenu(); m_IdMapList.clear(); auto pItemManager = getItemManager(); if (!pItemManager) return menu; std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> gList; pItemManager->getGameList(gList); std::sort(gList.begin(), gList.end(), [](gcRefPtr<UserCore::Item::ItemInfoI> left, gcRefPtr<UserCore::Item::ItemInfoI> right){ return strcmp(left->getName(), right->getName()) <= 0; }); for (size_t x=0; x<gList.size(); x++) { auto game = gList[x]; std::vector<gcRefPtr<UserCore::Item::ItemInfoI>> mList; pItemManager->getModList(game->getId(), mList); if (mList.size() == 0) continue; gcMenu* gameMenu = new gcMenu(); std::sort(mList.begin(), mList.end(), [](gcRefPtr<UserCore::Item::ItemInfoI> left, gcRefPtr<UserCore::Item::ItemInfoI> right){ return strcmp(left->getName(), right->getName()) <= 0; }); for (size_t y=0; y<mList.size(); y++) { auto mod = mList[y]; wxMenuItem* menuItem = new gcMenuItem(gameMenu, lastMenuId, mod->getName()); gameMenu->Append(menuItem); m_IdMapList[lastMenuId] = mod->getId(); loadIcon(menuItem, mod->getIcon()); lastMenuId++; } wxMenuItem* gameItem = new gcMenuItem(gameMenu, wxID_ANY, game->getName(), "", wxITEM_NORMAL, gameMenu); loadIcon(gameItem, game->getIcon()); menu->Append(gameItem); } if (menu->GetMenuItemCount() == 0) { wxMenuItem* noItems = new gcMenuItem(menu, lastMenuId, Managers::GetString(L"#TB_NOITEMS")); lastMenuId++; menu->Append(noItems); noItems->Enable(false); } return menu; }