1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

map editor multi level support

This commit is contained in:
Laserlicht
2025-08-02 02:15:05 +02:00
parent ecfe09f6b1
commit 4552c1f562
7 changed files with 115 additions and 58 deletions

View File

@@ -45,7 +45,7 @@ MapController::MapController(QObject * parent)
MapController::MapController(MainWindow * m): main(m)
{
for(int i : {0, 1})
for(int i = 0; i < MAX_LEVELS; i++)
{
_scenes[i].reset(new MapScene(i));
_miniscenes[i].reset(new MinimapScene(i));
@@ -56,12 +56,12 @@ MapController::MapController(MainWindow * m): main(m)
void MapController::connectScenes()
{
for (int level = 0; level <= 1; level++)
for(int i = 0; i < MAX_LEVELS; i++)
{
//selections for both layers will be handled separately
QObject::connect(_scenes[level].get(), &MapScene::selected, [this, level](bool anythingSelected)
QObject::connect(_scenes[i].get(), &MapScene::selected, [this, i](bool anythingSelected)
{
main->onSelectionMade(level, anythingSelected);
main->onSelectionMade(i, anythingSelected);
});
}
}
@@ -223,7 +223,7 @@ void MapController::setMap(std::unique_ptr<CMap> cmap)
repairMap();
for(int i : {0, 1})
for(int i = 0; i < _map->mapLevels; i++)
{
_scenes[i].reset(new MapScene(i));
_miniscenes[i].reset(new MinimapScene(i));
@@ -258,12 +258,10 @@ void MapController::initObstaclePainters(CMap * map)
void MapController::sceneForceUpdate()
{
_scenes[0]->updateViews();
_miniscenes[0]->updateViews();
if(_map->mapLevels == 2) // TODO: multilevel support
for(int i = 0; i < _map->mapLevels; i++)
{
_scenes[1]->updateViews();
_miniscenes[1]->updateViews();
_scenes[i]->updateViews();
_miniscenes[i]->updateViews();
}
}
@@ -278,7 +276,7 @@ void MapController::resetMapHandler()
if(!_mapHandler)
_mapHandler.reset(new MapHandler());
_mapHandler->reset(map());
for(int i : {0, 1})
for(int i = 0; i < MAX_LEVELS; i++)
{
_scenes[i]->initialize(*this);
_miniscenes[i]->initialize(*this);