Barriers are working corretly, but are way too slow
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user