Server responds to barrier queries

This commit is contained in:
2016-04-08 22:29:20 +10:00
parent 5d0f9e1bb8
commit e2e2e243d4
5 changed files with 35 additions and 4 deletions
-4
View File
@@ -21,7 +21,6 @@
*/
#include "barrier_manager.hpp"
#include <iostream>
void BarrierManager::DrawTo(SDL_Renderer* const dest, Sint16 x, Sint16 y, double scaleX, double scaleY) {
for (auto& it : barrierMap) {
it.second.DrawTo(dest, x, y);
@@ -38,7 +37,6 @@ void BarrierManager::UnloadBaseImage() {
void BarrierManager::LoadTemplateImages(SDL_Renderer* renderer, std::list<std::string> names) {
for (auto& it : names) {
//TODO: check the state of the local flag
templateImages.emplace(it, Image(renderer, it));
}
}
@@ -49,8 +47,6 @@ void BarrierManager::UnloadTemplateImages() {
BaseBarrier* BarrierManager::Create(int index) {
barrierMap.emplace( index, BaseBarrier(baseImage, templateImages) );
//DEBUG: debugging
return &barrierMap[index];
}
+4
View File
@@ -130,6 +130,10 @@ int RoomData::GetRoomIndex() {
return roomIndex;
}
BarrierManager* RoomData::GetBarrierMgr() {
return &barrierMgr;
}
std::list<CharacterData*>* RoomData::GetCharacterList() {
return &characterList;
}
+1
View File
@@ -53,6 +53,7 @@ public:
int SetRoomIndex(int i);
int GetRoomIndex();
BarrierManager* GetBarrierMgr();
std::list<CharacterData*>* GetCharacterList();
CreatureManager* GetCreatureMgr();
RegionPagerLua* GetPager();
+27
View File
@@ -302,11 +302,17 @@ void ServerApplication::HandlePacket(SerialPacket* const argPacket) {
hCharacterMovement(static_cast<CharacterPacket*>(argPacket));
break;
//TODO: (1) merge character, creature & barrier queries & updates together?
//creature management
case SerialPacketType::QUERY_CREATURE_EXISTS:
hQueryCreatureExists(static_cast<CreaturePacket*>(argPacket));
break;
//barrier management
case SerialPacketType::QUERY_BARRIER_EXISTS:
hQueryBarrierExists(static_cast<BarrierPacket*>(argPacket));
break;
//chat
case SerialPacketType::TEXT_BROADCAST:
hTextBroadcast(static_cast<TextPacket*>(argPacket));
@@ -820,6 +826,27 @@ void ServerApplication::hQueryCreatureExists(CreaturePacket* const argPacket) {
}
}
//-------------------------
//barrier management
//-------------------------
//TODO: On barrier create, etc.
void ServerApplication::hQueryBarrierExists(BarrierPacket* const argPacket) {
//respond with all barrier data
BarrierPacket newPacket;
BarrierManager* barrierMgr = roomMgr.Find(argPacket->roomIndex)->GetBarrierMgr();
//TODO: (0) move this into the room class
for (auto& it : *(barrierMgr->GetContainer()) ) {
copyBarrierToPacket(&newPacket, &(it.second), it.first);
newPacket.type = SerialPacketType::QUERY_BARRIER_EXISTS;
newPacket.roomIndex = argPacket->roomIndex;
network.SendTo(argPacket->srcAddress, static_cast<SerialPacket*>(&newPacket));
}
}
//-------------------------
//chat
//-------------------------
+3
View File
@@ -100,6 +100,9 @@ private:
//creature management
void hQueryCreatureExists(CreaturePacket* const);
//barrier management
void hQueryBarrierExists(BarrierPacket* const);
//chat
void hTextBroadcast(TextPacket* const);
void hTextSpeech(TextPacket* const);