summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2023-11-04 13:41:58 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2023-11-04 13:41:58 +0100
commit9f57cd3ec64a3dc98d4ffe406f630963e82d6935 (patch)
treecccbc468af075aa1006903857f1e1e66b1b92818 /src
parent7cebd14ef316460d6929053ba27c3ad9f1f468bb (diff)
fix client movement stutter
Diffstat (limited to 'src')
-rw-r--r--src/game.c11
-rw-r--r--src/players.c35
2 files changed, 14 insertions, 32 deletions
diff --git a/src/game.c b/src/game.c
index a32142d..90ce7a5 100644
--- a/src/game.c
+++ b/src/game.c
@@ -181,7 +181,7 @@ void update_server(platform_window* window) {
case MESSAGE_USER_MOVED: {
protocol_move* move_msg = (protocol_move*)msg->message;
- move_user(window, move_msg->id, move_msg->move, move_msg->delta);
+ if (move_msg->id != player_id) move_user(window, move_msg->id, move_msg->move, move_msg->delta);
} break;
case MESSAGE_USER_LOOK: {
@@ -215,7 +215,8 @@ void update_server(platform_window* window) {
update_spawners_server();
update_drops_server();
update_wallitems_server();
- update_throwables_server();
+ update_throwables_server();
+ update_zombie_chunks();
broadcast_players = platform_get_time(TIME_FULL, TIME_NS);
update_players_server();
@@ -354,10 +355,8 @@ static void move_camera(platform_window* window) {
_global_camera.x += dirx*speedx;
_global_camera.y += diry*speedy;
-
//_global_camera.x = _next_camera_pos.x;
//_global_camera.y = _next_camera_pos.y;
- log_infox("%.1f %.1f", speedx, speedy);
}
void update_game(platform_window* window) {
@@ -369,12 +368,10 @@ void update_game(platform_window* window) {
else {
update_client(window);
}
-
- update_zombie_chunks();
if (global_state.network_state == CONNECTED) {
take_player_input(window);
-
+
draw_grid(window);
draw_wallitems(window);
draw_zombie_chunks(window);
diff --git a/src/players.c b/src/players.c
index a01a962..8e6f14e 100644
--- a/src/players.c
+++ b/src/players.c
@@ -172,33 +172,23 @@ void take_player_input(platform_window* window) {
if (keyboard_is_key_down(KEY_A)) {
network_message message = create_protocol_user_moved(MOVE_LEFT, player_id);
add_message_to_outgoing_queuex(message, *global_state.client);
+ move_user(window, player_id,MOVE_LEFT, update_delta);
}
if (keyboard_is_key_down(KEY_D)) {
network_message message = create_protocol_user_moved(MOVE_RIGHT, player_id);
add_message_to_outgoing_queuex(message, *global_state.client);
+ move_user(window, player_id,MOVE_RIGHT, update_delta);
}
if (keyboard_is_key_down(KEY_W)) {
network_message message = create_protocol_user_moved(MOVE_UP, player_id);
add_message_to_outgoing_queuex(message, *global_state.client);
-
- // if (keyboard_is_key_down(KEY_A)) {
- // p->direction = DIRECTION_TOPLEFT;
- // }
- // else if (keyboard_is_key_down(KEY_D)) {
- // p->direction = DIRECTION_TOPRIGHT;
- // }
+ move_user(window, player_id,MOVE_UP, update_delta);
}
if (keyboard_is_key_down(KEY_S)) {
network_message message = create_protocol_user_moved(MOVE_DOWN, player_id);
add_message_to_outgoing_queuex(message, *global_state.client);
-
- // if (keyboard_is_key_down(KEY_A)) {
- // p->direction = DIRECTION_BOTTOMLEFT;
- // }
- // else if (keyboard_is_key_down(KEY_D)) {
- // p->direction = DIRECTION_BOTTOMRIGHT;
- // }
+ move_user(window, player_id,MOVE_DOWN, update_delta);
}
@@ -301,6 +291,8 @@ void update_players_server() {
void draw_players(platform_window* window) {
float size = get_player_size_in_tile();
+ map_info info = get_map_info(window);
+
for (int i = 0; i < MAX_PLAYERS; i++) {
if (!players[i].active) continue;
@@ -310,7 +302,7 @@ void draw_players(platform_window* window) {
players[i].height = height;
box box = get_render_box_of_square(window, (vec3f){players[i].playerx, players[i].playery, height}, (vec3f){size,size,1.0f});
-
+
/*
render_quad_with_outline(box.tl_d, box.tr_d, box.bl_d, box.br_d, rgb(200,150,120));
render_quad_with_outline(box.tl_u, box.tr_u, box.bl_u, box.br_u, rgb(200,150,120));
@@ -324,18 +316,11 @@ void draw_players(platform_window* window) {
box.br_d.x, box.br_d.y,
box.tr_u.x, box.tr_u.y,
frame.tl, frame.tr, frame.bl, frame.br);
-
- int size = get_tile_width(window) / 2;
- map_info info = get_map_info(window);
-
- float player_render_x = box.tl_u.x;//players[i].playerx*info.tile_width + (players[i].playery*info.px_incline);
- float player_render_y = box.tl_u.y;//players[i].playery*info.tile_height - (height*info.px_raised_per_h);
+
+ float player_render_x = box.tl_u.x;
+ float player_render_y = box.tl_u.y;
players[i].gun_height = height+0.5;
- //float gun_render_x = players[i].gunx*info.tile_width + (players[i].guny*info.px_incline);
- //float gun_render_y = players[i].guny*info.tile_height - (players[i].gun_height*info.px_raised_per_h);
-
- //renderer->render_rectangle(gun_render_x, gun_render_y, size/4, size/4, rgb(20,255,20));
if (players[i].connection_state == DISCONNECTED) {
float icon_h = (box.tr_u.x - box.tl_u.x)/2;