summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2023-11-01 19:49:56 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2023-11-01 19:49:56 +0100
commit4a5353adf6798043c144eb9014341bbffac3c42c (patch)
tree8c27a2a731860036436a554ea31f01d87ba629ef /src
parent7ce4768a475058f1f78dce5ebdcdd72bfc05776f (diff)
generate id server side
Diffstat (limited to 'src')
-rw-r--r--src/game.c28
-rw-r--r--src/throwables.c5
2 files changed, 25 insertions, 8 deletions
diff --git a/src/game.c b/src/game.c
index 8bf9106..ffe0c0e 100644
--- a/src/game.c
+++ b/src/game.c
@@ -27,7 +27,6 @@ static u32 get_session_id() {
void connect_to_server(char* ip, char* port) {
client_incomming_allocator = create_allocator(MAX_NETWORK_BUFFER_SIZE);
- player_id = get_session_id();
messages_received_on_client = array_create(sizeof(protocol_generic_message*));
array_reserve(&messages_received_on_client, 100);
@@ -35,8 +34,6 @@ void connect_to_server(char* ip, char* port) {
global_state.client = network_connect_to_server(ip, port);
global_state.client->on_message = client_on_message_received;
- log_infox("Session id: %u", player_id);
-
if (global_state.server) {
spawn_player(player_id, (network_client){0, false, 0, "Host"});
global_state.network_state = CONNECTED;
@@ -45,6 +42,7 @@ void connect_to_server(char* ip, char* port) {
if (global_state.client->is_connected) {
global_state.network_state = WAITING_FOR_ID;
+ player_id = get_session_id();
network_message message = create_protocol_get_id_up(player_id);
add_message_to_outgoing_queuex(message, *global_state.client);
}
@@ -121,12 +119,27 @@ static void set_ping_for_player(protocol_generic_message* msg) {
for (int i = 0; i < MAX_PLAYERS; i++) {
player p = players[i];
if (p.client.ConnectSocket == msg->client.ConnectSocket) {
- players[i].ping = diff;
+ players[i].ping = diff;
return;
}
}
}
+static u32 get_id_from_ip(network_client client) {
+ u32 result = 0;
+ int i = 0;
+ while (client.ip[i] != '\0') {
+ if (client.ip[i] < '0' || client.ip[i] > '9') {
+ i++;
+ continue;
+ }
+ result = result * 10 + (client.ip[i] - '0');
+ i++;
+ }
+
+ return result;
+}
+
float update_timer = 0.0f;
void update_server(platform_window* window) {
logic_update_time = platform_get_time(TIME_FULL, TIME_NS);
@@ -141,9 +154,10 @@ void update_server(platform_window* window) {
{
case MESSAGE_GET_ID_UPSTREAM: {
protocol_get_id_upstream* m = (protocol_get_id_upstream*)msg->message;
- add_message_to_outgoing_queuex(create_protocol_get_id_down(m->id), msg->client);
- spawn_player(m->id, msg->client);
- log_info("Player connected to server");
+ u32 new_id = get_id_from_ip(msg->client);
+ add_message_to_outgoing_queuex(create_protocol_get_id_down(new_id), msg->client);
+ spawn_player(new_id, msg->client);
+ log_infox("Player connected to server / ip: %s id: %d", msg->client.ip, new_id);
} break;
case MESSAGE_USER_MOVED: {
diff --git a/src/throwables.c b/src/throwables.c
index c18d410..f874bab 100644
--- a/src/throwables.c
+++ b/src/throwables.c
@@ -91,7 +91,10 @@ void explode_grenade(throwable t) {
if (dist_between_grenade_and_zombie > max_explosion_range) continue;
float damage_multiplier = 1.0f - (dist_between_grenade_and_zombie / max_explosion_range);
- hit_zombie(i, t.damage*damage_multiplier);
+ if (hit_zombie(i, t.damage*damage_multiplier)) {
+ player* p = get_player_by_id(t.player_id);
+ if (p) p->kills++;
+ }
}
}
}