generated from AfonsoCMSousa/CPP-Template
Madjor Fix: New Player data overwrites old/connected players
This commit is contained in:
parent
48091f826e
commit
32b496b596
BIN
PlayerTracker
BIN
PlayerTracker
Binary file not shown.
@ -17,7 +17,7 @@
|
||||
#include "server_structs.h"
|
||||
#include "socket.h"
|
||||
|
||||
#define DEBUG_CAR_INFO 0
|
||||
#define DEBUG_CAR_INFO 1
|
||||
|
||||
const char *API_SOCKET_PATH = "/tmp/ACplayer_socket";
|
||||
|
||||
@ -378,7 +378,21 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
// Store player player into the respective Index
|
||||
if (update.carID < MAX_PLAYERS) {
|
||||
memcpy(&players[update.carID], &update, sizeof(carAtributes));
|
||||
players[update.carID].isConnected = update.isConnected;
|
||||
players[update.carID].isLoading = update.isLoading;
|
||||
players[update.carID].carID = update.carID;
|
||||
|
||||
strncpy(players[update.carID].driver_GUID, update.driver_GUID, 63);
|
||||
strncpy(players[update.carID].driver_name, update.driver_name, 63);
|
||||
strncpy(players[update.carID].driver_team, update.driver_team, 63);
|
||||
strncpy(players[update.carID].car_model, update.car_model, 63);
|
||||
strncpy(players[update.carID].car_skin, update.car_skin, 63);
|
||||
|
||||
players[update.carID].driver_GUID[63] = '\0';
|
||||
players[update.carID].driver_name[63] = '\0';
|
||||
players[update.carID].driver_team[63] = '\0';
|
||||
players[update.carID].car_model[63] = '\0';
|
||||
players[update.carID].car_skin[63] = '\0';
|
||||
}
|
||||
update_api_packet(trackInfo, players);
|
||||
break;
|
||||
@ -408,7 +422,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
update.isConnected = 0; // Mark as disconnected
|
||||
current_packet.connected_players--;
|
||||
if (current_packet.connected_players < 0) {
|
||||
if (current_packet.connected_players > MAX_PLAYERS) {
|
||||
current_packet.connected_players = 0;
|
||||
}
|
||||
|
||||
@ -420,7 +434,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
// Store player player into the respective Index
|
||||
if (update.carID < MAX_PLAYERS) {
|
||||
players[update.carID].isConnected = 0; // Mark disconnected
|
||||
players[update.carID].isConnected = 0; // Mark disconnected
|
||||
players[update.carID].isLoading = 0;
|
||||
}
|
||||
update_api_packet(trackInfo, players);
|
||||
@ -457,6 +471,10 @@ int main(int argc, char *argv[]) {
|
||||
players[update.carID].carGear = update.carGear;
|
||||
players[update.carID].carRPM = update.carRPM;
|
||||
players[update.carID].normalizedSplinePos = update.normalizedSplinePos;
|
||||
|
||||
players[update.carID].isConnected = update.isConnected;
|
||||
players[update.carID].isLoading = update.isLoading;
|
||||
players[update.carID].carID = update.carID;
|
||||
}
|
||||
|
||||
update_api_packet(trackInfo, players);
|
||||
@ -494,7 +512,22 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
// Store player player into the respective Index
|
||||
if (update.carID < MAX_PLAYERS) {
|
||||
memcpy(&players[update.carID], &update, sizeof(carAtributes));
|
||||
|
||||
players[update.carID].isConnected = update.isConnected;
|
||||
players[update.carID].isLoading = update.isLoading;
|
||||
players[update.carID].carID = update.carID;
|
||||
|
||||
strncpy(players[update.carID].driver_GUID, update.driver_GUID, 63);
|
||||
strncpy(players[update.carID].driver_name, update.driver_name, 63);
|
||||
strncpy(players[update.carID].driver_team, update.driver_team, 63);
|
||||
strncpy(players[update.carID].car_model, update.car_model, 63);
|
||||
strncpy(players[update.carID].car_skin, update.car_skin, 63);
|
||||
|
||||
players[update.carID].driver_GUID[63] = '\0';
|
||||
players[update.carID].driver_name[63] = '\0';
|
||||
players[update.carID].driver_team[63] = '\0';
|
||||
players[update.carID].car_model[63] = '\0';
|
||||
players[update.carID].car_skin[63] = '\0';
|
||||
}
|
||||
|
||||
update_api_packet(trackInfo, players);
|
||||
@ -574,7 +607,8 @@ int main(int argc, char *argv[]) {
|
||||
update.carID = read_uint8((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
|
||||
// TEST: Possiblity of lap_time not behing correct
|
||||
// TODO: Verify with actual server
|
||||
// TODO: Verify with actual serve
|
||||
// SOLUTION: Server sends all times, lap_times and lap counts in big-endian format
|
||||
update.lap_time = read_uint32((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
update.cuts = read_uint32((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
|
||||
@ -635,17 +669,35 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
// TODO: possible iRacing style impact severity system
|
||||
// With X velues and (e.g >5 m/s = 0x, >10 m/s = 2x, >15 m/s = 4x) && Blackflag limits (e.g x17 = DQ)
|
||||
|
||||
|
||||
// FIX: read_float doesnt work, but memcpy does... weird...
|
||||
float impact_speed = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
postion world_pos = {0, 0, 0};
|
||||
world_pos.x = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
/* world_pos.x = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
world_pos.y = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
world_pos.z = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
*/
|
||||
|
||||
memcpy(&world_pos.x, buffer + offset, sizeof(float));
|
||||
offset += sizeof(float);
|
||||
memcpy(&world_pos.y, buffer + offset, sizeof(float));
|
||||
offset += sizeof(float);
|
||||
memcpy(&world_pos.z, buffer + offset, sizeof(float));
|
||||
offset += sizeof(float);
|
||||
|
||||
postion rel_pos = {0, 0, 0};
|
||||
/*
|
||||
rel_pos.x = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
rel_pos.y = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
rel_pos.z = read_float((const u_int8_t *)buffer, recv_bytes, &offset, &ok);
|
||||
*/
|
||||
|
||||
memcpy(&rel_pos.x, buffer + offset, sizeof(float));
|
||||
offset += sizeof(float);
|
||||
memcpy(&rel_pos.y, buffer + offset, sizeof(float));
|
||||
offset += sizeof(float);
|
||||
memcpy(&rel_pos.z, buffer + offset, sizeof(float));
|
||||
offset += sizeof(float);
|
||||
|
||||
printf("\tImpact Speed: %.2f m/s\n", impact_speed);
|
||||
printf("\tWorld Position: X: %.2f Y: %.2f Z: %.2f\n", world_pos.x, world_pos.y, world_pos.z);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user