Barriers are working corretly, but are way too slow

This commit is contained in:
2016-04-14 12:43:00 +10:00
parent 1267b30806
commit ab6207d4f3
4 changed files with 28 additions and 5 deletions
+3
View File
@@ -740,16 +740,19 @@ void World::hCharacterCreate(CharacterPacket* const argPacket) {
memset(&characterPacket, 0, MAX_PACKET_SIZE); memset(&characterPacket, 0, MAX_PACKET_SIZE);
characterPacket.type = SerialPacketType::QUERY_CHARACTER_EXISTS; characterPacket.type = SerialPacketType::QUERY_CHARACTER_EXISTS;
characterPacket.roomIndex = roomIndex; characterPacket.roomIndex = roomIndex;
characterPacket.origin = localCharacter->GetOrigin();
network.SendTo(Channels::SERVER, &characterPacket); network.SendTo(Channels::SERVER, &characterPacket);
CreaturePacket creaturePacket; CreaturePacket creaturePacket;
creaturePacket.type = SerialPacketType::QUERY_CREATURE_EXISTS; creaturePacket.type = SerialPacketType::QUERY_CREATURE_EXISTS;
creaturePacket.roomIndex = roomIndex; creaturePacket.roomIndex = roomIndex;
creaturePacket.origin = localCharacter->GetOrigin();
network.SendTo(Channels::SERVER, &creaturePacket); network.SendTo(Channels::SERVER, &creaturePacket);
BarrierPacket barrierPacket; BarrierPacket barrierPacket;
barrierPacket.type = SerialPacketType::QUERY_BARRIER_EXISTS; barrierPacket.type = SerialPacketType::QUERY_BARRIER_EXISTS;
barrierPacket.roomIndex = roomIndex; barrierPacket.roomIndex = roomIndex;
barrierPacket.origin = localCharacter->GetOrigin();
network.SendTo(Channels::SERVER, &barrierPacket); network.SendTo(Channels::SERVER, &barrierPacket);
} }
+9 -2
View File
@@ -23,6 +23,8 @@
#include "lua_utilities.hpp" #include "lua_utilities.hpp"
#include "barrier_defines.hpp"
BarrierManager::BarrierManager() { BarrierManager::BarrierManager() {
//EMPTY //EMPTY
} }
@@ -41,7 +43,12 @@ void BarrierManager::Update(
//for each given creature, if a collision was detected, make a new barrier //for each given creature, if a collision was detected, make a new barrier
for (auto& it : *creatureList) { for (auto& it : *creatureList) {
if (std::get<2>(it) & 2) { if (std::get<2>(it) & 2) {
Create(-1); //instance from creature index? int index = Create(-1); //instance from creature index?
BarrierData* barrierData = Find(index);
barrierData->SetOrigin({
(CREATURE_BOUNDS_WIDTH - BARRIER_BOUNDS_WIDTH) / 2 + std::get<1>(it)->GetOrigin().x,
(CREATURE_BOUNDS_HEIGHT - BARRIER_BOUNDS_HEIGHT) / 2 + std::get<1>(it)->GetOrigin().y
});
} }
} }
@@ -76,7 +83,7 @@ void BarrierManager::Update(
void BarrierManager::Cleanup(std::list<std::tuple<const int, BarrierData*, int>>* barrierList) { void BarrierManager::Cleanup(std::list<std::tuple<const int, BarrierData*, int>>* barrierList) {
//unload the given barrier objects //unload the given barrier objects
for (auto& it : *barrierList) { for (auto& it : *barrierList) {
if (std::get<2>(it) & 2) { if (std::get<2>(it) & 4) {
Unload(std::get<0>(it)); Unload(std::get<0>(it));
} }
} }
+15 -2
View File
@@ -64,7 +64,15 @@ void RoomData::RunFrame() {
for (auto& it : creatureList) { for (auto& it : creatureList) {
CreaturePacket packet; CreaturePacket packet;
copyCreatureToPacket(&packet, std::get<1>(it), std::get<0>(it)); copyCreatureToPacket(&packet, std::get<1>(it), std::get<0>(it));
packet.type = std::get<2>(it) != 0 ? SerialPacketType::CREATURE_UPDATE : SerialPacketType::CREATURE_UNLOAD;
//interpret the event
if (std::get<2>(it) & 1) {
packet.type = SerialPacketType::CREATURE_UPDATE;
}
if (std::get<2>(it) & 2) {
packet.type = SerialPacketType::CREATURE_UNLOAD;
}
packet.roomIndex = roomIndex; packet.roomIndex = roomIndex;
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&packet), roomIndex, std::get<1>(it)->GetOrigin(), INFLUENCE_RADIUS); pumpPacketProximity(reinterpret_cast<SerialPacket*>(&packet), roomIndex, std::get<1>(it)->GetOrigin(), INFLUENCE_RADIUS);
} }
@@ -73,7 +81,12 @@ void RoomData::RunFrame() {
for (auto& it : barrierList) { for (auto& it : barrierList) {
BarrierPacket packet; BarrierPacket packet;
copyBarrierToPacket(&packet, std::get<1>(it), std::get<0>(it)); copyBarrierToPacket(&packet, std::get<1>(it), std::get<0>(it));
packet.type = std::get<2>(it) != 0 ? SerialPacketType::BARRIER_UPDATE : SerialPacketType::BARRIER_UNLOAD;
//interpret the event
if (std::get<2>(it) & 1 || std::get<2>(it) & 2) {
packet.type = SerialPacketType::BARRIER_UPDATE;
}
packet.roomIndex = roomIndex; packet.roomIndex = roomIndex;
pumpPacketProximity(reinterpret_cast<SerialPacket*>(&packet), roomIndex, std::get<1>(it)->GetOrigin(), INFLUENCE_RADIUS); pumpPacketProximity(reinterpret_cast<SerialPacket*>(&packet), roomIndex, std::get<1>(it)->GetOrigin(), INFLUENCE_RADIUS);
} }
+1 -1
View File
@@ -79,7 +79,7 @@ private:
int roomIndex = 0; int roomIndex = 0;
BarrierManager barrierMgr; BarrierManager barrierMgr;
std::list<CharacterData*> characterList; std::list<CharacterData*> characterList;
CombatInstanceManager CombatInstanceMgr; CombatInstanceManager combatInstanceMgr;
CreatureManager creatureMgr; CreatureManager creatureMgr;
RegionPagerLua pager; RegionPagerLua pager;
TriggerManager triggerMgr; TriggerManager triggerMgr;