update IPC data structure + temporary data
This commit is contained in:
parent
ef8d0bc527
commit
f65fdd1468
27
src/ipc.cpp
27
src/ipc.cpp
@ -135,6 +135,33 @@ void UpdateServerAddress(bool shutdown) {
|
|||||||
strncpy(data.server, s_addr, sizeof(data.server));
|
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() {
|
void StoreClientData() {
|
||||||
UpdateServerAddress();
|
UpdateServerAddress();
|
||||||
peer_t::MutexLock lock(peer);
|
peer_t::MutexLock lock(peer);
|
||||||
|
11
src/ipc.h
11
src/ipc.h
@ -49,12 +49,23 @@ struct user_data_s {
|
|||||||
char name[32];
|
char name[32];
|
||||||
char server[22];
|
char server[22];
|
||||||
unsigned friendid;
|
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>;
|
using peer_t = cat_ipc::Peer<server_data_s, user_data_s>;
|
||||||
|
|
||||||
extern peer_t* peer;
|
extern peer_t* peer;
|
||||||
|
|
||||||
|
void UpdateTemporaryData();
|
||||||
void UpdateServerAddress(bool shutdown = false);
|
void UpdateServerAddress(bool shutdown = false);
|
||||||
void StoreClientData();
|
void StoreClientData();
|
||||||
void UpdatePlayerlist();
|
void UpdatePlayerlist();
|
||||||
|
Reference in New Issue
Block a user