LCOV - code coverage report
Current view: top level - source/graphics - MapReader.h (source / functions) Hit Total Coverage
Test: 0 A.D. test coverage report Lines: 0 1 0.0 %
Date: 2023-01-19 00:18:29 Functions: 0 2 0.0 %

          Line data    Source code
       1             : /* Copyright (C) 2022 Wildfire Games.
       2             :  * This file is part of 0 A.D.
       3             :  *
       4             :  * 0 A.D. is free software: you can redistribute it and/or modify
       5             :  * it under the terms of the GNU General Public License as published by
       6             :  * the Free Software Foundation, either version 2 of the License, or
       7             :  * (at your option) any later version.
       8             :  *
       9             :  * 0 A.D. is distributed in the hope that it will be useful,
      10             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12             :  * GNU General Public License for more details.
      13             :  *
      14             :  * You should have received a copy of the GNU General Public License
      15             :  * along with 0 A.D.  If not, see <http://www.gnu.org/licenses/>.
      16             :  */
      17             : 
      18             : #ifndef INCLUDED_MAPREADER
      19             : #define INCLUDED_MAPREADER
      20             : 
      21             : #include "MapIO.h"
      22             : 
      23             : #include "graphics/LightEnv.h"
      24             : #include "ps/CStr.h"
      25             : #include "ps/FileIo.h"
      26             : #include "scriptinterface/ScriptTypes.h"
      27             : #include "simulation2/system/Entity.h"
      28             : 
      29             : class CTerrain;
      30             : class WaterManager;
      31             : class SkyManager;
      32             : class CLightEnv;
      33             : class CCinemaManager;
      34             : class CPostprocManager;
      35             : class CTriggerManager;
      36             : class CSimulation2;
      37             : class CSimContext;
      38             : class CTerrainTextureEntry;
      39             : class CGameView;
      40             : class CXMLReader;
      41             : class CMapGenerator;
      42             : class ScriptContext;
      43             : class ScriptInterface;
      44             : 
      45             : class CMapReader : public CMapIO
      46             : {
      47             :     friend class CXMLReader;
      48             : 
      49             : public:
      50             :     // constructor
      51             :     CMapReader();
      52             :     ~CMapReader();
      53             : 
      54             :     // LoadMap: try to load the map from given file; reinitialise the scene to new data if successful
      55             :     void LoadMap(const VfsPath& pathname, const ScriptContext& cx, JS::HandleValue settings, CTerrain*, WaterManager*, SkyManager*, CLightEnv*, CGameView*,
      56             :         CCinemaManager*, CTriggerManager*, CPostprocManager* pPostproc, CSimulation2*, const CSimContext*,
      57             :             int playerID, bool skipEntities);
      58             : 
      59             :     void LoadRandomMap(const CStrW& scriptFile, const ScriptContext& cx, JS::HandleValue settings, CTerrain*, WaterManager*, SkyManager*, CLightEnv*, CGameView*, CCinemaManager*, CTriggerManager*, CPostprocManager* pPostproc_, CSimulation2*, int playerID);
      60             : 
      61             : private:
      62             :     // Load script settings for use by scripts
      63             :     int LoadScriptSettings();
      64             : 
      65             :     // load player settings only
      66             :     int LoadPlayerSettings();
      67             : 
      68             :     // load map settings only
      69             :     int LoadMapSettings();
      70             : 
      71             :     // UnpackTerrain: unpack the terrain from the input stream
      72             :     int UnpackTerrain();
      73             :     // UnpackCinema: unpack the cinematic tracks from the input stream
      74             :     int UnpackCinema();
      75             : 
      76             :     // UnpackMap: unpack the given data from the raw data stream into local variables
      77             :     int UnpackMap();
      78             : 
      79             :     // ApplyData: take all the input data, and rebuild the scene from it
      80             :     int ApplyData();
      81             :     int ApplyTerrainData();
      82             : 
      83             :     // read some misc data from the XML file
      84             :     int ReadXML();
      85             : 
      86             :     // read entity data from the XML file
      87             :     int ReadXMLEntities();
      88             : 
      89             :     // Copy random map settings over to sim
      90             :     int LoadRMSettings();
      91             : 
      92             :     // Generate random map
      93             :     int GenerateMap();
      94             : 
      95             :     // Parse script data into terrain
      96             :     int ParseTerrain();
      97             : 
      98             :     // Parse script data into entities
      99             :     int ParseEntities();
     100             : 
     101             :     // Parse script data into environment
     102             :     int ParseEnvironment();
     103             : 
     104             :     // Parse script data into camera
     105             :     int ParseCamera();
     106             : 
     107             : 
     108             :     // size of map
     109             :     ssize_t m_PatchesPerSide;
     110             :     // heightmap for map
     111             :     std::vector<u16> m_Heightmap;
     112             :     // list of terrain textures used by map
     113             :     std::vector<CTerrainTextureEntry*> m_TerrainTextures;
     114             :     // tile descriptions for each tile
     115             :     std::vector<STileDesc> m_Tiles;
     116             :     // lightenv stored in file
     117             :     CLightEnv m_LightEnv;
     118             :     // startup script
     119             :     CStrW m_Script;
     120             : 
     121             :     // random map data
     122             :     CStrW m_ScriptFile;
     123             :     JS::PersistentRootedValue m_ScriptSettings;
     124             :     JS::PersistentRootedValue m_MapData;
     125             : 
     126             :     CMapGenerator* m_MapGen;
     127             : 
     128             :     CFileUnpacker unpacker;
     129             :     CTerrain* pTerrain;
     130             :     WaterManager* pWaterMan;
     131             :     SkyManager* pSkyMan;
     132             :     CPostprocManager* pPostproc;
     133             :     CLightEnv* pLightEnv;
     134             :     CGameView* pGameView;
     135             :     CCinemaManager* pCinema;
     136             :     CTriggerManager* pTrigMan;
     137             :     CSimulation2* pSimulation2;
     138             :     const CSimContext* pSimContext;
     139             :     int m_PlayerID;
     140             :     bool m_SkipEntities;
     141             :     VfsPath filename_xml;
     142             :     bool only_xml;
     143             :     u32 file_format_version;
     144             :     entity_id_t m_StartingCameraTarget;
     145             :     CVector3D m_StartingCamera;
     146             : 
     147             :     // UnpackTerrain generator state
     148             :     size_t cur_terrain_tex;
     149             :     size_t num_terrain_tex;
     150             : 
     151             :     CXMLReader* xml_reader;
     152             : };
     153             : 
     154             : /**
     155             :  * A restricted map reader that returns various summary information
     156             :  * for use by scripts (particularly the GUI).
     157             :  */
     158           0 : class CMapSummaryReader
     159             : {
     160             : public:
     161             :     /**
     162             :      * Try to load a map file.
     163             :      * @param pathname Path to .pmp or .xml file
     164             :      */
     165             :     PSRETURN LoadMap(const VfsPath& pathname);
     166             : 
     167             :     /**
     168             :      * Returns a value of the form:
     169             :      * @code
     170             :      * {
     171             :      *   "settings": { ... contents of the map's <ScriptSettings> ... }
     172             :      * }
     173             :      * @endcode
     174             :      */
     175             :     void GetMapSettings(const ScriptInterface& scriptInterface, JS::MutableHandleValue);
     176             : 
     177             : private:
     178             :     CStr m_ScriptSettings;
     179             : };
     180             : 
     181             : #endif

Generated by: LCOV version 1.13