1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- /*
- * mapHandler.h, part of VCMI engine
- *
- * Authors: listed in file AUTHORS in main folder
- *
- * License: GNU General Public License v2.0 or later
- * Full text of license available in license.txt file, in main folder
- *
- */
- #pragma once
- #include "../gui/CIntObject.h"
- #include "../../lib/Rect.h"
- #include "../../lib/int3.h"
- #include "../../lib/spells/ViewSpellInt.h"
- #ifdef IN
- # undef IN
- #endif
- #ifdef OUT
- # undef OUT
- #endif
- VCMI_LIB_NAMESPACE_BEGIN
- class CGObjectInstance;
- class CGHeroInstance;
- class CMap;
- VCMI_LIB_NAMESPACE_END
- class IMapObjectObserver;
- class CMapHandler
- {
- const CMap * map;
- std::vector<IMapObjectObserver *> observers;
- public:
- explicit CMapHandler(const CMap * map);
- const CMap * getMap();
- /// returns true if tile is within map bounds
- bool isInMap(const int3 & tile);
- /// see MapObjectObserver interface
- void onObjectFadeIn(const CGObjectInstance * obj, const PlayerColor & initiator);
- void onObjectFadeOut(const CGObjectInstance * obj, const PlayerColor & initiator);
- void onObjectInstantAdd(const CGObjectInstance * obj, const PlayerColor & initiator);
- void onObjectInstantRemove(const CGObjectInstance * obj, const PlayerColor & initiator);
- void onBeforeHeroTeleported(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- void onAfterHeroTeleported(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- void onBeforeHeroEmbark(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- void onAfterHeroEmbark(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- void onBeforeHeroDisembark(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- void onAfterHeroDisembark(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- void onHeroMoved(const CGHeroInstance * obj, const int3 & from, const int3 & dest);
- /// Add object to receive notifications on any changes in visible map state
- void addMapObserver(IMapObjectObserver * observer);
- void removeMapObserver(IMapObjectObserver * observer);
- /// returns string description for terrain interaction
- std::string getTerrainDescr(const int3 & pos, bool rightClick) const; //TODO: possible to get info about invisible tiles from client without serverside validation
- /// determines if the map is ready to handle new hero movement (not available during fading animations)
- bool hasOngoingAnimations();
- /// blocking wait until all ongoing animatins are over
- void waitForOngoingAnimations();
- void endNetwork();
- static bool compareObjectBlitOrder(const CGObjectInstance * a, const CGObjectInstance * b);
- };
|