[General] Add ActorPacketController & make controller var names clearer

0.6.1
David Cernat 8 years ago
parent a1d0b4908f
commit 070c6a3bd4

@ -0,0 +1,47 @@
#include "ActorProcessor.hpp"
#include "Networking.hpp"
using namespace mwmp;
ActorProcessor::processors_t ActorProcessor::processors;
void ActorProcessor::Do(ActorPacket &packet, Player &player, BaseEvent &event)
{
packet.Send(true);
}
void ActorProcessor::AddProcessor(mwmp::ActorProcessor *processor) noexcept
{
for (auto &p : processors)
{
if (processor->packetID == p.first)
throw std::logic_error("processor " + p.second->strPacketID + " already registered. Check " +
processor->className + " and " + p.second->className);
}
processors.insert(processors_t::value_type(processor->GetPacketID(), processor));
}
bool ActorProcessor::Process(RakNet::Packet &packet, BaseEvent &event) noexcept
{
// Clear our BaseEvent before loading new data in it
event.cell.blank();
event.objectChanges.objects.clear();
event.guid = packet.guid;
for (auto &processor : processors)
{
if (processor.first == packet.data[0])
{
Player *player = Players::getPlayer(packet.guid);
ActorPacket *myPacket = Networking::get().getActorPacketController()->GetPacket(packet.data[0]);
myPacket->setEvent(&event);
if (!processor.second->avoidReading)
myPacket->Read();
processor.second->Do(*myPacket, *player, event);
return true;
}
}
return false;
}

@ -0,0 +1,32 @@
#ifndef OPENMW_ACTORPROCESSOR_HPP
#define OPENMW_ACTORPROCESSOR_HPP
#include <components/openmw-mp/Base/BasePacketProcessor.hpp>
#include <components/openmw-mp/Packets/BasePacket.hpp>
#include <components/openmw-mp/Packets/Actor/ActorPacket.hpp>
#include <components/openmw-mp/NetworkMessages.hpp>
#include <unordered_map>
#include <memory>
#include "Script/Script.hpp"
#include "Player.hpp"
namespace mwmp
{
class ActorProcessor : public BasePacketProcessor
{
public:
virtual void Do(ActorPacket &packet, Player &player, BaseEvent &event);
static bool Process(RakNet::Packet &packet, BaseEvent &event) noexcept;
static void AddProcessor(ActorProcessor *processor) noexcept;
//typedef boost::unordered_map<unsigned char, boost::shared_ptr<ActorProcessor> > processors_t;
typedef std::unordered_map<unsigned char, std::unique_ptr<ActorProcessor> > processors_t;
private:
static processors_t processors;
};
}
#endif //OPENMW_ACTORPROCESSOR_HPP

@ -79,9 +79,7 @@ set(SERVER
Script/Functions/Spells.cpp Script/Functions/Timer.cpp Script/Functions/Positions.cpp Script/Functions/Spells.cpp Script/Functions/Timer.cpp Script/Functions/Positions.cpp
Script/Functions/Cells.cpp Script/Functions/World.cpp Script/Functions/Miscellaneous.cpp Script/Functions/Cells.cpp Script/Functions/World.cpp Script/Functions/Miscellaneous.cpp
PlayerProcessor.cpp ProcessorInitializer.cpp PlayerProcessor.cpp ActorProcessor.cpp WorldProcessor.cpp
WorldProcessor.cpp
ProcessorInitializer.cpp
Script/API/TimerAPI.cpp Script/API/PublicFnAPI.cpp Script/API/TimerAPI.cpp Script/API/PublicFnAPI.cpp
${PawnScript_Sources} ${PawnScript_Sources}

@ -51,6 +51,30 @@ Cell::TPlayers Cell::getPlayers() const
return players; return players;
} }
void Cell::sendToLoaded(mwmp::ActorPacket *actorPacket, mwmp::BaseEvent *baseEvent) const
{
if (players.empty())
return;
std::list <Player*> plList;
for (auto pl : players)
plList.push_back(pl);
plList.sort();
plList.unique();
for (auto pl : plList)
{
if (pl->guid == baseEvent->guid) continue;
actorPacket->setEvent(baseEvent);
// Send the packet to this eligible guid
actorPacket->Send(pl->guid);
}
}
void Cell::sendToLoaded(mwmp::WorldPacket *worldPacket, mwmp::BaseEvent *baseEvent) const void Cell::sendToLoaded(mwmp::WorldPacket *worldPacket, mwmp::BaseEvent *baseEvent) const
{ {
if (players.empty()) if (players.empty())

@ -9,6 +9,7 @@
#include <string> #include <string>
#include <components/esm/records.hpp> #include <components/esm/records.hpp>
#include <components/openmw-mp/Base/BaseEvent.hpp> #include <components/openmw-mp/Base/BaseEvent.hpp>
#include <components/openmw-mp/Packets/Actor/ActorPacket.hpp>
#include <components/openmw-mp/Packets/World/WorldPacket.hpp> #include <components/openmw-mp/Packets/World/WorldPacket.hpp>
class Player; class Player;
@ -62,6 +63,7 @@ public:
void removePlayer(Player *player); void removePlayer(Player *player);
TPlayers getPlayers() const; TPlayers getPlayers() const;
void sendToLoaded(mwmp::ActorPacket *actorPacket, mwmp::BaseEvent *baseEvent) const;
void sendToLoaded(mwmp::WorldPacket *worldPacket, mwmp::BaseEvent *baseEvent) const; void sendToLoaded(mwmp::WorldPacket *worldPacket, mwmp::BaseEvent *baseEvent) const;
std::string getDescription() const; std::string getDescription() const;

@ -18,6 +18,7 @@
#include "MasterClient.hpp" #include "MasterClient.hpp"
#include "Cell.hpp" #include "Cell.hpp"
#include "PlayerProcessor.hpp" #include "PlayerProcessor.hpp"
#include "ActorProcessor.hpp"
#include "WorldProcessor.hpp" #include "WorldProcessor.hpp"
#include <components/openmw-mp/Version.hpp> #include <components/openmw-mp/Version.hpp>
#include <components/openmw-mp/Packets/PacketPreInit.hpp> #include <components/openmw-mp/Packets/PacketPreInit.hpp>
@ -37,12 +38,14 @@ Networking::Networking(RakNet::RakPeerInterface *peer)
CellController::create(); CellController::create();
playerController = new PlayerPacketController(peer); playerPacketController = new PlayerPacketController(peer);
worldController = new WorldPacketController(peer); actorPacketController = new ActorPacketController(peer);
worldPacketController = new WorldPacketController(peer);
// Set send stream // Set send stream
playerController->SetStream(0, &bsOut); playerPacketController->SetStream(0, &bsOut);
worldController->SetStream(0, &bsOut); actorPacketController->SetStream(0, &bsOut);
worldPacketController->SetStream(0, &bsOut);
running = true; running = true;
exitCode = 0; exitCode = 0;
@ -61,8 +64,8 @@ Networking::~Networking()
CellController::destroy(); CellController::destroy();
sThis = 0; sThis = 0;
delete playerController; delete playerPacketController;
delete worldController; delete worldPacketController;
LOG_QUIT(); LOG_QUIT();
} }
@ -80,7 +83,7 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
{ {
Player *player = Players::getPlayer(packet->guid); Player *player = Players::getPlayer(packet->guid);
PlayerPacket *myPacket = playerController->GetPacket(packet->data[0]); PlayerPacket *myPacket = playerPacketController->GetPacket(packet->data[0]);
if (packet->data[0] == ID_HANDSHAKE) if (packet->data[0] == ID_HANDSHAKE)
{ {
@ -123,8 +126,8 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
if (!result) if (!result)
{ {
playerController->GetPacket(ID_USER_DISCONNECTED)->setPlayer(Players::getPlayer(packet->guid)); playerPacketController->GetPacket(ID_USER_DISCONNECTED)->setPlayer(Players::getPlayer(packet->guid));
playerController->GetPacket(ID_USER_DISCONNECTED)->Send(false); playerPacketController->GetPacket(ID_USER_DISCONNECTED)->Send(false);
Players::deletePlayer(packet->guid); Players::deletePlayer(packet->guid);
return; return;
} }
@ -153,6 +156,18 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
} }
void Networking::processActorPacket(RakNet::Packet *packet)
{
Player *player = Players::getPlayer(packet->guid);
if (!player->isHandshaked() || player->getLoadState() != Player::POSTLOADED)
return;
if (!ActorProcessor::Process(*packet, baseEvent))
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Unhandled WorldPacket with identifier %i has arrived", packet->data[0]);
}
void Networking::processWorldPacket(RakNet::Packet *packet) void Networking::processWorldPacket(RakNet::Packet *packet)
{ {
Player *player = Players::getPlayer(packet->guid); Player *player = Players::getPlayer(packet->guid);
@ -193,24 +208,29 @@ void Networking::update(RakNet::Packet *packet)
return; return;
} }
playerController->SetStream(&bsIn, 0); playerPacketController->SetStream(&bsIn, 0);
playerController->GetPacket(ID_HANDSHAKE)->RequestData(packet->guid); playerPacketController->GetPacket(ID_HANDSHAKE)->RequestData(packet->guid);
Players::newPlayer(packet->guid); Players::newPlayer(packet->guid);
player = Players::getPlayer(packet->guid); player = Players::getPlayer(packet->guid);
playerController->GetPacket(ID_USER_MYID)->setPlayer(player); playerPacketController->GetPacket(ID_USER_MYID)->setPlayer(player);
playerController->GetPacket(ID_USER_MYID)->Send(false); playerPacketController->GetPacket(ID_USER_MYID)->Send(false);
return; return;
} }
else if (playerController->ContainsPacket(packet->data[0])) else if (playerPacketController->ContainsPacket(packet->data[0]))
{ {
playerController->SetStream(&bsIn, 0); playerPacketController->SetStream(&bsIn, 0);
processPlayerPacket(packet); processPlayerPacket(packet);
} }
else if (worldController->ContainsPacket(packet->data[0])) else if (actorPacketController->ContainsPacket(packet->data[0]))
{
actorPacketController->SetStream(&bsIn, 0);
processActorPacket(packet);
}
else if (worldPacketController->ContainsPacket(packet->data[0]))
{ {
worldController->SetStream(&bsIn, 0); worldPacketController->SetStream(&bsIn, 0);
processWorldPacket(packet); processWorldPacket(packet);
} }
else else
@ -219,11 +239,11 @@ void Networking::update(RakNet::Packet *packet)
void Networking::newPlayer(RakNet::RakNetGUID guid) void Networking::newPlayer(RakNet::RakNetGUID guid)
{ {
playerController->GetPacket(ID_PLAYER_BASEINFO)->RequestData(guid); playerPacketController->GetPacket(ID_PLAYER_BASEINFO)->RequestData(guid);
playerController->GetPacket(ID_PLAYER_DYNAMICSTATS)->RequestData(guid); playerPacketController->GetPacket(ID_PLAYER_DYNAMICSTATS)->RequestData(guid);
playerController->GetPacket(ID_PLAYER_POS)->RequestData(guid); playerPacketController->GetPacket(ID_PLAYER_POS)->RequestData(guid);
playerController->GetPacket(ID_PLAYER_CELL_CHANGE)->RequestData(guid); playerPacketController->GetPacket(ID_PLAYER_CELL_CHANGE)->RequestData(guid);
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->RequestData(guid); playerPacketController->GetPacket(ID_PLAYER_EQUIPMENT)->RequestData(guid);
LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Sending info about other players to %lu", guid.g); LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "Sending info about other players to %lu", guid.g);
@ -241,21 +261,21 @@ void Networking::newPlayer(RakNet::RakNetGUID guid)
// If we are iterating over a player who has inputted their name, proceed // If we are iterating over a player who has inputted their name, proceed
else if (pl->second->getLoadState() == Player::POSTLOADED) else if (pl->second->getLoadState() == Player::POSTLOADED)
{ {
playerController->GetPacket(ID_PLAYER_BASEINFO)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_BASEINFO)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_DYNAMICSTATS)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_DYNAMICSTATS)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_SKILL)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_SKILL)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_POS)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_POS)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_CELL_CHANGE)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_CELL_CHANGE)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(pl->second); playerPacketController->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(pl->second);
playerController->GetPacket(ID_PLAYER_BASEINFO)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_BASEINFO)->Send(guid);
playerController->GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(guid);
playerController->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(guid);
playerController->GetPacket(ID_PLAYER_SKILL)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_SKILL)->Send(guid);
playerController->GetPacket(ID_PLAYER_POS)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_POS)->Send(guid);
playerController->GetPacket(ID_PLAYER_CELL_CHANGE)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_CELL_CHANGE)->Send(guid);
playerController->GetPacket(ID_PLAYER_EQUIPMENT)->Send(guid); playerPacketController->GetPacket(ID_PLAYER_EQUIPMENT)->Send(guid);
} }
} }
@ -270,19 +290,24 @@ void Networking::disconnectPlayer(RakNet::RakNetGUID guid)
return; return;
Script::Call<Script::CallbackIdentity("OnPlayerDisconnect")>(player->getId()); Script::Call<Script::CallbackIdentity("OnPlayerDisconnect")>(player->getId());
playerController->GetPacket(ID_USER_DISCONNECTED)->setPlayer(player); playerPacketController->GetPacket(ID_USER_DISCONNECTED)->setPlayer(player);
playerController->GetPacket(ID_USER_DISCONNECTED)->Send(true); playerPacketController->GetPacket(ID_USER_DISCONNECTED)->Send(true);
Players::deletePlayer(guid); Players::deletePlayer(guid);
} }
PlayerPacketController *Networking::getPlayerController() const PlayerPacketController *Networking::getPlayerPacketController() const
{
return playerPacketController;
}
ActorPacketController *Networking::getActorPacketController() const
{ {
return playerController; return actorPacketController;
} }
WorldPacketController *Networking::getWorldController() const WorldPacketController *Networking::getWorldPacketController() const
{ {
return worldController; return worldPacketController;
} }
BaseEvent *Networking::getLastEvent() BaseEvent *Networking::getLastEvent()

@ -6,6 +6,7 @@
#define OPENMW_NETWORKING_HPP #define OPENMW_NETWORKING_HPP
#include <components/openmw-mp/Controllers/PlayerPacketController.hpp> #include <components/openmw-mp/Controllers/PlayerPacketController.hpp>
#include <components/openmw-mp/Controllers/ActorPacketController.hpp>
#include <components/openmw-mp/Controllers/WorldPacketController.hpp> #include <components/openmw-mp/Controllers/WorldPacketController.hpp>
#include "Player.hpp" #include "Player.hpp"
@ -23,6 +24,7 @@ namespace mwmp
void kickPlayer(RakNet::RakNetGUID guid); void kickPlayer(RakNet::RakNetGUID guid);
void processPlayerPacket(RakNet::Packet *packet); void processPlayerPacket(RakNet::Packet *packet);
void processActorPacket(RakNet::Packet *packet);
void processWorldPacket(RakNet::Packet *packet); void processWorldPacket(RakNet::Packet *packet);
void update(RakNet::Packet *packet); void update(RakNet::Packet *packet);
@ -34,8 +36,10 @@ namespace mwmp
void stopServer(int code); void stopServer(int code);
PlayerPacketController *getPlayerController() const; PlayerPacketController *getPlayerPacketController() const;
WorldPacketController *getWorldController() const; ActorPacketController *getActorPacketController() const;
WorldPacketController *getWorldPacketController() const;
BaseEvent *getLastEvent(); BaseEvent *getLastEvent();
int getCurrentMpNum(); int getCurrentMpNum();
@ -59,8 +63,9 @@ namespace mwmp
TPlayers *players; TPlayers *players;
MasterClient *mclient; MasterClient *mclient;
PlayerPacketController *playerController; PlayerPacketController *playerPacketController;
WorldPacketController *worldController; ActorPacketController *actorPacketController;
WorldPacketController *worldPacketController;
bool running; bool running;
int exitCode; int exitCode;

@ -29,7 +29,7 @@ bool PlayerProcessor::Process(RakNet::Packet &packet) noexcept
if (processor.first == packet.data[0]) if (processor.first == packet.data[0])
{ {
Player *player = Players::getPlayer(packet.guid); Player *player = Players::getPlayer(packet.guid);
PlayerPacket *myPacket = Networking::get().getPlayerController()->GetPacket(packet.data[0]); PlayerPacket *myPacket = Networking::get().getPlayerPacketController()->GetPacket(packet.data[0]);
myPacket->setPlayer(player); myPacket->setPlayer(player);
if (!processor.second->avoidReading) if (!processor.second->avoidReading)

@ -24,10 +24,11 @@
#include "processors/player/ProcessorPlayerCharGen.hpp" #include "processors/player/ProcessorPlayerCharGen.hpp"
#include "processors/player/ProcessorGUIMessageBox.hpp" #include "processors/player/ProcessorGUIMessageBox.hpp"
#include "processors/player/ProcessorPlayerCharClass.hpp" #include "processors/player/ProcessorPlayerCharClass.hpp"
#include "ActorProcessor.hpp"
#include "processors/actor/ProcessorActorList.hpp"
#include "processors/actor/ProcessorActorAuthority.hpp"
#include "processors/actor/ProcessorActorFrame.hpp"
#include "WorldProcessor.hpp" #include "WorldProcessor.hpp"
#include "processors/world/ProcessorActorList.hpp"
#include "processors/world/ProcessorActorAuthority.hpp"
#include "processors/world/ProcessorActorFrame.hpp"
#include "processors/world/ProcessorContainer.hpp" #include "processors/world/ProcessorContainer.hpp"
#include "processors/world/ProcessorDoorState.hpp" #include "processors/world/ProcessorDoorState.hpp"
#include "processors/world/ProcessorMusicPlay.hpp" #include "processors/world/ProcessorMusicPlay.hpp"
@ -70,9 +71,10 @@ void ProcessorInitializer()
PlayerProcessor::AddProcessor(new ProcessorGUIMessageBox()); PlayerProcessor::AddProcessor(new ProcessorGUIMessageBox());
PlayerProcessor::AddProcessor(new ProcessorPlayerCharClass()); PlayerProcessor::AddProcessor(new ProcessorPlayerCharClass());
WorldProcessor::AddProcessor(new ProcessorActorList()); ActorProcessor::AddProcessor(new ProcessorActorList());
WorldProcessor::AddProcessor(new ProcessorActorAuthority()); ActorProcessor::AddProcessor(new ProcessorActorAuthority());
WorldProcessor::AddProcessor(new ProcessorActorFrame()); ActorProcessor::AddProcessor(new ProcessorActorFrame());
WorldProcessor::AddProcessor(new ProcessorContainer()); WorldProcessor::AddProcessor(new ProcessorContainer());
WorldProcessor::AddProcessor(new ProcessorDoorState()); WorldProcessor::AddProcessor(new ProcessorDoorState());
WorldProcessor::AddProcessor(new ProcessorMusicPlay()); WorldProcessor::AddProcessor(new ProcessorMusicPlay());

@ -110,6 +110,6 @@ void CellFunctions::SendCell(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_CELL_CHANGE)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_CELL_CHANGE)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_CELL_CHANGE)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_CELL_CHANGE)->Send(false);
} }

@ -15,8 +15,8 @@ void CharClassFunctions::SendClass(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_CHARCLASS)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_CHARCLASS)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_CHARCLASS)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_CHARCLASS)->Send(false);
} }
void CharClassFunctions::SetDefaultClass(unsigned short pid, const char *id) noexcept void CharClassFunctions::SetDefaultClass(unsigned short pid, const char *id) noexcept

@ -15,11 +15,11 @@ void ScriptFunctions::SendMessage(unsigned short pid, const char *message, bool
LOG_MESSAGE_SIMPLE(Log::LOG_VERBOSE, "System: %s", message); LOG_MESSAGE_SIMPLE(Log::LOG_VERBOSE, "System: %s", message);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_CHAT_MESSAGE)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_CHAT_MESSAGE)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_CHAT_MESSAGE)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_CHAT_MESSAGE)->Send(false);
if (broadcast) if (broadcast)
mwmp::Networking::get().getPlayerController()->GetPacket(ID_CHAT_MESSAGE)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_CHAT_MESSAGE)->Send(true);
} }
void ScriptFunctions::CleanChat(unsigned short pid) void ScriptFunctions::CleanChat(unsigned short pid)

@ -18,8 +18,8 @@ void GUIFunctions::_MessageBox(unsigned short pid, int id, const char *label) no
player->guiMessageBox.label = label; player->guiMessageBox.label = label;
player->guiMessageBox.type = Player::GUIMessageBox::MessageBox; player->guiMessageBox.type = Player::GUIMessageBox::MessageBox;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false);
} }
void GUIFunctions::CustomMessageBox(unsigned short pid, int id, const char *label, const char *buttons) noexcept void GUIFunctions::CustomMessageBox(unsigned short pid, int id, const char *label, const char *buttons) noexcept
@ -32,8 +32,8 @@ void GUIFunctions::CustomMessageBox(unsigned short pid, int id, const char *labe
player->guiMessageBox.buttons = buttons; player->guiMessageBox.buttons = buttons;
player->guiMessageBox.type = Player::GUIMessageBox::CustomMessageBox; player->guiMessageBox.type = Player::GUIMessageBox::CustomMessageBox;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false);
} }
void GUIFunctions::InputDialog(unsigned short pid, int id, const char *label) noexcept void GUIFunctions::InputDialog(unsigned short pid, int id, const char *label) noexcept
@ -45,8 +45,8 @@ void GUIFunctions::InputDialog(unsigned short pid, int id, const char *label) no
player->guiMessageBox.label = label; player->guiMessageBox.label = label;
player->guiMessageBox.type = Player::GUIMessageBox::InputDialog; player->guiMessageBox.type = Player::GUIMessageBox::InputDialog;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false);
} }
void GUIFunctions::ListBox(unsigned short pid, int id, const char *label, const char *items) void GUIFunctions::ListBox(unsigned short pid, int id, const char *label, const char *items)
@ -59,8 +59,8 @@ void GUIFunctions::ListBox(unsigned short pid, int id, const char *label, const
player->guiMessageBox.data = items; player->guiMessageBox.data = items;
player->guiMessageBox.type = Player::GUIMessageBox::ListBox; player->guiMessageBox.type = Player::GUIMessageBox::ListBox;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GUI_MESSAGEBOX)->Send(false);
} }
void GUIFunctions::SetMapVisibility(unsigned short targetPID, unsigned short affectedPID, unsigned short state) noexcept void GUIFunctions::SetMapVisibility(unsigned short targetPID, unsigned short affectedPID, unsigned short state) noexcept
@ -80,6 +80,6 @@ void GUIFunctions::SetConsoleAllow(unsigned short pid, bool state)
player->consoleAllowed = state; player->consoleAllowed = state;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_CONSOLE)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_CONSOLE)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_CONSOLE)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_CONSOLE)->Send(false);
} }

@ -145,9 +145,9 @@ void ItemFunctions::SendEquipment(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_EQUIPMENT)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_EQUIPMENT)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_EQUIPMENT)->Send(false);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_EQUIPMENT)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_EQUIPMENT)->Send(true);
} }
void ItemFunctions::SendInventoryChanges(unsigned short pid) noexcept void ItemFunctions::SendInventoryChanges(unsigned short pid) noexcept
@ -156,8 +156,8 @@ void ItemFunctions::SendInventoryChanges(unsigned short pid) noexcept
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
std::swap(player->inventoryChanges, player->inventoryChangesBuffer); std::swap(player->inventoryChanges, player->inventoryChangesBuffer);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_INVENTORY)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_INVENTORY)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_INVENTORY)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_INVENTORY)->Send(false);
player->inventoryChanges = std::move(player->inventoryChangesBuffer); player->inventoryChanges = std::move(player->inventoryChangesBuffer);
player->inventoryChangesBuffer.items.clear(); player->inventoryChangesBuffer.items.clear();
} }

@ -109,6 +109,6 @@ void PositionFunctions::SendPos(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_POS)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_POS)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_POS)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_POS)->Send(false);
} }

@ -73,8 +73,8 @@ void QuestFunctions::SendJournalChanges(unsigned short pid) noexcept
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
std::swap(player->journalChanges, player->journalChangesBuffer); std::swap(player->journalChanges, player->journalChangesBuffer);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_JOURNAL)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_JOURNAL)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_JOURNAL)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_JOURNAL)->Send(false);
player->journalChanges = std::move(player->journalChangesBuffer); player->journalChanges = std::move(player->journalChangesBuffer);
player->journalChangesBuffer.journalItems.clear(); player->journalChangesBuffer.journalItems.clear();
} }

@ -72,8 +72,8 @@ void SpellFunctions::SendSpellbookChanges(unsigned short pid) noexcept
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
std::swap(player->spellbookChanges, player->spellbookChangesBuffer); std::swap(player->spellbookChanges, player->spellbookChangesBuffer);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_SPELLBOOK)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SPELLBOOK)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_SPELLBOOK)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SPELLBOOK)->Send(false);
player->spellbookChanges = std::move(player->spellbookChangesBuffer); player->spellbookChanges = std::move(player->spellbookChangesBuffer);
player->spellbookChangesBuffer.spells.clear(); player->spellbookChangesBuffer.spells.clear();
} }

@ -451,15 +451,15 @@ void StatsFunctions::SetCharGenStage(unsigned short pid, int start, int end) noe
player->charGenStage.current = start; player->charGenStage.current = start;
player->charGenStage.end = end; player->charGenStage.end = end;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_CHARGEN)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_CHARGEN)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_CHARGEN)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_CHARGEN)->Send(false);
} }
void StatsFunctions::Resurrect(unsigned short pid) void StatsFunctions::Resurrect(unsigned short pid)
{ {
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_RESURRECT)->RequestData(player->guid); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_RESURRECT)->RequestData(player->guid);
} }
void StatsFunctions::SendBaseInfo(unsigned short pid) noexcept void StatsFunctions::SendBaseInfo(unsigned short pid) noexcept
@ -467,9 +467,9 @@ void StatsFunctions::SendBaseInfo(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_BASEINFO)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_BASEINFO)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_BASEINFO)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_BASEINFO)->Send(false);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_BASEINFO)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_BASEINFO)->Send(true);
} }
void StatsFunctions::SendDynamicStats(unsigned short pid) noexcept void StatsFunctions::SendDynamicStats(unsigned short pid) noexcept
@ -477,9 +477,9 @@ void StatsFunctions::SendDynamicStats(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_DYNAMICSTATS)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_DYNAMICSTATS)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(false);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(true);
} }
void StatsFunctions::SendAttributes(unsigned short pid) noexcept void StatsFunctions::SendAttributes(unsigned short pid) noexcept
@ -487,9 +487,9 @@ void StatsFunctions::SendAttributes(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_ATTRIBUTE)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(false);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_ATTRIBUTE)->Send(true);
} }
void StatsFunctions::SendSkills(unsigned short pid) noexcept void StatsFunctions::SendSkills(unsigned short pid) noexcept
@ -497,9 +497,9 @@ void StatsFunctions::SendSkills(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player,); GET_PLAYER(pid, player,);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_SKILL)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SKILL)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_SKILL)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SKILL)->Send(false);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_SKILL)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_SKILL)->Send(true);
} }
void StatsFunctions::SendLevel(unsigned short pid) noexcept void StatsFunctions::SendLevel(unsigned short pid) noexcept
@ -507,7 +507,7 @@ void StatsFunctions::SendLevel(unsigned short pid) noexcept
Player *player; Player *player;
GET_PLAYER(pid, player, ); GET_PLAYER(pid, player, );
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_LEVEL)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_LEVEL)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_LEVEL)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_LEVEL)->Send(false);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_PLAYER_LEVEL)->Send(true); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_PLAYER_LEVEL)->Send(true);
} }

@ -273,56 +273,56 @@ void WorldFunctions::AddContainerItem() noexcept
void WorldFunctions::SendActorList() noexcept void WorldFunctions::SendActorList() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_ACTOR_LIST)->setEvent(&scriptEvent); mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_LIST)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_ACTOR_LIST)->Send(scriptEvent.guid); mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_LIST)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendActorAuthority() noexcept void WorldFunctions::SendActorAuthority() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_ACTOR_AUTHORITY)->setEvent(&scriptEvent); mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_AUTHORITY)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_ACTOR_AUTHORITY)->Send(scriptEvent.guid); mwmp::Networking::get().getActorPacketController()->GetPacket(ID_ACTOR_AUTHORITY)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendObjectDelete() noexcept void WorldFunctions::SendObjectDelete() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_DELETE)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_DELETE)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_DELETE)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_DELETE)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendObjectPlace() noexcept void WorldFunctions::SendObjectPlace() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_PLACE)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_PLACE)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_PLACE)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_PLACE)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendObjectScale() noexcept void WorldFunctions::SendObjectScale() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_SCALE)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_SCALE)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_SCALE)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_SCALE)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendObjectLock() noexcept void WorldFunctions::SendObjectLock() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_LOCK)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_LOCK)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_LOCK)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_LOCK)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendObjectUnlock() noexcept void WorldFunctions::SendObjectUnlock() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_UNLOCK)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_UNLOCK)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_OBJECT_UNLOCK)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_OBJECT_UNLOCK)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendDoorState() noexcept void WorldFunctions::SendDoorState() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_DOOR_STATE)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_DOOR_STATE)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_DOOR_STATE)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_DOOR_STATE)->Send(scriptEvent.guid);
} }
void WorldFunctions::SendContainer() noexcept void WorldFunctions::SendContainer() noexcept
{ {
mwmp::Networking::get().getWorldController()->GetPacket(ID_CONTAINER)->setEvent(&scriptEvent); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_CONTAINER)->setEvent(&scriptEvent);
mwmp::Networking::get().getWorldController()->GetPacket(ID_CONTAINER)->Send(scriptEvent.guid); mwmp::Networking::get().getWorldPacketController()->GetPacket(ID_CONTAINER)->Send(scriptEvent.guid);
} }
void WorldFunctions::SetHour(unsigned short pid, double hour) noexcept void WorldFunctions::SetHour(unsigned short pid, double hour) noexcept
@ -334,8 +334,8 @@ void WorldFunctions::SetHour(unsigned short pid, double hour) noexcept
player->month = -1; player->month = -1;
player->day = -1; player->day = -1;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_TIME)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_TIME)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_TIME)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_TIME)->Send(false);
} }
void WorldFunctions::SetMonth(unsigned short pid, int month) noexcept void WorldFunctions::SetMonth(unsigned short pid, int month) noexcept
@ -347,8 +347,8 @@ void WorldFunctions::SetMonth(unsigned short pid, int month) noexcept
player->month = month; player->month = month;
player->day = -1; player->day = -1;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_TIME)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_TIME)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_TIME)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_TIME)->Send(false);
} }
@ -361,6 +361,6 @@ void WorldFunctions::SetDay(unsigned short pid, int day) noexcept
player->month = -1; player->month = -1;
player->day = day; player->day = day;
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_TIME)->setPlayer(player); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_TIME)->setPlayer(player);
mwmp::Networking::get().getPlayerController()->GetPacket(ID_GAME_TIME)->Send(false); mwmp::Networking::get().getPlayerPacketController()->GetPacket(ID_GAME_TIME)->Send(false);
} }

@ -36,7 +36,7 @@ bool WorldProcessor::Process(RakNet::Packet &packet, BaseEvent &event) noexcept
if (processor.first == packet.data[0]) if (processor.first == packet.data[0])
{ {
Player *player = Players::getPlayer(packet.guid); Player *player = Players::getPlayer(packet.guid);
WorldPacket *myPacket = Networking::get().getWorldController()->GetPacket(packet.data[0]); WorldPacket *myPacket = Networking::get().getWorldPacketController()->GetPacket(packet.data[0]);
myPacket->setEvent(&event); myPacket->setEvent(&event);

@ -1,11 +1,11 @@
#ifndef OPENMW_PROCESSORACTORAUTHORITY_HPP #ifndef OPENMW_PROCESSORACTORAUTHORITY_HPP
#define OPENMW_PROCESSORACTORAUTHORITY_HPP #define OPENMW_PROCESSORACTORAUTHORITY_HPP
#include "apps/openmw-mp/WorldProcessor.hpp" #include "apps/openmw-mp/ActorProcessor.hpp"
namespace mwmp namespace mwmp
{ {
class ProcessorActorAuthority : public WorldProcessor class ProcessorActorAuthority : public ActorProcessor
{ {
public: public:
ProcessorActorAuthority() ProcessorActorAuthority()
@ -13,7 +13,7 @@ namespace mwmp
BPP_INIT(ID_ACTOR_AUTHORITY) BPP_INIT(ID_ACTOR_AUTHORITY)
} }
void Do(WorldPacket &packet, Player &player, BaseEvent &event) override void Do(ActorPacket &packet, Player &player, BaseEvent &event) override
{ {
packet.Send(true); packet.Send(true);
} }

@ -1,11 +1,11 @@
#ifndef OPENMW_PROCESSORACTORFRAME_HPP #ifndef OPENMW_PROCESSORACTORFRAME_HPP
#define OPENMW_PROCESSORACTORFRAME_HPP #define OPENMW_PROCESSORACTORFRAME_HPP
#include "apps/openmw-mp/WorldProcessor.hpp" #include "apps/openmw-mp/ActorProcessor.hpp"
namespace mwmp namespace mwmp
{ {
class ProcessorActorFrame : public WorldProcessor class ProcessorActorFrame : public ActorProcessor
{ {
public: public:
ProcessorActorFrame() ProcessorActorFrame()
@ -13,7 +13,7 @@ namespace mwmp
BPP_INIT(ID_ACTOR_FRAME) BPP_INIT(ID_ACTOR_FRAME)
} }
void Do(WorldPacket &packet, Player &player, BaseEvent &event) override void Do(ActorPacket &packet, Player &player, BaseEvent &event) override
{ {
// Send only to players who have the cell loaded // Send only to players who have the cell loaded
Cell *serverCell = CellController::get()->getCell(&event.cell); Cell *serverCell = CellController::get()->getCell(&event.cell);

@ -1,11 +1,11 @@
#ifndef OPENMW_PROCESSORACTORLIST_HPP #ifndef OPENMW_PROCESSORACTORLIST_HPP
#define OPENMW_PROCESSORACTORLIST_HPP #define OPENMW_PROCESSORACTORLIST_HPP
#include "apps/openmw-mp/WorldProcessor.hpp" #include "apps/openmw-mp/ActorProcessor.hpp"
namespace mwmp namespace mwmp
{ {
class ProcessorActorList : public WorldProcessor class ProcessorActorList : public ActorProcessor
{ {
public: public:
ProcessorActorList() ProcessorActorList()
@ -13,7 +13,7 @@ namespace mwmp
BPP_INIT(ID_ACTOR_LIST) BPP_INIT(ID_ACTOR_LIST)
} }
void Do(WorldPacket &packet, Player &player, BaseEvent &event) override void Do(ActorPacket &packet, Player &player, BaseEvent &event) override
{ {
LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "Received %s from %s", strPacketID.c_str(), player.npc.mName.c_str()); LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "Received %s from %s", strPacketID.c_str(), player.npc.mName.c_str());

@ -17,7 +17,7 @@ namespace mwmp
ProcessorPlayerAttack() ProcessorPlayerAttack()
{ {
BPP_INIT(ID_PLAYER_ATTACK) BPP_INIT(ID_PLAYER_ATTACK)
playerController = Networking::get().getPlayerController(); playerController = Networking::get().getPlayerPacketController();
} }
void Do(PlayerPacket &packet, Player &player) override void Do(PlayerPacket &packet, Player &player) override

@ -19,7 +19,7 @@ namespace mwmp
ProcessorPlayerCellChange() ProcessorPlayerCellChange()
{ {
BPP_INIT(ID_PLAYER_CELL_CHANGE) BPP_INIT(ID_PLAYER_CELL_CHANGE)
playerController = Networking::get().getPlayerController(); playerController = Networking::get().getPlayerPacketController();
} }
void Do(PlayerPacket &packet, Player &player) override void Do(PlayerPacket &packet, Player &player) override

@ -20,7 +20,7 @@ namespace mwmp
ProcessorPlayerCellState() ProcessorPlayerCellState()
{ {
BPP_INIT(ID_PLAYER_CELL_STATE) BPP_INIT(ID_PLAYER_CELL_STATE)
playerController = Networking::get().getPlayerController(); playerController = Networking::get().getPlayerPacketController();
} }
void Do(PlayerPacket &packet, Player &player) override void Do(PlayerPacket &packet, Player &player) override

@ -86,8 +86,8 @@ void Cell::updateLocal()
} }
} }
Main::get().getNetworking()->getWorldPacket(ID_ACTOR_FRAME)->setEvent(worldEvent); Main::get().getNetworking()->getActorPacket(ID_ACTOR_FRAME)->setEvent(worldEvent);
Main::get().getNetworking()->getWorldPacket(ID_ACTOR_FRAME)->Send(); Main::get().getNetworking()->getActorPacket(ID_ACTOR_FRAME)->Send();
} }
void Cell::updateDedicated(float dt) void Cell::updateDedicated(float dt)

@ -35,7 +35,8 @@
using namespace std; using namespace std;
using namespace mwmp; using namespace mwmp;
Networking::Networking(): peer(RakNet::RakPeerInterface::GetInstance()), playerController(peer), worldController(peer) Networking::Networking(): peer(RakNet::RakPeerInterface::GetInstance()), playerPacketController(peer),
actorPacketController(peer), worldPacketController(peer)
{ {
RakNet::SocketDescriptor sd; RakNet::SocketDescriptor sd;
@ -43,8 +44,9 @@ Networking::Networking(): peer(RakNet::RakPeerInterface::GetInstance()), playerC
RakNet::StartupResult b = peer->Startup(1,&sd, 1); RakNet::StartupResult b = peer->Startup(1,&sd, 1);
RakAssert(b==RAKNET_STARTED); RakAssert(b==RAKNET_STARTED);
playerController.SetStream(0, &bsOut); playerPacketController.SetStream(0, &bsOut);
worldController.SetStream(0, &bsOut); actorPacketController.SetStream(0, &bsOut);
worldPacketController.SetStream(0, &bsOut);
connected = 0; connected = 0;
} }
@ -246,7 +248,7 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
if (guid != myGuid) if (guid != myGuid)
pl = Players::getPlayer(guid); pl = Players::getPlayer(guid);
PlayerPacket *myPacket = playerController.GetPacket(packet->data[0]); PlayerPacket *myPacket = playerPacketController.GetPacket(packet->data[0]);
switch (packet->data[0]) switch (packet->data[0])
{ {
@ -575,8 +577,8 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
myPacket->Send(serverAddr); myPacket->Send(serverAddr);
getLocalPlayer()->updateDynamicStats(true); getLocalPlayer()->updateDynamicStats(true);
playerController.GetPacket(ID_PLAYER_DYNAMICSTATS)->setPlayer(getLocalPlayer()); playerPacketController.GetPacket(ID_PLAYER_DYNAMICSTATS)->setPlayer(getLocalPlayer());
playerController.GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(serverAddr); playerPacketController.GetPacket(ID_PLAYER_DYNAMICSTATS)->Send(serverAddr);
} }
else if (pl != 0) else if (pl != 0)
{ {
@ -822,7 +824,7 @@ void Networking::processPlayerPacket(RakNet::Packet *packet)
} }
} }
void Networking::processWorldPacket(RakNet::Packet *packet) void Networking::processActorPacket(RakNet::Packet *packet)
{ {
RakNet::RakNetGUID guid; RakNet::RakNetGUID guid;
RakNet::BitStream bsIn(&packet->data[1], packet->length, false); RakNet::BitStream bsIn(&packet->data[1], packet->length, false);
@ -833,7 +835,7 @@ void Networking::processWorldPacket(RakNet::Packet *packet)
if (guid != myGuid) if (guid != myGuid)
pl = Players::getPlayer(guid); pl = Players::getPlayer(guid);
WorldPacket *myPacket = worldController.GetPacket(packet->data[0]); ActorPacket *myPacket = actorPacketController.GetPacket(packet->data[0]);
myPacket->setEvent(&worldEvent); myPacket->setEvent(&worldEvent);
myPacket->Packet(&bsIn, false); myPacket->Packet(&bsIn, false);
@ -869,6 +871,29 @@ void Networking::processWorldPacket(RakNet::Packet *packet)
break; break;
} }
default:
LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "Unhandled ActorPacket with identifier %i has arrived", packet->data[0]);
}
}
void Networking::processWorldPacket(RakNet::Packet *packet)
{
RakNet::RakNetGUID guid;
RakNet::BitStream bsIn(&packet->data[1], packet->length, false);
bsIn.Read(guid);
DedicatedPlayer *pl = 0;
static RakNet::RakNetGUID myGuid = getLocalPlayer()->guid;
if (guid != myGuid)
pl = Players::getPlayer(guid);
WorldPacket *myPacket = worldPacketController.GetPacket(packet->data[0]);
myPacket->setEvent(&worldEvent);
myPacket->Packet(&bsIn, false);
switch (packet->data[0])
{
case ID_CONTAINER: case ID_CONTAINER:
{ {
MWWorld::CellStore *ptrCellStore = Main::get().getCellController()->getCell(worldEvent.cell); MWWorld::CellStore *ptrCellStore = Main::get().getCellController()->getCell(worldEvent.cell);
@ -1046,11 +1071,15 @@ void Networking::receiveMessage(RakNet::Packet *packet)
if (packet->length < 2) if (packet->length < 2)
return; return;
if (playerController.ContainsPacket(packet->data[0])) if (playerPacketController.ContainsPacket(packet->data[0]))
{ {
processPlayerPacket(packet); processPlayerPacket(packet);
} }
else if (worldController.ContainsPacket(packet->data[0])) else if (actorPacketController.ContainsPacket(packet->data[0]))
{
processActorPacket(packet);
}
else if (worldPacketController.ContainsPacket(packet->data[0]))
{ {
processWorldPacket(packet); processWorldPacket(packet);
} }
@ -1058,12 +1087,17 @@ void Networking::receiveMessage(RakNet::Packet *packet)
PlayerPacket *Networking::getPlayerPacket(RakNet::MessageID id) PlayerPacket *Networking::getPlayerPacket(RakNet::MessageID id)
{ {
return playerController.GetPacket(id); return playerPacketController.GetPacket(id);
}
ActorPacket *Networking::getActorPacket(RakNet::MessageID id)
{
return actorPacketController.GetPacket(id);
} }
WorldPacket *Networking::getWorldPacket(RakNet::MessageID id) WorldPacket *Networking::getWorldPacket(RakNet::MessageID id)
{ {
return worldController.GetPacket(id); return worldPacketController.GetPacket(id);
} }
LocalPlayer *Networking::getLocalPlayer() LocalPlayer *Networking::getLocalPlayer()

@ -11,8 +11,11 @@
#include "WorldEvent.hpp" #include "WorldEvent.hpp"
#include <components/openmw-mp/NetworkMessages.hpp> #include <components/openmw-mp/NetworkMessages.hpp>
#include <components/openmw-mp/Controllers/PlayerPacketController.hpp> #include <components/openmw-mp/Controllers/PlayerPacketController.hpp>
#include <components/openmw-mp/Controllers/ActorPacketController.hpp>
#include <components/openmw-mp/Controllers/WorldPacketController.hpp> #include <components/openmw-mp/Controllers/WorldPacketController.hpp>
#include <components/files/collections.hpp> #include <components/files/collections.hpp>
namespace mwmp namespace mwmp
@ -28,6 +31,7 @@ namespace mwmp
void update(); void update();
PlayerPacket *getPlayerPacket(RakNet::MessageID id); PlayerPacket *getPlayerPacket(RakNet::MessageID id);
ActorPacket *getActorPacket(RakNet::MessageID id);
WorldPacket *getWorldPacket(RakNet::MessageID id); WorldPacket *getWorldPacket(RakNet::MessageID id);
bool isDedicatedPlayer(const MWWorld::Ptr &ptr); bool isDedicatedPlayer(const MWWorld::Ptr &ptr);
@ -49,12 +53,16 @@ namespace mwmp
RakNet::SystemAddress serverAddr; RakNet::SystemAddress serverAddr;
RakNet::BitStream bsOut; RakNet::BitStream bsOut;
PlayerPacketController playerController; PlayerPacketController playerPacketController;
WorldPacketController worldController; ActorPacketController actorPacketController;
WorldPacketController worldPacketController;
WorldEvent worldEvent; WorldEvent worldEvent;
void processPlayerPacket(RakNet::Packet *packet); void processPlayerPacket(RakNet::Packet *packet);
void processActorPacket(RakNet::Packet *packet);
void processWorldPacket(RakNet::Packet *packet); void processWorldPacket(RakNet::Packet *packet);
void receiveMessage(RakNet::Packet *packet); void receiveMessage(RakNet::Packet *packet);
void preInit(std::vector<std::string> &content, Files::Collections &collections); void preInit(std::vector<std::string> &content, Files::Collections &collections);

@ -512,8 +512,8 @@ void WorldEvent::sendActors(MWWorld::CellStore* cellStore)
addObject(worldObject); addObject(worldObject);
} }
mwmp::Main::get().getNetworking()->getWorldPacket(ID_ACTOR_LIST)->setEvent(this); mwmp::Main::get().getNetworking()->getActorPacket(ID_ACTOR_LIST)->setEvent(this);
mwmp::Main::get().getNetworking()->getWorldPacket(ID_ACTOR_LIST)->Send(); mwmp::Main::get().getNetworking()->getActorPacket(ID_ACTOR_LIST)->Send();
} }
void WorldEvent::sendContainers(MWWorld::CellStore* cellStore) void WorldEvent::sendContainers(MWWorld::CellStore* cellStore)

@ -149,8 +149,10 @@ add_component_dir (version
add_component_dir (openmw-mp add_component_dir (openmw-mp
Log Utils Log Utils
Controllers/PlayerPacketController Controllers/WorldPacketController
Packets/BasePacket Packets/Player/PlayerPacket Packets/World/WorldPacket Controllers/PlayerPacketController Controllers/ActorPacketController Controllers/WorldPacketController
Packets/BasePacket Packets/Player/PlayerPacket Packets/Actor/ActorPacket Packets/World/WorldPacket
Packets/Player/PacketHandshake Packets/Player/PacketChatMessage Packets/Player/PacketHandshake Packets/Player/PacketChatMessage
@ -165,7 +167,7 @@ add_component_dir (openmw-mp
Packets/Player/PacketGUIBoxes Packets/Player/PacketTime Packets/Player/PacketGUIBoxes Packets/Player/PacketTime
Packets/World/PacketActorList Packets/World/PacketActorAuthority Packets/World/PacketActorFrame Packets/Actor/PacketActorList Packets/Actor/PacketActorAuthority Packets/Actor/PacketActorFrame
Packets/World/PacketObjectDelete Packets/World/PacketObjectPlace Packets/World/PacketObjectScale Packets/World/PacketObjectDelete Packets/World/PacketObjectPlace Packets/World/PacketObjectScale
Packets/World/PacketObjectLock Packets/World/PacketObjectUnlock Packets/World/PacketObjectMove Packets/World/PacketObjectLock Packets/World/PacketObjectUnlock Packets/World/PacketObjectMove

@ -0,0 +1,45 @@
#include <boost/shared_ptr.hpp>
#include <boost/foreach.hpp>
#include <boost/make_shared.hpp>
#include "../Packets/Actor/PacketActorList.hpp"
#include "../Packets/Actor/PacketActorAuthority.hpp"
#include "../Packets/Actor/PacketActorFrame.hpp"
#include "ActorPacketController.hpp"
template <typename T>
inline void AddPacket(mwmp::ActorPacketController::packets_t *packets, RakNet::RakPeerInterface *peer)
{
T *packet = new T(peer);
typedef mwmp::ActorPacketController::packets_t::value_type value_t;
packets->insert(value_t(packet->GetPacketID(), value_t::second_type(packet)));
}
mwmp::ActorPacketController::ActorPacketController(RakNet::RakPeerInterface *peer)
{
AddPacket<PacketActorList>(&packets, peer);
AddPacket<PacketActorAuthority>(&packets, peer);
AddPacket<PacketActorFrame>(&packets, peer);
}
mwmp::ActorPacket *mwmp::ActorPacketController::GetPacket(RakNet::MessageID id)
{
return packets[(unsigned char)id].get();
}
void mwmp::ActorPacketController::SetStream(RakNet::BitStream *inStream, RakNet::BitStream *outStream)
{
BOOST_FOREACH( packets_t::value_type &packet, packets )
packet.second->SetStreams(inStream, outStream);
}
bool mwmp::ActorPacketController::ContainsPacket(RakNet::MessageID id)
{
BOOST_FOREACH(packets_t::value_type &packet, packets) {
if (packet.first == id)
return true;
}
return false;
}

@ -0,0 +1,27 @@
#ifndef OPENMW_ACTORPACKETCONTROLLER_HPP
#define OPENMW_ACTORPACKETCONTROLLER_HPP
#include <RakPeerInterface.h>
#include "../Packets/Actor/ActorPacket.hpp"
#include <map>
#include <boost/shared_ptr.hpp>
namespace mwmp
{
class ActorPacketController
{
public:
ActorPacketController(RakNet::RakPeerInterface *peer);
ActorPacket *GetPacket(RakNet::MessageID id);
void SetStream(RakNet::BitStream *inStream, RakNet::BitStream *outStream);
bool ContainsPacket(RakNet::MessageID id);
typedef std::map<unsigned char, boost::shared_ptr<ActorPacket> > packets_t;
private:
packets_t packets;
};
}
#endif //OPENMW_WORLDPACKETCONTROLLER_HPP

@ -2,10 +2,6 @@
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#include <boost/make_shared.hpp> #include <boost/make_shared.hpp>
#include "../Packets/World/PacketActorList.hpp"
#include "../Packets/World/PacketActorAuthority.hpp"
#include "../Packets/World/PacketActorFrame.hpp"
#include "../Packets/World/PacketObjectDelete.hpp" #include "../Packets/World/PacketObjectDelete.hpp"
#include "../Packets/World/PacketObjectPlace.hpp" #include "../Packets/World/PacketObjectPlace.hpp"
#include "../Packets/World/PacketObjectScale.hpp" #include "../Packets/World/PacketObjectScale.hpp"
@ -37,10 +33,6 @@ inline void AddPacket(mwmp::WorldPacketController::packets_t *packets, RakNet::R
mwmp::WorldPacketController::WorldPacketController(RakNet::RakPeerInterface *peer) mwmp::WorldPacketController::WorldPacketController(RakNet::RakPeerInterface *peer)
{ {
AddPacket<PacketActorList>(&packets, peer);
AddPacket<PacketActorAuthority>(&packets, peer);
AddPacket<PacketActorFrame>(&packets, peer);
AddPacket<PacketObjectDelete>(&packets, peer); AddPacket<PacketObjectDelete>(&packets, peer);
AddPacket<PacketObjectPlace>(&packets, peer); AddPacket<PacketObjectPlace>(&packets, peer);
AddPacket<PacketObjectScale>(&packets, peer); AddPacket<PacketObjectScale>(&packets, peer);

@ -0,0 +1,25 @@
#include <components/openmw-mp/NetworkMessages.hpp>
#include <PacketPriority.h>
#include <RakPeer.h>
#include "ActorPacket.hpp"
using namespace mwmp;
ActorPacket::ActorPacket(RakNet::RakPeerInterface *peer) : BasePacket(peer)
{
packetID = 0;
priority = HIGH_PRIORITY;
reliability = RELIABLE_ORDERED;
this->peer = peer;
}
ActorPacket::~ActorPacket()
{
}
void ActorPacket::setEvent(BaseEvent *event)
{
this->event = event;
guid = event->guid;
}

@ -0,0 +1,30 @@
#ifndef OPENMW_ACTORPACKET_HPP
#define OPENMW_ACTORPACKET_HPP
#include <string>
#include <RakNetTypes.h>
#include <BitStream.h>
#include <PacketPriority.h>
#include <components/openmw-mp/Base/BaseEvent.hpp>
#include <components/openmw-mp/Packets/BasePacket.hpp>
namespace mwmp
{
class ActorPacket : public BasePacket
{
public:
ActorPacket(RakNet::RakPeerInterface *peer);
~ActorPacket();
void setEvent(BaseEvent *event);
protected:
BaseEvent *event;
};
}
#endif //OPENMW_ACTORPACKET_HPP

@ -3,14 +3,14 @@
using namespace mwmp; using namespace mwmp;
PacketActorAuthority::PacketActorAuthority(RakNet::RakPeerInterface *peer) : WorldPacket(peer) PacketActorAuthority::PacketActorAuthority(RakNet::RakPeerInterface *peer) : ActorPacket(peer)
{ {
packetID = ID_ACTOR_AUTHORITY; packetID = ID_ACTOR_AUTHORITY;
} }
void PacketActorAuthority::Packet(RakNet::BitStream *bs, bool send) void PacketActorAuthority::Packet(RakNet::BitStream *bs, bool send)
{ {
WorldPacket::Packet(bs, send); ActorPacket::Packet(bs, send);
if (!send) if (!send)
event->objectChanges.objects.clear(); event->objectChanges.objects.clear();

@ -1,11 +1,11 @@
#ifndef OPENMW_PACKETACTORAUTHORITY_HPP #ifndef OPENMW_PACKETACTORAUTHORITY_HPP
#define OPENMW_PACKETACTORAUTHORITY_HPP #define OPENMW_PACKETACTORAUTHORITY_HPP
#include <components/openmw-mp/Packets/World/WorldPacket.hpp> #include <components/openmw-mp/Packets/Actor/ActorPacket.hpp>
namespace mwmp namespace mwmp
{ {
class PacketActorAuthority : public WorldPacket class PacketActorAuthority : public ActorPacket
{ {
public: public:
PacketActorAuthority(RakNet::RakPeerInterface *peer); PacketActorAuthority(RakNet::RakPeerInterface *peer);

@ -4,14 +4,14 @@
using namespace mwmp; using namespace mwmp;
PacketActorFrame::PacketActorFrame(RakNet::RakPeerInterface *peer) : WorldPacket(peer) PacketActorFrame::PacketActorFrame(RakNet::RakPeerInterface *peer) : ActorPacket(peer)
{ {
packetID = ID_ACTOR_FRAME; packetID = ID_ACTOR_FRAME;
} }
void PacketActorFrame::Packet(RakNet::BitStream *bs, bool send) void PacketActorFrame::Packet(RakNet::BitStream *bs, bool send)
{ {
WorldPacket::Packet(bs, send); ActorPacket::Packet(bs, send);
if (!send) if (!send)
event->objectChanges.objects.clear(); event->objectChanges.objects.clear();

@ -1,11 +1,11 @@
#ifndef OPENMW_PACKETACTORFRAME_HPP #ifndef OPENMW_PACKETACTORFRAME_HPP
#define OPENMW_PACKETACTORFRAME_HPP #define OPENMW_PACKETACTORFRAME_HPP
#include <components/openmw-mp/Packets/World/WorldPacket.hpp> #include <components/openmw-mp/Packets/Actor/ActorPacket.hpp>
namespace mwmp namespace mwmp
{ {
class PacketActorFrame : public WorldPacket class PacketActorFrame : public ActorPacket
{ {
public: public:
PacketActorFrame(RakNet::RakPeerInterface *peer); PacketActorFrame(RakNet::RakPeerInterface *peer);

@ -3,14 +3,14 @@
using namespace mwmp; using namespace mwmp;
PacketActorList::PacketActorList(RakNet::RakPeerInterface *peer) : WorldPacket(peer) PacketActorList::PacketActorList(RakNet::RakPeerInterface *peer) : ActorPacket(peer)
{ {
packetID = ID_ACTOR_LIST; packetID = ID_ACTOR_LIST;
} }
void PacketActorList::Packet(RakNet::BitStream *bs, bool send) void PacketActorList::Packet(RakNet::BitStream *bs, bool send)
{ {
WorldPacket::Packet(bs, send); ActorPacket::Packet(bs, send);
RW(event->action, send); RW(event->action, send);

@ -1,11 +1,11 @@
#ifndef OPENMW_PACKETACTORLIST_HPP #ifndef OPENMW_PACKETACTORLIST_HPP
#define OPENMW_PACKETACTORLIST_HPP #define OPENMW_PACKETACTORLIST_HPP
#include <components/openmw-mp/Packets/World/WorldPacket.hpp> #include <components/openmw-mp/Packets/Actor/ActorPacket.hpp>
namespace mwmp namespace mwmp
{ {
class PacketActorList : public WorldPacket class PacketActorList : public ActorPacket
{ {
public: public:
PacketActorList(RakNet::RakPeerInterface *peer); PacketActorList(RakNet::RakPeerInterface *peer);
Loading…
Cancel
Save