forked from OpenMW/openmw
/
Player.cpp
135 lines (109 loc) · 2.38 KB
/
Player.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
//
// Created by koncord on 05.01.16.
//
#include "Player.hpp"
#include "Networking.hpp"
TPlayers Players::players;
TSlots Players::slots;
void Players::deletePlayer(RakNet::RakNetGUID guid)
{
LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "Deleting player with guid %lu",
guid.g);
if (players[guid] != 0)
{
LOG_APPEND(Log::LOG_INFO, "- Emptying slot %i",
players[guid]->getId());
slots[players[guid]->getId()] = 0;
delete players[guid];
players.erase(guid);
}
}
void Players::newPlayer(RakNet::RakNetGUID guid)
{
LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "Creating new player with guid %lu",
guid.g);
players[guid] = new Player(guid);
players[guid]->getCell()->blank();
players[guid]->Npc()->blank();
players[guid]->NpcStats()->blank();
players[guid]->CreatureStats()->blank();
players[guid]->charClass.blank();
for (unsigned int i = 0; i < mwmp::Networking::get().maxConnections(); i++)
{
if (slots[i] == 0)
{
LOG_APPEND(Log::LOG_INFO, "- Storing in slot %i",
i);
slots[i] = players[guid];
slots[i]->setId(i);
break;
}
}
}
Player *Players::getPlayer(RakNet::RakNetGUID guid)
{
return players[guid];
}
TPlayers *Players::getPlayers()
{
return &players;
}
Player::Player(RakNet::RakNetGUID guid) : BasePlayer(guid)
{
handshakeState = false;
loadState = NOTLOADED;
lastAttacker = 0;
}
Player::~Player()
{
}
unsigned short Player::getId()
{
return id;
}
void Player::setId(unsigned short id)
{
this->id = id;
}
void Player::setHandshake()
{
handshakeState = true;
}
bool Player::isHandshaked()
{
return handshakeState;
}
void Player::setLoadState(int state)
{
loadState = state;
}
int Player::getLoadState()
{
return loadState;
}
Player *Players::getPlayer(unsigned short id)
{
if (slots.find(id) == slots.end())
return nullptr;
return slots[id];
}
void Player::setLastAttackerId(unsigned short pid)
{
lastAttacker = pid;
}
void Player::resetLastAttacker()
{
lastAttacker = id;
}
unsigned short Player::getLastAttackerId()
{
return lastAttacker;
}
void Player::setLastAttackerTime(std::chrono::steady_clock::time_point time)
{
lastAttackerTime = time;
}
std::chrono::steady_clock::time_point Player::getLastAttackerTime()
{
return lastAttackerTime;
}