| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #include "../global.h"
- struct IPack
- {
- virtual ui16 getType()const = 0 ;
- //template<ui16 Type>
- //static bool isType(const IPack * ip)
- //{
- // return Type == ip->getType();
- //}
- template<ui16 Type>
- static bool isType(IPack * ip)
- {
- return Type == ip->getType();
- }
- //template<ui16 Type>
- //static bool isType(const IPack & ip)
- //{
- // return Type == ip.getType();
- //}
- };
- template <typename T> struct CPack
- :public IPack
- {
- ui16 type;
- ui16 getType() const{return type;}
- T* This(){return static_cast<T*>(this);};
- };
- struct NewTurn : public CPack<NewTurn> //101
- {
- struct Hero
- {
- ui32 id, move, mana; //id is a general serial id
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & id & move & mana;
- }
- bool operator<(const Hero&h)const{return id < h.id;}
- };
- struct Resources
- {
- ui8 player;
- si32 resources[RESOURCE_QUANTITY];
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & player & resources;
- }
- bool operator<(const Resources&h)const{return player < h.player;}
- };
- std::set<Hero> heroes; //updates movement and mana points
- std::set<Resources> res;//resource list
- ui32 day;
- bool resetBuilded;
- NewTurn(){type = 101;};
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & heroes & res & day & resetBuilded;
- }
- };
- struct TryMoveHero : public CPack<TryMoveHero> //501
- {
- TryMoveHero(){type = 501;};
- ui32 id, movePoints;
- ui8 result;
- int3 start, end;
- std::set<int3> fowRevealed; //revealed tiles
- template <typename Handler> void serialize(Handler &h, const int version)
- {
- h & id & result & start & end & movePoints & fowRevealed;
- }
- };
|