1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-24 20:23:51 +00:00
openmw-tes3mp/apps/openmw/mwmp/processors/player/ProcessorUserDisconnected.hpp

48 lines
1.5 KiB
C++
Raw Normal View History

2017-04-16 07:00:25 +00:00
#ifndef OPENMW_PROCESSORUSERDISCONNECTED_HPP
#define OPENMW_PROCESSORUSERDISCONNECTED_HPP
2017-06-06 16:06:10 +00:00
#include "../PlayerProcessor.hpp"
2019-12-02 17:08:03 +00:00
#include <components/openmw-mp/Utils.hpp>
#include <apps/openmw/mwbase/environment.hpp>
2017-04-16 07:00:25 +00:00
#include "apps/openmw/mwstate/statemanagerimp.hpp"
namespace mwmp
{
class ProcessorUserDisconnected final: public PlayerProcessor
2017-04-16 07:00:25 +00:00
{
public:
ProcessorUserDisconnected()
{
BPP_INIT(ID_USER_DISCONNECTED)
avoidReading = true;
}
virtual void Do(PlayerPacket &packet, BasePlayer *player)
{
if (isLocal())
MWBase::Environment::get().getStateManager()->requestQuit();
else if (player != 0)
2019-12-02 17:08:03 +00:00
{
mwmp::LocalPlayer *localPlayer = mwmp::Main::get().getLocalPlayer();
for (std::vector<RakNet::RakNetGUID>::iterator iter = localPlayer->alliedPlayers.begin(); iter != localPlayer->alliedPlayers.end(); )
2019-12-02 17:08:03 +00:00
{
if (*iter == guid)
{
DedicatedPlayer *dedicatedPlayer = PlayerList::getPlayer(guid);
LOG_APPEND(TimedLog::LOG_INFO, "- Deleting %s from our allied players", dedicatedPlayer->npc.mName.c_str());
iter = localPlayer->alliedPlayers.erase(iter);
2019-12-02 17:08:03 +00:00
}
else
++iter;
}
PlayerList::deletePlayer(guid);
2019-12-02 17:08:03 +00:00
}
2017-04-16 07:00:25 +00:00
}
};
}
#endif //OPENMW_PROCESSORUSERDISCONNECTED_HPP