Changeset View
Changeset View
Standalone View
Standalone View
source/graphics/MapWriter.cpp
Show All 21 Lines | |||||
#include "GameView.h" | #include "GameView.h" | ||||
#include "LightEnv.h" | #include "LightEnv.h" | ||||
#include "MapReader.h" | #include "MapReader.h" | ||||
#include "MapWriter.h" | #include "MapWriter.h" | ||||
#include "Patch.h" | #include "Patch.h" | ||||
#include "Terrain.h" | #include "Terrain.h" | ||||
#include "TerrainTextureEntry.h" | #include "TerrainTextureEntry.h" | ||||
#include "TerrainTextureManager.h" | #include "TerrainTextureManager.h" | ||||
#include "WaterManager.h" | |||||
#include "maths/MathUtil.h" | #include "maths/MathUtil.h" | ||||
#include "maths/NUSpline.h" | #include "maths/NUSpline.h" | ||||
#include "ps/CLogger.h" | #include "ps/CLogger.h" | ||||
#include "ps/Loader.h" | #include "ps/Loader.h" | ||||
#include "ps/Filesystem.h" | #include "ps/Filesystem.h" | ||||
#include "ps/XML/XMLWriter.h" | #include "ps/XML/XMLWriter.h" | ||||
#include "renderer/PostprocManager.h" | #include "renderer/PostprocManager.h" | ||||
#include "renderer/SkyManager.h" | #include "renderer/SkyManager.h" | ||||
#include "renderer/WaterManager.h" | |||||
#include "simulation2/Simulation2.h" | #include "simulation2/Simulation2.h" | ||||
#include "simulation2/components/ICmpCinemaManager.h" | #include "simulation2/components/ICmpCinemaManager.h" | ||||
#include "simulation2/components/ICmpGarrisonHolder.h" | #include "simulation2/components/ICmpGarrisonHolder.h" | ||||
#include "simulation2/components/ICmpObstruction.h" | #include "simulation2/components/ICmpObstruction.h" | ||||
#include "simulation2/components/ICmpOwnership.h" | #include "simulation2/components/ICmpOwnership.h" | ||||
#include "simulation2/components/ICmpPosition.h" | #include "simulation2/components/ICmpPosition.h" | ||||
#include "simulation2/components/ICmpTemplateManager.h" | #include "simulation2/components/ICmpTemplateManager.h" | ||||
#include "simulation2/components/ICmpTurretHolder.h" | #include "simulation2/components/ICmpTurretHolder.h" | ||||
#include "simulation2/components/ICmpVisual.h" | #include "simulation2/components/ICmpVisual.h" | ||||
#include "simulation2/components/ICmpWaterManager.h" | #include "simulation2/components/ICmpWaterManager.h" | ||||
/////////////////////////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
// CMapWriter constructor: nothing to do at the minute | // CMapWriter constructor: nothing to do at the minute | ||||
CMapWriter::CMapWriter() | CMapWriter::CMapWriter() | ||||
{ | { | ||||
} | } | ||||
/////////////////////////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////////////////////////// | ||||
// SaveMap: try to save the current map to the given file | // SaveMap: try to save the current map to the given file | ||||
void CMapWriter::SaveMap(const VfsPath& pathname, CTerrain* pTerrain, | void CMapWriter::SaveMap(const VfsPath& pathname, CTerrain* pTerrain, | ||||
WaterManager* pWaterMan, SkyManager* pSkyMan, | const WaterManager* pWaterMan, SkyManager* pSkyMan, | ||||
CLightEnv* pLightEnv, CCamera* pCamera, CCinemaManager* UNUSED(pCinema), | CLightEnv* pLightEnv, CCamera* pCamera, CCinemaManager* UNUSED(pCinema), | ||||
CPostprocManager* pPostproc, | CPostprocManager* pPostproc, | ||||
CSimulation2* pSimulation2) | CSimulation2* pSimulation2) | ||||
{ | { | ||||
CFilePacker packer(FILE_VERSION, "PSMP"); | CFilePacker packer(FILE_VERSION, "PSMP"); | ||||
// build necessary data | // build necessary data | ||||
PackMap(packer, pTerrain); | PackMap(packer, pTerrain); | ||||
▲ Show 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | void CMapWriter::PackTerrain(CFilePacker& packer, CTerrain* pTerrain) | ||||
for (size_t i=0;i<numTextures;i++) | for (size_t i=0;i<numTextures;i++) | ||||
packer.PackString(terrainTextures[i]); | packer.PackString(terrainTextures[i]); | ||||
// pack tile data | // pack tile data | ||||
packer.PackRaw(&tiles[0],sizeof(STileDesc)*tiles.size()); | packer.PackRaw(&tiles[0],sizeof(STileDesc)*tiles.size()); | ||||
} | } | ||||
void CMapWriter::WriteXML(const VfsPath& filename, | void CMapWriter::WriteXML(const VfsPath& filename, | ||||
WaterManager* pWaterMan, SkyManager* pSkyMan, | const WaterManager* pWaterMan, SkyManager* pSkyMan, | ||||
CLightEnv* pLightEnv, CCamera* pCamera, | CLightEnv* pLightEnv, CCamera* pCamera, | ||||
CPostprocManager* pPostproc, | CPostprocManager* pPostproc, | ||||
CSimulation2* pSimulation2) | CSimulation2* pSimulation2) | ||||
{ | { | ||||
XMLWriter_File xmlMapFile; | XMLWriter_File xmlMapFile; | ||||
{ | { | ||||
XMLWriter_Element scenarioTag(xmlMapFile, "Scenario"); | XMLWriter_Element scenarioTag(xmlMapFile, "Scenario"); | ||||
scenarioTag.Attribute("version", static_cast<int>(FILE_VERSION)); | scenarioTag.Attribute("version", static_cast<int>(FILE_VERSION)); | ||||
▲ Show 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | if (!sim.GetStartupScript().empty()) | ||||
} | } | ||||
{ | { | ||||
XMLWriter_Element waterTag(xmlMapFile, "Water"); | XMLWriter_Element waterTag(xmlMapFile, "Water"); | ||||
{ | { | ||||
XMLWriter_Element waterBodyTag(xmlMapFile, "WaterBody"); | XMLWriter_Element waterBodyTag(xmlMapFile, "WaterBody"); | ||||
CmpPtr<ICmpWaterManager> cmpWaterManager(sim, SYSTEM_ENTITY); | CmpPtr<ICmpWaterManager> cmpWaterManager(sim, SYSTEM_ENTITY); | ||||
ENSURE(cmpWaterManager); | ENSURE(cmpWaterManager); | ||||
waterBodyTag.Setting("Type", pWaterMan->m_WaterType); | waterBodyTag.Setting("Type", pWaterMan->GetWaterType()); | ||||
{ | { | ||||
XMLWriter_Element colorTag(xmlMapFile, "Color"); | XMLWriter_Element colorTag(xmlMapFile, "Color"); | ||||
colorTag.Attribute("r", pWaterMan->m_WaterColor.r); | colorTag.Attribute("r", pWaterMan->m_WaterColor.r); | ||||
colorTag.Attribute("g", pWaterMan->m_WaterColor.g); | colorTag.Attribute("g", pWaterMan->m_WaterColor.g); | ||||
colorTag.Attribute("b", pWaterMan->m_WaterColor.b); | colorTag.Attribute("b", pWaterMan->m_WaterColor.b); | ||||
} | } | ||||
{ | { | ||||
XMLWriter_Element tintTag(xmlMapFile, "Tint"); | XMLWriter_Element tintTag(xmlMapFile, "Tint"); | ||||
▲ Show 20 Lines • Show All 248 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator