void CvGlobals::swapMaps()
{
int i, iLoop;
CvUnit* pLoopUnit;
CvCity* pLoopCity;
CvPlayerAI& kPlayer = GET_PLAYER((PlayerTypes)0); // just because I have to initialize it...
GC.setMapSwapping(true);
for (i = 0; i < MAX_PLAYERS; i++)
{
kPlayer = GET_PLAYER((PlayerTypes)i);
if (kPlayer.isAlive())
{
for (pLoopCity = kPlayer.firstCity(&iLoop); pLoopCity != NULL; pLoopCity = kPlayer.nextCity(&iLoop))
{
pLoopCity->removeEntity();
pLoopCity->destroyEntity();
}
for (pLoopUnit = kPlayer.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = kPlayer.nextUnit(&iLoop))
{
if (gDLL->getEntityIFace()->IsSelected(pLoopUnit->getEntity()))
{
gDLL->getInterfaceIFace()->selectUnit(pLoopUnit, true, true);
}
if (GC.IsGraphicsInitialized())
{
gDLL->getEntityIFace()->RemoveUnitFromBattle(pLoopUnit);
pLoopUnit->removeEntity();
}
pLoopUnit->destroyEntity();
}
kPlayer.swapInfo();
for (pLoopCity = kPlayer.firstCity(&iLoop); pLoopCity != NULL; pLoopCity = kPlayer.nextCity(&iLoop))
{
pLoopCity->removeEntity();
pLoopCity->destroyEntity();
}
for (pLoopUnit = kPlayer.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = kPlayer.nextUnit(&iLoop))
{
if (GC.IsGraphicsInitialized())
{
gDLL->getEntityIFace()->RemoveUnitFromBattle(pLoopUnit);
pLoopUnit->removeEntity();
}
pLoopUnit->destroyEntity();
}
}
}
for (i = 0; i < GC.getMap().numPlots(); i++)
{
GC.getMap().plotByIndex(i)->destroyGraphics();
}
CvMap* tempMap = m_map;
m_map = m_altMap;
m_altMap = tempMap;
GC.getMapINLINE().init();
for (i = 0; i < GC.getMapINLINE().numPlots(); i++)
{
GC.getMapINLINE().plotByIndex(i)->setTerrainType((TerrainTypes)GC.getInfoTypeForString("TERRAIN_GRASS"), false, false);
}
gDLL->getEngineIFace()->RebuildAllPlots();
GC.getMapINLINE().setupGraphical();
for (i = 0; i < MAX_PLAYERS; i++)
{
kPlayer = GET_PLAYER((PlayerTypes)i);
if (kPlayer.isAlive())
{
[COLOR="DimGray"]for (pLoopCity = kPlayer.firstCity(&iLoop); pLoopCity != NULL; pLoopCity = kPlayer.nextCity(&iLoop))
{
gDLL->getEntityIFace()->createCityEntity(pLoopCity);
pLoopCity->setupGraphical();
}[/COLOR]
for (pLoopUnit = kPlayer.firstUnit(&iLoop); pLoopUnit != NULL; pLoopUnit = kPlayer.nextUnit(&iLoop))
{
gDLL->getEntityIFace()->createUnitEntity(pLoopUnit);
pLoopUnit->setupGraphical();
}
}
}
}