QString Items::getTilesetToolTip(int itemType, unsigned long ItemID, QGraphicsScene *scene) { LvlScene *scene_lvl = dynamic_cast<LvlScene *>(scene); WldScene *scene_wld = dynamic_cast<WldScene *>(scene); dataconfigs &config = MainWinConnect::pMainWin->configs; switch(itemType) { case ItemTypes::LVL_Block: { PGE_DataArray<obj_block> *array = scene_lvl ? &scene_lvl->m_localConfigBlocks : &config.main_block; return makeToolTipForTileset("block", (*array)[ItemID].setup); } case ItemTypes::LVL_BGO: { PGE_DataArray<obj_bgo> *array = scene_lvl ? &scene_lvl->m_localConfigBGOs : &config.main_bgo; return makeToolTipForTileset("bgo", (*array)[ItemID].setup); } case ItemTypes::LVL_NPC: { PGE_DataArray<obj_npc> *array = scene_lvl ? &scene_lvl->m_localConfigNPCs : &config.main_npc; return makeToolTipForTileset("npc", (*array)[ItemID].setup); } case ItemTypes::WLD_Tile: { PGE_DataArray<obj_w_tile> *array = scene_wld ? &scene_wld->m_localConfigTerrain : &config.main_wtiles; return makeToolTipSimple("Terrain tile", (*array)[ItemID].setup); } case ItemTypes::WLD_Scenery: { PGE_DataArray<obj_w_scenery> *array = scene_wld ? &scene_wld->m_localConfigScenery : &config.main_wscene; return makeToolTipSimple("Scenery", (*array)[ItemID].setup); } case ItemTypes::WLD_Path: { PGE_DataArray<obj_w_path> *array = scene_wld ? &scene_wld->m_localConfigPaths : &config.main_wpaths; return makeToolTipSimple("Path cell", (*array)[ItemID].setup); } case ItemTypes::WLD_Level: { PGE_DataArray<obj_w_level> *array = scene_wld ? &scene_wld->m_localConfigLevels : &config.main_wlevels; return makeToolTipSimple("Level entry point", (*array)[ItemID].setup); } default: break; } return ""; }
void WorldItemBox::initItemLists() { if(mw()->activeChildWindow() != MainWindow::WND_World) return; WorldEdit *edit = mw()->activeWldEditWin(); if((edit==NULL) || (!edit->sceneCreated)) return; WldScene* scene = edit->scene; if(!scene) return; mw()->ui->menuNew->setEnabled(false); LogDebugQD("WorldTools -> Clear current"); m_terrainModel->clear(); m_sceneryModel->clear(); m_pathsModel->clear(); m_levelsModel->clear(); m_musicboxModel->clear(); LogDebugQD("WorldTools -> Declare new"); LogDebug("LevelTools -> Fill list of Terrain tiles"); { QSet<uint64_t> tilesCustomId; for(int i = 0; i < scene->m_customTerrain.size(); i++) { obj_w_tile &tiles = *scene->m_customTerrain[i]; tilesCustomId.insert(tiles.setup.id); } m_terrainModel->addElementsBegin(); m_terrainModel->setShowLabels(false); PGE_DataArray<obj_w_tile> *array = &scene->m_localConfigTerrain; { uint32_t rows = 0; uint32_t cols = 0; for(int i = 1; i < array->size(); i++) { obj_w_tile &tileItem = (*array)[i]; if(rows < tileItem.setup.row) rows = tileItem.setup.row; if(cols < tileItem.setup.col) cols = tileItem.setup.col; } m_terrainModel->setTableMode(true, cols + 1, rows + 1); } for(int i = 1; i < array->size(); i++) { obj_w_tile &tileItem = (*array)[i]; ItemBoxListModel::Element e; Items::getItemGFX(&tileItem, e.pixmap, false, QSize(32, 32)); e.name = tileItem.setup.name.isEmpty() ? QString("tile-%1").arg(tileItem.setup.id) : tileItem.setup.name; e.description = makeToolTipSimple("Terrain tile", tileItem.setup); e.elementId = tileItem.setup.id; e.isCustom = tilesCustomId.contains(tileItem.setup.id); e.isValid = true; m_terrainModel->addElementCell(tileItem.setup.col, tileItem.setup.row, e, tileItem.setup.group, tileItem.setup.category); } m_terrainModel->addElementsEnd(); } LogDebug("LevelTools -> Fill list of Sceneries"); { QSet<uint64_t> sceneryCustomId; for(int i = 0; i < scene->m_customSceneries.size(); i++) { obj_w_scenery &scenery = *scene->m_customSceneries[i]; sceneryCustomId.insert(scenery.setup.id); } m_sceneryModel->addElementsBegin(); m_sceneryModel->setShowLabels(false); PGE_DataArray<obj_w_scenery> *array = &scene->m_localConfigScenery; for(int i = 1; i < array->size(); i++) { obj_w_scenery &sceneryItem = (*array)[i]; ItemBoxListModel::Element e; Items::getItemGFX(&sceneryItem, e.pixmap, false, QSize(32, 32)); e.name = sceneryItem.setup.name.isEmpty() ? QString("scene-%1").arg(sceneryItem.setup.id) : sceneryItem.setup.name; e.description = makeToolTipSimple("Scenery", sceneryItem.setup); e.elementId = sceneryItem.setup.id; e.isCustom = sceneryCustomId.contains(sceneryItem.setup.id); e.isValid = true; m_sceneryModel->addElement(e, sceneryItem.setup.group, sceneryItem.setup.category); } m_sceneryModel->addElementsEnd(); } LogDebug("LevelTools -> Fill list of Path cells"); { QSet<uint64_t> pathCustomId; for(int i = 0; i < scene->m_customPaths.size(); i++) { obj_w_path &paths = *scene->m_customPaths[i]; pathCustomId.insert(paths.setup.id); } m_pathsModel->addElementsBegin(); m_pathsModel->setShowLabels(false); PGE_DataArray<obj_w_path> *array = &scene->m_localConfigPaths; { uint32_t rows = 0; uint32_t cols = 0; for(int i = 1; i < array->size(); i++) { obj_w_path &pathItem = (*array)[i]; if(rows < pathItem.setup.row) rows = pathItem.setup.row; if(cols < pathItem.setup.col) cols = pathItem.setup.col; } m_pathsModel->setTableMode(true, cols + 1, rows + 1); } for(int i = 1; i < array->size(); i++) { obj_w_path &pathItem = (*array)[i]; ItemBoxListModel::Element e; Items::getItemGFX(&pathItem, e.pixmap, false, QSize(32, 32)); e.name = pathItem.setup.name.isEmpty() ? QString("path-%1").arg(pathItem.setup.id) : pathItem.setup.name; e.description = makeToolTipSimple("Path cell", pathItem.setup); e.elementId = pathItem.setup.id; e.isCustom = pathCustomId.contains(pathItem.setup.id); e.isValid = true; m_pathsModel->addElementCell(pathItem.setup.col, pathItem.setup.row, e, pathItem.setup.group, pathItem.setup.category); } m_pathsModel->addElementsEnd(); } LogDebug("LevelTools -> Fill list of Level cells"); { QSet<uint64_t> levelCustomId; for(int i = 0; i < scene->m_customLevels.size(); i++) { obj_w_scenery &scenery = *scene->m_customLevels[i]; levelCustomId.insert(scenery.setup.id); } m_levelsModel->addElementsBegin(); m_levelsModel->setShowLabels(false); PGE_DataArray<obj_w_level> *array = &scene->m_localConfigLevels; for(int i = 0; i < array->size(); i++) { obj_w_level &levelItem = (*array)[i]; ItemBoxListModel::Element e; Items::getItemGFX(&levelItem, e.pixmap, false, QSize(32, 32)); e.name = levelItem.setup.name.isEmpty() ? QString("level-%1").arg(levelItem.setup.id) : levelItem.setup.name; e.description = makeToolTipSimple("Level entry point", levelItem.setup); e.elementId = levelItem.setup.id; e.isCustom = levelCustomId.contains(levelItem.setup.id); e.isValid = true; m_levelsModel->addElement(e, levelItem.setup.group, levelItem.setup.category); } m_levelsModel->addElementsEnd(); } LogDebug("LevelTools -> Fill list of Music Boxes"); { m_musicboxModel->addElementsBegin(); for(int i = 1; i < mw()->configs.main_music_wld.size(); i++) { obj_music &musicItem = mw()->configs.main_music_wld[i]; ItemBoxListModel::Element e; e.pixmap = QPixmap(":/images/playmusic.png"); e.name = musicItem.name.isEmpty() ? QString("musicbox-%1").arg(musicItem.id) : musicItem.name; e.description = QString("ID: %1").arg(musicItem.id); e.elementId = musicItem.id; e.isCustom = false; e.isValid = true; m_musicboxModel->addElement(e); } m_musicboxModel->addElementsEnd(); } mw()->ui->menuNew->setEnabled(true); LogDebugQD("WorldTools -> done"); }