#ifndef MAPHANDLER_H #define MAPHANDLER_H #include "hch\CAmbarCendamo.h" #include "hch\CSemiDefHandler.h" #include "CGameInfo.h" #include "hch\CDefHandler.h" #include #include "hch\CObjectHandler.h" const int Woff = 4; //width of map's frame const int Hoff = 4; struct TerrainTile2 { int3 pos; //this tile's position EterrainType terType; //type of terrain tile Eroad malle; //type of road unsigned char roaddir; //type of road tile Eriver nuine; //type of river unsigned char rivdir; //type of river tile std::vector terbitmap; //frames of terrain animation std::vector rivbitmap; //frames of river animation std::vector roadbitmap; //frames of road animation bool visitable; //false = not visitable; true = visitable bool blocked; //false = free; true = blocked; std::vector < std::pair > objects; //poiters to objects being on this tile with rects to be easier to blit this tile on screen std::vector visitableObjects; //pointers to objects hero is visiting being on this tile }; //pathfinder // map iDTerenu=>koszt_pola // map IDdrogi=>koszt_drogi template class PseudoV { public: int offset; std::vector inver; inline T & operator[](int n) { return inver[n+offset]; } void resize(int rest,int Offset) { inver.resize(Offset*2+rest); offset=Offset; } int size() { return inver.size(); } }; class CMapHandler { public: PseudoV< PseudoV< PseudoV > > ttiles; int3 sizes; CAmbarCendamo * reader; CDefHandler * fullHide; CDefHandler * partialHide; std::vector< std::vector > visibility; //true means that pointed place is visible std::vector< std::vector > undVisibility; //true means that pointed place is visible std::vector roadDefs; std::vector staticRiverDefs; char & visAccess(int x, int y); char & undVisAccess(int x, int y); SDL_Surface mirrorImage(SDL_Surface *src); //what is this?? SDL_Surface * getVisBitmap(int x, int y, std::vector< std::vector > & visibility); int getCost(int3 & a, int3 & b, const CHeroInstance * hero); std::vector< std::string > getObjDescriptions(int3 pos); //returns desriptions of objects blocking given position void init(); SDL_Surface * terrainRect(int x, int y, int dx, int dy, int level=0, unsigned char anim=0); SDL_Surface * terrBitmap(int x, int y); SDL_Surface * undTerrBitmap(int x, int y); }; #endif //MAPHANDLER_H