1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 23:19:56 +00:00
openmw-tes3mp/apps/openmw-mp/Player.hpp

93 lines
2.1 KiB
C++
Raw Normal View History

//
// Created by koncord on 05.01.16.
//
#ifndef OPENMW_PLAYER_HPP
#define OPENMW_PLAYER_HPP
#include <map>
#include <string>
#include <chrono>
#include <RakNetTypes.h>
#include <components/esm/npcstats.hpp>
#include <components/esm/cellid.hpp>
#include <components/esm/loadnpc.hpp>
#include <components/esm/loadcell.hpp>
2016-08-18 22:32:39 +00:00
#include <components/openmw-mp/Log.hpp>
#include <components/openmw-mp/Base/BasePlayer.hpp>
#include <components/openmw-mp/Packets/Player/PlayerPacket.hpp>
2017-02-19 05:26:42 +00:00
#include "Cell.hpp"
struct Player;
typedef std::map<RakNet::RakNetGUID, Player*> TPlayers;
typedef std::map<unsigned short, Player*> TSlots;
class Players
{
public:
static void newPlayer(RakNet::RakNetGUID guid);
static void deletePlayer(RakNet::RakNetGUID guid);
static Player *getPlayer(RakNet::RakNetGUID guid);
static Player *getPlayer(unsigned short id);
static TPlayers *getPlayers();
private:
static TPlayers players;
static TSlots slots;
};
class Player : public mwmp::BasePlayer
{
2017-02-19 05:26:42 +00:00
friend class Cell;
unsigned short id;
public:
2016-09-18 07:52:13 +00:00
enum
{
NOTLOADED=0,
LOADED,
POSTLOADED
};
Player(RakNet::RakNetGUID guid);
unsigned short getId();
void setId(unsigned short id);
bool isHandshaked();
void setHandshake();
void setLoadState(int state);
int getLoadState();
2016-09-18 03:48:08 +00:00
void setLastAttackerId(unsigned short pid);
2016-10-08 07:15:43 +00:00
void resetLastAttacker();
unsigned short getLastAttackerId();
void setLastAttackerTime(std::chrono::steady_clock::time_point time);
std::chrono::steady_clock::time_point getLastAttackerTime();
2016-10-08 07:15:43 +00:00
virtual ~Player();
CellController::TContainer *getCells();
void sendToLoaded(mwmp::PlayerPacket *myPacket);
2017-02-19 05:26:42 +00:00
void forEachLoaded(std::function<void(Player *pl, Player *other)> func);
2017-02-19 09:42:39 +00:00
public:
mwmp::InventoryChanges inventoryChangesBuffer;
mwmp::SpellbookChanges spellbookChangesBuffer;
mwmp::JournalChanges journalChangesBuffer;
private:
2017-02-19 05:26:42 +00:00
CellController::TContainer cells;
bool handshakeState;
int loadState;
2016-10-08 07:15:43 +00:00
unsigned short lastAttacker;
std::chrono::steady_clock::time_point lastAttackerTime;
};
#endif //OPENMW_PLAYER_HPP