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.cpp | |
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.cpp')
-rw-r--r-- | src/server/game/Instances/InstanceScript.cpp | 31 |
1 files changed, 8 insertions, 23 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index e59171bc3b0..20f513323c1 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -96,6 +96,13 @@ void InstanceScript::SetHeaders(std::string const& dataHeaders) headers.push_back(header); } +void InstanceScript::LoadBossBoundaries(const BossBoundaryData& data) +{ + for (BossBoundaryEntry entry : data) + if (entry.bossId < bosses.size()) + bosses[entry.bossId].boundary.insert(entry.boundary); +} + void InstanceScript::LoadMinionData(const MinionData* data) { while (data->entry) @@ -113,7 +120,7 @@ void InstanceScript::LoadDoorData(const DoorData* data) while (data->entry) { if (data->bossId < bosses.size()) - doors.insert(std::make_pair(data->entry, DoorInfo(&bosses[data->bossId], data->type, BoundaryType(data->boundary)))); + doors.insert(std::make_pair(data->entry, DoorInfo(&bosses[data->bossId], data->type))); ++data; } @@ -236,28 +243,6 @@ void InstanceScript::AddDoor(GameObject* door, bool add) if (add) { data.bossInfo->door[data.type].insert(door->GetGUID()); - switch (data.boundary) - { - default: - case BOUNDARY_NONE: - break; - case BOUNDARY_N: - case BOUNDARY_S: - data.bossInfo->boundary[data.boundary] = door->GetPositionX(); - break; - case BOUNDARY_E: - case BOUNDARY_W: - data.bossInfo->boundary[data.boundary] = door->GetPositionY(); - break; - case BOUNDARY_NW: - case BOUNDARY_SE: - data.bossInfo->boundary[data.boundary] = door->GetPositionX() + door->GetPositionY(); - break; - case BOUNDARY_NE: - case BOUNDARY_SW: - data.bossInfo->boundary[data.boundary] = door->GetPositionX() - door->GetPositionY(); - break; - } } else data.bossInfo->door[data.type].erase(door->GetGUID()); |