update IPC data structure + temporary data

This commit is contained in:
nullifiedcat 2017-07-29 19:49:27 +03:00
parent ef8d0bc527
commit f65fdd1468
2 changed files with 38 additions and 0 deletions

View File

@ -135,6 +135,33 @@ void UpdateServerAddress(bool shutdown) {
strncpy(data.server, s_addr, sizeof(data.server));
}
void UpdateTemporaryData() {
user_data_s& data = peer->memory->peer_user_data[peer->client_id];
data.connected = g_IEngine->IsInGame();
if (data.connected) {
IClientEntity* player = g_IEntityList->GetClientEntity(g_IEngine->GetLocalPlayer());
if (player) {
data.good = true;
data.health = NET_INT(player, netvar.iHealth);
data.health_max = g_pPlayerResource->GetMaxHealth(LOCAL_E);
data.clazz = g_pPlayerResource->GetClass(LOCAL_E);
data.life_state = NET_BYTE(player, netvar.iLifeState);
data.score = g_pPlayerResource->GetScore(g_IEngine->GetLocalPlayer());
if (data.last_score != data.score) {
if (data.last_score > data.score) {
data.total_score += data.score;
} else {
data.total_score += (data.score - data.last_score);
}
data.last_score = data.score;
}
data.team = g_pPlayerResource->GetTeam(g_IEngine->GetLocalPlayer());
} else {
data.good = false;
}
}
}
void StoreClientData() {
UpdateServerAddress();
peer_t::MutexLock lock(peer);

View File

@ -49,12 +49,23 @@ struct user_data_s {
char name[32];
char server[22];
unsigned friendid;
bool connected;
bool good;
int health;
int health_max;
char life_state;
int team;
int clazz;
int score;
int last_score;
int total_score;
};
using peer_t = cat_ipc::Peer<server_data_s, user_data_s>;
extern peer_t* peer;
void UpdateTemporaryData();
void UpdateServerAddress(bool shutdown = false);
void StoreClientData();
void UpdatePlayerlist();