diff options
| author | Aldrik Ramaekers <aldrik@amftech.nl> | 2022-12-18 13:37:16 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@amftech.nl> | 2022-12-18 13:37:16 +0100 |
| commit | 40027e44e5d0f0040238cfc1bd6a8d80c17c54fb (patch) | |
| tree | 98206731b8a27885d212333ef7b593ab664f5148 | |
| parent | 1ac44d4ec6b6b51fefe6ca50ef82d5d2fc1f6dfb (diff) | |
minor changes
| -rw-r--r-- | build/zombies.exe | bin | 1748007 -> 1748556 bytes | |||
| -rw-r--r-- | include/drops.h | 2 | ||||
| -rw-r--r-- | include/overlay.h | 2 | ||||
| -rw-r--r-- | include/players.h | 2 | ||||
| -rw-r--r-- | include/protocol.h | 1 | ||||
| -rw-r--r-- | main.c | 2 | ||||
| -rw-r--r-- | src/bullets.c | 4 | ||||
| -rw-r--r-- | src/drops.c | 21 | ||||
| -rw-r--r-- | src/game.c | 13 | ||||
| -rw-r--r-- | src/objects.c | 8 | ||||
| -rw-r--r-- | src/overlay.c | 8 | ||||
| -rw-r--r-- | src/players.c | 12 | ||||
| -rw-r--r-- | src/protocol.c | 1 |
13 files changed, 49 insertions, 27 deletions
diff --git a/build/zombies.exe b/build/zombies.exe Binary files differindex e6928ea..af6cba0 100644 --- a/build/zombies.exe +++ b/build/zombies.exe diff --git a/include/drops.h b/include/drops.h index e7ab661..aa48e24 100644 --- a/include/drops.h +++ b/include/drops.h @@ -25,6 +25,8 @@ typedef struct t_drop { #define MAX_DROPS 50 drop drops[MAX_DROPS] = {0}; +#define DROP_MAX_DURATION (4.0f) +#define DROP_FADE_TIME (2.0f) void update_drops(); void draw_drops(platform_window* window); diff --git a/include/overlay.h b/include/overlay.h index 7441003..de7410c 100644 --- a/include/overlay.h +++ b/include/overlay.h @@ -3,6 +3,8 @@ #include <projectbase/project_base.h> +u64 server_update_time = 0; + void draw_overlay(platform_window* window); #endif
\ No newline at end of file diff --git a/include/players.h b/include/players.h index ce88688..f76e620 100644 --- a/include/players.h +++ b/include/players.h @@ -42,7 +42,7 @@ void draw_players(platform_window* window); void draw_bullets(platform_window* window); object check_if_player_collided_with_object(platform_window* window, player p); float get_player_size(platform_window* window); -void move_user(platform_window* window, u32 id, protocol_move_type move); +void move_user(platform_window* window, u32 id, protocol_move_type move, float delta); void update_players_server(); void spawn_player(u32 id, network_client client); diff --git a/include/protocol.h b/include/protocol.h index a49aaab..0ec87d7 100644 --- a/include/protocol.h +++ b/include/protocol.h @@ -73,6 +73,7 @@ typedef struct t_protocol_move network_message_type type; protocol_move_type move; u32 id; + float delta; } protocol_move; typedef struct t_protocol_user_look @@ -69,7 +69,7 @@ int main(int argc, char **argv) platform_init(argc, argv, CONFIG_DIRECTORY); settings_set_number("USE_GPU", 1); - platform_window *window = platform_open_window_ex("Zombies!", 1920, 1080, 1920, 1080, 500, 500, FLAGS_MINIMIZE, update_func, 0, 0, 0, 0); + platform_window *window = platform_open_window_ex("Zombies!", 800, 600, 1920, 1080, 500, 500, FLAGS_MINIMIZE, update_func, 0, 0, 0, 0); platform_toggle_vsync(window, false); //platform_toggle_fullscreen(window, true); diff --git a/src/bullets.c b/src/bullets.c index 8012c83..704728e 100644 --- a/src/bullets.c +++ b/src/bullets.c @@ -182,6 +182,8 @@ static bool check_if_bullet_collided_with_ground(bullet *b, platform_window* win void clear_bullets() { for (int i = 0; i < max_bullets; i++) { + if (!bullets[i].active) continue; + bullets[i].alive_time += update_delta; if (bullets[i].alive_time >= 0.05f) { bullets[i].active = false; } @@ -213,8 +215,6 @@ void update_bullets(platform_window* window) { if (check_if_bullet_collided_with_zombie(b, window, true)) { p->kills++; } - - bullets[i].alive_time += update_delta; } } diff --git a/src/drops.c b/src/drops.c index e5e1d7b..881c207 100644 --- a/src/drops.c +++ b/src/drops.c @@ -31,6 +31,10 @@ void update_drops() { handle_drop_pickup(p, &drops[i]); } } + + if (b.time_active >= DROP_MAX_DURATION) { + drops[i].active = false; + } } } @@ -40,23 +44,22 @@ void draw_drops(platform_window* window) { if (!b.active) continue; DROP_RENDER_DEPTH((int)(b.position.y)); + + int alpha = 255; + if (b.time_active >= DROP_MAX_DURATION - DROP_FADE_TIME) { + alpha = 255 - ((b.time_active - (DROP_MAX_DURATION - DROP_FADE_TIME)) / DROP_FADE_TIME)*255; + } b.position.z = b.start_h; b.size.z = 0.0f; b.position.y += 0.2f; b.position.x -= 0.07f; box shadow_box = get_render_box_of_square(window, b.position, b.size); - render_quad_with_outline(shadow_box.tl_d, shadow_box.tr_d, shadow_box.bl_d, shadow_box.br_d, rgba(0,0,0,120)); - render_quad_with_outline(shadow_box.tl_u, shadow_box.tr_u, shadow_box.bl_u, shadow_box.br_u, rgba(0,0,0,120)); - render_quad_with_outline(shadow_box.tl_u, shadow_box.tl_d, shadow_box.bl_u, shadow_box.bl_d, rgba(0,0,0,120)); - render_quad_with_outline(shadow_box.bl_u, shadow_box.br_u, shadow_box.bl_d, shadow_box.br_d, rgba(0,0,0,120)); + render_box_with_outline(shadow_box, rgba(0,0,0,alpha * (120.0f/255.0f))); b = drops[i]; box full_box = get_render_box_of_square(window, b.position, b.size); - render_quad_with_outline(full_box.tl_d, full_box.tr_d, full_box.bl_d, full_box.br_d, rgb(218,112,214)); - render_quad_with_outline(full_box.tl_u, full_box.tr_u, full_box.bl_u, full_box.br_u, rgb(218,112,214)); - render_quad_with_outline(full_box.tl_u, full_box.tl_d, full_box.bl_u, full_box.bl_d, rgb(218,112,214)); - render_quad_with_outline(full_box.bl_u, full_box.br_u, full_box.bl_d, full_box.br_d, rgb(218,112,214)); + render_box_with_outline(full_box, rgba(218,112,214, alpha)); int drop_h = full_box.br_d.y - full_box.tr_d.y; @@ -65,7 +68,7 @@ void draw_drops(platform_window* window) { int icon_y = full_box.tl_u.y - icon_size + (drop_h/2); switch(b.type) { case DROP_AMMO: { - renderer->render_image(img_icon_bullets, icon_x, icon_y, icon_size, icon_size); + renderer->render_image_tint(img_icon_bullets, icon_x, icon_y, icon_size, icon_size, rgba(255,255,255, alpha)); } break; default: break; @@ -113,6 +113,8 @@ static void set_ping_for_player(protocol_generic_message* msg) { float update_timer = 0.0f; void update_server(platform_window* window) { + server_update_time = platform_get_time(TIME_NS, TIME_FULL); + for (int i = 0; i < messages_received_on_server.length; i++) { protocol_generic_message* msg = *(protocol_generic_message**)array_at(&messages_received_on_server, i); set_ping_for_player(msg); @@ -126,9 +128,10 @@ void update_server(platform_window* window) { log_info("Player connected to server"); } break; + /* case MESSAGE_USER_MOVED: { protocol_move* move_msg = (protocol_move*)msg->message; - move_user(window, move_msg->id, move_msg->move); + move_user(window, move_msg->id, move_msg->move, move_msg->delta); } break; case MESSAGE_USER_LOOK: { @@ -139,6 +142,7 @@ void update_server(platform_window* window) { protocol_user_shoot* shoot_msg = (protocol_user_shoot*)msg->message; shoot(window, shoot_msg->id, shoot_msg->dirx, shoot_msg->diry); } break; + */ default: log_info("Unhandled message received"); @@ -162,6 +166,11 @@ void update_server(platform_window* window) { broadcast_to_clients(create_protocol_zombie_list()); broadcast_to_clients(create_protocol_bullets_list()); broadcast_to_clients(create_protocol_drop_list()); + + server_update_time = platform_get_time(TIME_NS, TIME_FULL) - server_update_time; + if ((server_update_time/1000000.0f) > 5.0f) { + log_infox("Server update took %.2fms", (server_update_time/1000000.0f)); + } } static void apply_user_list(protocol_user_list* msg_players) { @@ -186,7 +195,7 @@ static void load_bullets_into_existing_list(protocol_bullets_list* msg_bullets) for (int x = 0; x < max_bullets; x++) { if (!msg_bullets->bullets[x].active) continue; bullets[i] = msg_bullets->bullets[x]; - bullets[i].alive_time = 0.0f; + //bullets[i].alive_time = 0.0f; msg_bullets->bullets[x].active = false; } } diff --git a/src/objects.c b/src/objects.c index a925dc4..b296c9d 100644 --- a/src/objects.c +++ b/src/objects.c @@ -23,10 +23,10 @@ void render_quad_with_outline(vec2f tl, vec2f tr, vec2f bl, vec2f br, color c) { tr.x, tr.y, c); - renderer->render_line(tl.x, tl.y, tr.x, tr.y, 1, rgb(0,0,255)); // top - renderer->render_line(tl.x, tl.y, bl.x, bl.y, 1, rgb(0,0,255)); // left - renderer->render_line(tr.x, tr.y, br.x, br.y, 1, rgb(0,0,255)); // right - renderer->render_line(bl.x, bl.y, br.x, br.y, 1, rgb(0,0,255)); // bottom + renderer->render_line(tl.x, tl.y, tr.x, tr.y, 1, rgba(0,0,255, c.a)); // top + renderer->render_line(tl.x, tl.y, bl.x, bl.y, 1, rgba(0,0,255, c.a)); // left + renderer->render_line(tr.x, tr.y, br.x, br.y, 1, rgba(0,0,255, c.a)); // right + renderer->render_line(bl.x, bl.y, br.x, br.y, 1, rgba(0,0,255, c.a)); // bottom } object get_object_at_tile(float x, float y) { diff --git a/src/overlay.c b/src/overlay.c index e8bd2a9..298f460 100644 --- a/src/overlay.c +++ b/src/overlay.c @@ -67,9 +67,13 @@ void draw_debug_stats(platform_window* window) { float usage = (update_delta / (1.0f / 60.0f) * 100); char fps_text[50]; - snprintf(fps_text, 50, "FPS: %d, MS: %.4f, USAGE: %.2f", (int)fps, update_delta*1000.0f, usage); + snprintf(fps_text, 50, "FPS: %d, MS: %.4f, USAGE: %.0f%%", (int)fps, update_delta*1000.0f, usage); - renderer->render_text(fnt_20, _global_camera.x, _global_camera.y, fps_text, rgb(0,0,0)); + char update_text[50]; + snprintf(update_text, 50, "server: %.2fms", server_update_time/1000000.0f); + + renderer->render_text(fnt_20, _global_camera.x, _global_camera.y + fnt_20->px_h*0, fps_text, rgb(0,0,0)); + renderer->render_text(fnt_20, _global_camera.x, _global_camera.y + fnt_20->px_h*1, update_text, rgb(0,0,0)); } void draw_overlay(platform_window* window) { diff --git a/src/players.c b/src/players.c index a8a3cac..e6fab6d 100644 --- a/src/players.c +++ b/src/players.c @@ -49,8 +49,8 @@ void spawn_player(u32 id, network_client client) { } -void move_user(platform_window* window, u32 id, protocol_move_type move) { - float speed = 5.5f * update_delta; +void move_user(platform_window* window, u32 id, protocol_move_type move, float delta) { + float speed = 5.5f * delta; float pad_between_player_and_obj = 0.01f; player* p = get_player_by_id(id); @@ -148,28 +148,28 @@ void take_player_input(platform_window* window) { network_message message = create_protocol_user_moved(MOVE_UP, player_id); network_client_send(global_state.client, message); } - move_user(window, player_id, MOVE_UP); + move_user(window, player_id, MOVE_UP, update_delta); } if (keyboard_is_key_down(KEY_S)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_DOWN, player_id); network_client_send(global_state.client, message); } - move_user(window, player_id, MOVE_DOWN); + move_user(window, player_id, MOVE_DOWN, update_delta); } if (keyboard_is_key_down(KEY_A)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_LEFT, player_id); network_client_send(global_state.client, message); } - move_user(window, player_id, MOVE_LEFT); + move_user(window, player_id, MOVE_LEFT, update_delta); } if (keyboard_is_key_down(KEY_D)) { if (!global_state.server) { network_message message = create_protocol_user_moved(MOVE_RIGHT, player_id); network_client_send(global_state.client, message); } - move_user(window, player_id, MOVE_RIGHT); + move_user(window, player_id, MOVE_RIGHT, update_delta); } // Send gun position diff --git a/src/protocol.c b/src/protocol.c index 628dc6f..56d8c6c 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -56,6 +56,7 @@ network_message create_protocol_user_moved(protocol_move_type move, u32 id) buf->type = MESSAGE_USER_MOVED; buf->move = move; buf->id = id; + buf->delta = update_delta; return network_create_message(network_buffer, sizeof(protocol_move), MAX_NETWORK_BUFFER_SIZE); } |
