diff options
| author | treeston <treeston.mmoc@gmail.com> | 2015-12-20 13:28:16 +0100 | 
|---|---|---|
| committer | treeston <treeston.mmoc@gmail.com> | 2016-01-12 22:24:23 +0100 | 
| commit | 2da458c56d024aac04468ce2af454a83ad790bf6 (patch) | |
| tree | f76d211c9f8b82b48965875809cf21198523fa91 /src/server/game/Instances/InstanceScript.h | |
| parent | 60e3127714f81748c8f2bc1d9774a71ecca786f2 (diff) | |
Scripts/Instances: Complete rewrite of the boundary system.
- Migrate boundary logic to Maps/AreaBoundary instead of having it sit in InstanceScript (to possibly allow use for other purposes).
- Implement the first five boundary types in Maps/AreaBoundary.cpp.
- Add boundary checks to Creature's update logic
- Add boundary data for all Northrend raids
- Add boundary initialization structures and methods to InstanceScript
- Modify EnterEvadeMode signature. It now passes a value from the EvadeReason enum as parameter to allow special casing depending on evade reason
- Remove previous (weird) boundary code that had them linked to GO spawns
Diffstat (limited to 'src/server/game/Instances/InstanceScript.h')
| -rw-r--r-- | src/server/game/Instances/InstanceScript.h | 39 | 
1 files changed, 14 insertions, 25 deletions
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 189767e54bf..8285eaa7346 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -19,9 +19,11 @@  #ifndef TRINITY_INSTANCE_DATA_H  #define TRINITY_INSTANCE_DATA_H +#include <set>  #include "ZoneScript.h"  #include "World.h"  #include "ObjectMgr.h" +#include "CreatureAI.h"  #define OUT_SAVE_INST_DATA             TC_LOG_DEBUG("scripts", "Saving Instance Data for Instance %s (Map %d, Instance Id %d)", instance->GetMapName(), instance->GetId(), instance->GetInstanceId())  #define OUT_SAVE_INST_DATA_COMPLETE    TC_LOG_DEBUG("scripts", "Saving Instance Data for Instance %s (Map %d, Instance Id %d) completed.", instance->GetMapName(), instance->GetId(), instance->GetInstanceId()) @@ -65,32 +67,19 @@ enum DoorType      MAX_DOOR_TYPES  }; -enum BoundaryType -{ -    BOUNDARY_NONE = 0, -    BOUNDARY_N, -    BOUNDARY_S, -    BOUNDARY_E, -    BOUNDARY_W, -    BOUNDARY_NE, -    BOUNDARY_NW, -    BOUNDARY_SE, -    BOUNDARY_SW, -    BOUNDARY_MAX_X = BOUNDARY_N, -    BOUNDARY_MIN_X = BOUNDARY_S, -    BOUNDARY_MAX_Y = BOUNDARY_W, -    BOUNDARY_MIN_Y = BOUNDARY_E -}; - -typedef std::map<BoundaryType, float> BossBoundaryMap; -  struct DoorData  {      uint32 entry, bossId;      DoorType type; -    uint32 boundary;  }; +struct BossBoundaryEntry +{ +    uint32 const bossId; +    AreaBoundary const* const boundary; +}; +typedef std::list<BossBoundaryEntry> BossBoundaryData; +  struct MinionData  {      uint32 entry, bossId; @@ -108,16 +97,15 @@ struct BossInfo      EncounterState state;      GuidSet door[MAX_DOOR_TYPES];      GuidSet minion; -    BossBoundaryMap boundary; +    CreatureBoundary boundary;  };  struct DoorInfo  { -    explicit DoorInfo(BossInfo* _bossInfo, DoorType _type, BoundaryType _boundary) -        : bossInfo(_bossInfo), type(_type), boundary(_boundary) { } +    explicit DoorInfo(BossInfo* _bossInfo, DoorType _type) +        : bossInfo(_bossInfo), type(_type) { }      BossInfo* bossInfo;      DoorType type; -    BoundaryType boundary;  };  struct MinionInfo @@ -221,7 +209,7 @@ class InstanceScript : public ZoneScript          virtual bool SetBossState(uint32 id, EncounterState state);          EncounterState GetBossState(uint32 id) const { return id < bosses.size() ? bosses[id].state : TO_BE_DECIDED; }          static std::string GetBossStateName(uint8 state); -        BossBoundaryMap const* GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : NULL; } +        CreatureBoundary const* GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : NULL; }          // Achievement criteria additional requirements check          // NOTE: not use this if same can be checked existed requirement types from AchievementCriteriaRequirementType @@ -248,6 +236,7 @@ class InstanceScript : public ZoneScript      protected:          void SetHeaders(std::string const& dataHeaders);          void SetBossNumber(uint32 number) { bosses.resize(number); } +        void LoadBossBoundaries(BossBoundaryData const& data);          void LoadDoorData(DoorData const* data);          void LoadMinionData(MinionData const* data);          void LoadObjectData(ObjectData const* creatureData, ObjectData const* gameObjectData);  | 
