aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2015-05-17 18:06:28 +0200
committerShauren <shauren.trinity@gmail.com>2015-05-17 18:06:28 +0200
commit92bfa759facd47c1e375876c1df4604091811d16 (patch)
tree731f58769764f0f6852e62de2ae3c1adb05fa61f /src/server/game/Server
parent051e3b631db74886479c58485fad46b9a326a966 (diff)
Core/Garrisons: Initial work on garrison followers
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.cpp12
-rw-r--r--src/server/game/Server/Packets/GarrisonPackets.h19
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
3 files changed, 26 insertions, 7 deletions
diff --git a/src/server/game/Server/Packets/GarrisonPackets.cpp b/src/server/game/Server/Packets/GarrisonPackets.cpp
index 8dff6ff86d4..456149bbdbb 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.cpp
+++ b/src/server/game/Server/Packets/GarrisonPackets.cpp
@@ -60,8 +60,8 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Garrison::GarrisonFollowe
data << uint32(follower.CurrentMissionID);
data << uint32(follower.AbilityID.size());
data << uint32(follower.FollowerStatus);
- if (!follower.AbilityID.empty())
- data.append(follower.AbilityID.data(), follower.AbilityID.size());
+ for (uint32 abilityId : follower.AbilityID)
+ data << uint32(abilityId);
return data;
}
@@ -237,3 +237,11 @@ WorldPacket const* WorldPackets::Garrison::GarrisonPlotRemoved::Write()
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Garrison::GarrisonAddFollowerResult::Write()
+{
+ _worldPacket << uint32(Result);
+ _worldPacket << Follower;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/GarrisonPackets.h b/src/server/game/Server/Packets/GarrisonPackets.h
index 288074284b5..5fc386ab72b 100644
--- a/src/server/game/Server/Packets/GarrisonPackets.h
+++ b/src/server/game/Server/Packets/GarrisonPackets.h
@@ -74,7 +74,7 @@ namespace WorldPackets
uint32 Xp = 0;
uint32 CurrentBuildingID = 0;
uint32 CurrentMissionID = 0;
- std::vector<uint32> AbilityID;
+ std::list<uint32> AbilityID;
uint32 FollowerStatus;
};
@@ -102,9 +102,9 @@ namespace WorldPackets
uint32 FactionIndex = 0;
uint32 NumFollowerActivationsRemaining = 0;
std::vector<GarrisonPlotInfo*> Plots;
- std::vector<GarrisonBuildingInfo*> Buildings;
- std::vector<GarrisonFollower*> Followers;
- std::vector<GarrisonMission*> Missions;
+ std::vector<GarrisonBuildingInfo const*> Buildings;
+ std::vector<GarrisonFollower const*> Followers;
+ std::vector<GarrisonMission const*> Missions;
std::vector<int32> ArchivedMissions;
};
@@ -267,6 +267,17 @@ namespace WorldPackets
uint32 GarrPlotInstanceID = 0;
};
+
+ class GarrisonAddFollowerResult final : public ServerPacket
+ {
+ public:
+ GarrisonAddFollowerResult() : ServerPacket(SMSG_GARRISON_ADD_FOLLOWER_RESULT, 8 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 5 * 4 + 4) { }
+
+ WorldPacket const* Write() override;
+
+ GarrisonFollower Follower;
+ uint32 Result = 0;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 07632e48b40..8c559fe80c7 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1109,7 +1109,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_SPEED_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_SET, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GAME_TIME_UPDATE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_FOLLOWER_RESULT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ADD_MISSION_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_GARRISON_BUILDING_ACTIVATED, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);