1
0
forked from 0ad/0ad
0ad/source/graphics/MapReader.h
Ykkrosh f45c44ca09 Rotated various things (terrain texture UVs, default light and camera angles) by 45 degrees.
Map XML: Store camera position. Stopped using DTDs (because they make it
too hard to change the XML structure without breaking all the old XML
files).
Game.h: Include fewer files, to make compilation sometimes faster.
World: Changed some things to not be singletons, since they were
(ab)used as CWorld members.

This was SVN commit r3670.
2006-03-21 20:55:45 +00:00

79 lines
1.9 KiB
C++
Executable File

#ifndef _MAPREADER_H
#define _MAPREADER_H
#include "MapIO.h"
#include "lib/res/handle.h"
#include "CStr.h"
#include "LightEnv.h"
#include "FileUnpacker.h"
class CObjectEntry;
class CTerrain;
class CUnitManager;
class CLightEnv;
class CCamera;
class CXMLReader;
class CMapReader : public CMapIO
{
friend class CXMLReader;
public:
// constructor
CMapReader();
// LoadMap: try to load the map from given file; reinitialise the scene to new data if successful
void LoadMap(const char* filename, CTerrain *pTerrain, CUnitManager *pUnitMan, CLightEnv *pLightEnv, CCamera *pCamera);
private:
// UnpackTerrain: unpack the terrain from the input stream
int UnpackTerrain();
// UnpackObjects: unpack world objects from the input stream
void UnpackObjects();
// UnpackObjects: unpack lighting parameters from the input stream
void UnpackLightEnv();
// UnpackMap: unpack the given data from the raw data stream into local variables
int UnpackMap();
// ApplyData: take all the input data, and rebuild the scene from it
int ApplyData();
// ReadXML: read some other data (entities, etc) in XML format
int ReadXML();
// clean up everything used during delayed load
int DelayLoadFinished();
// size of map
u32 m_MapSize;
// heightmap for map
std::vector<u16> m_Heightmap;
// list of terrain textures used by map
std::vector<Handle> m_TerrainTextures;
// tile descriptions for each tile
std::vector<STileDesc> m_Tiles;
// list of object types used by map
std::vector<CStr> m_ObjectTypes;
// descriptions for each objects
std::vector<SObjectDesc> m_Objects;
// lightenv stored in file
CLightEnv m_LightEnv;
// state latched by LoadMap and held until DelayedLoadFinished
CFileUnpacker unpacker;
CTerrain* pTerrain;
CUnitManager* pUnitMan;
CLightEnv* pLightEnv;
CCamera* pCamera;
CStr filename_xml;
// UnpackTerrain generator state
u32 cur_terrain_tex;
u32 num_terrain_tex;
CXMLReader* xml_reader;
};
#endif