diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2024-05-09 11:31:07 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2024-05-09 11:31:07 +0200 |
| commit | 962ebf95459a8da08f44898d13d185e60de59b45 (patch) | |
| tree | b7b8d5bd0760f760f99fd6e2703752f6137e306e /src | |
| parent | c13e3bce702003aea65eef54ee462fd20cdf4fa1 (diff) | |
work
Diffstat (limited to 'src')
| -rw-r--r-- | src/asset_defs.c | 6 | ||||
| -rw-r--r-- | src/audio.c | 4 | ||||
| -rw-r--r-- | src/editor.c | 12 | ||||
| -rw-r--r-- | src/map.c | 9 | ||||
| -rw-r--r-- | src/objects.c | 9 | ||||
| -rw-r--r-- | src/players.c | 55 | ||||
| -rw-r--r-- | src/zombies.c | 4 |
7 files changed, 73 insertions, 26 deletions
diff --git a/src/asset_defs.c b/src/asset_defs.c index 33f50d8..d40771b 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -42,10 +42,10 @@ void load_assets() { img_grenade_explode = assets_load_image_from_file("data/imgs/throwables/grenade_explode.png"); img_molotov_explode = assets_load_image_from_file("data/imgs/throwables/molotov_explode.png"); - // Objects + // Objects // @NEWOBJECT img_spawner = assets_load_image_from_file("data/imgs/spawner.png"); - img_obj_plants = assets_load_image_from_file("data/imgs/objects/plants.png"); - img_obj_wall1 = assets_load_image_from_file("data/imgs/objects/wall1.png"); + img_space_control_panel = assets_load_image_from_file("data/imgs/objects/space_control_panel.png"); + img_space_window = assets_load_image_from_file("data/imgs/objects/metal_wall_window.png"); img_metal_wall = assets_load_image_from_file("data/imgs/objects/metal_wall.png"); img_metal_wall2 = assets_load_image_from_file("data/imgs/objects/metal_wall2.png"); diff --git a/src/audio.c b/src/audio.c index b933f35..72127ae 100644 --- a/src/audio.c +++ b/src/audio.c @@ -100,9 +100,9 @@ static Mix_Chunk* get_sample_from_audio_event(audio_event event, u32 playerid) { } } else if (event.obj != OBJECT_NONE) { - switch (event.obj) + switch (event.obj) // @NEWOBJECT { - case OBJECT_PLANTBOX1: return wav_impact_wood; + //case OBJECT_PLANTBOX1: return wav_impact_wood; case OBJECT_METAL_WALL: case OBJECT_METAL_WALL2: return wav_impact_metal; default: return wav_error; diff --git a/src/editor.c b/src/editor.c index c908b74..c506cbc 100644 --- a/src/editor.c +++ b/src/editor.c @@ -85,6 +85,15 @@ void update_editor(platform_window* window) camera_x += update_delta*cam_speed; } + if (_global_mouse.scroll_state == SCROLL_UP) { + player_zoom++; + printf("%d %d\n", player_zoom, get_tile_width(window)); + } + if (_global_mouse.scroll_state == SCROLL_DOWN) { + player_zoom--; + printf("%d %d\n", player_zoom, get_tile_width(window)); + } + _next_camera_pos.x = -(window->width / 2) + camera_x; _next_camera_pos.y = -(window->height / 2) + camera_y; @@ -375,6 +384,7 @@ void update_object_editor(platform_window* window) { if (keyboard_is_key_down(KEY_ESCAPE)) { object_edit_state = OBJECT_EDITOR_SELECTING; } + if (_global_mouse.x < editor_width) return; if (pos.x < 0 || pos.y < 0) return; if (pos.x >= loaded_map.width || pos.y >= loaded_map.height) return; @@ -415,7 +425,7 @@ void draw_object_panel(platform_window* window) { y += offset_y; image* img = get_image_from_objecttype((object_type)i); - if (push_icon_button(x, y, tile_w, img, object_to_place == (object_type)i && object_edit_state == OBJECT_EDITOR_PLACING)) { + if (push_icon_button(x, y, tile_w, img, object_to_place == (object_type)i)) { object_to_place = (object_type)i; object_edit_state = OBJECT_EDITOR_PLACING; } @@ -1,5 +1,6 @@ #include "../include/map.h" +int player_zoom = 30; static int get_height_of_tile_tl(int current_height, int x, int y) { int highest_point = current_height; if (y > 0) { @@ -299,9 +300,11 @@ static int round_up(int numToRound, int multiple) } inline int get_tile_width(platform_window* window) { - int tile_width = window->height / 30; - if (window->width > window->height) tile_width = window->width / 30; - return round_up(tile_width, 8); + //int tile_width = window->height / player_zoom; + //if (window->width > window->height) tile_width = window->width / player_zoom; + //return round_up(tile_width, 8); + + return 32; } inline int get_tile_height(platform_window* window) { diff --git a/src/objects.c b/src/objects.c index ce1d261..213879c 100644 --- a/src/objects.c +++ b/src/objects.c @@ -77,13 +77,14 @@ void add_object(object obj) { log_info("Object limit reached."); } +// @NEWOBJECT image* get_image_from_objecttype(object_type tile) { switch (tile) { - case OBJECT_COBBLESTONEWALL1: - return img_obj_wall1; - case OBJECT_PLANTBOX1: - return img_obj_plants; + case OBJECT_SPACE_CONTROL_PANEL: + return img_space_control_panel; + case OBJECT_SPACE_WINDOW: + return img_space_window; case OBJECT_METAL_WALL: return img_metal_wall; case OBJECT_METAL_WALL2: diff --git a/src/players.c b/src/players.c index 32b62cd..cb7842e 100644 --- a/src/players.c +++ b/src/players.c @@ -57,14 +57,17 @@ void spawn_player(u32 id, network_client client) { players[i].guny = 0.0f; players[i].gun_height = 0.0f; players[i].id = id; + players[i].move_state = PLAYER_MOVE_STATE_IDLE; players[i].guntype = GUN_MP5; players[i].height = 0.0f; players[i].client = client; players[i].sprite = create_sprite(img_gunner_blue_run, 6, 48, 48, 0.1f); players[i].sprite_death = create_sprite(img_gunner_blue_run, 8, 48, 48, 0.1f); + players[i].sprite_idle = create_sprite(img_gunner_blue_idle, 5, 48, 48, 0.1f); players[i].sprite_death.loop = false; players[i].sprite.zoom = 1.1f; players[i].sprite_death.zoom = 1.1f; + players[i].sprite_idle.zoom = 1.1f; players[i].health = 500; players[i].max_health = 500; @@ -133,6 +136,12 @@ void move_user(platform_window* window, u32 id, protocol_move_type move, float d if (p->interact_state == INTERACT_DEAD) return; + if (move == MOVE_NONE) { + p->move_state = PLAYER_MOVE_STATE_IDLE; + return; + } + p->move_state = PLAYER_MOVE_STATE_RUNNING; + if (p->sec_since_last_step > 0.2f) { add_audio_event_to_queue(EVENT_FOOTSTEP, p->id, (vec3f){.x = p->playerx, .y = p->playery, .z = p->height}); p->sec_since_last_step = 0.0f; @@ -274,6 +283,11 @@ void take_player_input(platform_window* window) { add_message_to_outgoing_queuex(message, *global_state.client); move_user(window, player_id,MOVE_DOWN, update_delta); } + else if (p->move_state == PLAYER_MOVE_STATE_RUNNING) { + network_message message = create_protocol_user_moved(MOVE_NONE, player_id); + add_message_to_outgoing_queuex(message, *global_state.client); + move_user(window, player_id,MOVE_NONE, update_delta); + } #ifdef MODE_DEBUG @@ -514,6 +528,17 @@ image* get_player_run_sprite_from_index(int index) { return imgs[index]; } +image* get_player_idle_sprite_from_index(int index) { + image* imgs[] = { + img_gunner_blue_idle, + img_gunner_black_idle, + img_gunner_green_idle, + img_gunner_yellow_idle, + img_gunner_red_idle, + }; + return imgs[index]; +} + void draw_player(platform_window* window, player* p, int index) { float size = get_player_size(window); map_info info = get_map_info(window); @@ -528,27 +553,31 @@ void draw_player(platform_window* window, player* p, int index) { { sprite_frame frame = sprite_get_frame(img_gunner_blue_run, &p->sprite); float rads = -atan2(p->diry, p->dirx); - if (rads > M_PI/2 || rads < -M_PI/2) { - frame = sprite_swap_frame_horizontally(frame); - } + image* img; if (p->interact_state == INTERACT_DEAD) { - frame = sprite_get_frame(img_gunner_blue_die, &p->sprite_death); - renderer->render_image_quad_partial(get_player_death_sprite_from_index(index), - player_render_x, player_render_y, - player_render_x, player_render_y + size, - player_render_x + size, player_render_y + size, - player_render_x + size, player_render_y, - frame.tl, frame.tr, frame.bl, frame.br); + frame = sprite_get_frame(get_player_death_sprite_from_index(index), &p->sprite_death); + img = get_player_death_sprite_from_index(index); + } + else if (p->move_state == PLAYER_MOVE_STATE_IDLE) { + frame = sprite_get_frame(get_player_idle_sprite_from_index(index), &p->sprite_idle); + img = get_player_idle_sprite_from_index(index); + } + // TODO: other movement states + else if (p->move_state == PLAYER_MOVE_STATE_RUNNING) { + img = get_player_run_sprite_from_index(index); } - else { - renderer->render_image_quad_partial(get_player_run_sprite_from_index(index), + + if (rads > M_PI/2 || rads < -M_PI/2) { + frame = sprite_swap_frame_horizontally(frame); + } + + renderer->render_image_quad_partial(img, player_render_x, player_render_y, player_render_x, player_render_y + size, player_render_x + size, player_render_y + size, player_render_x + size, player_render_y, frame.tl, frame.tr, frame.bl, frame.br); - } } // Nametag diff --git a/src/zombies.c b/src/zombies.c index 116b5fa..c128a0c 100644 --- a/src/zombies.c +++ b/src/zombies.c @@ -342,6 +342,10 @@ static void update_zombie_attacks_server(zombie *zombie) { } void update_zombies_server(platform_window* window) { + #ifdef MODE_DEBUG + if (is_editing_map) return; + #endif + for (int i = 0; i < SERVER_MAX_ZOMBIES; i++) { zombie o = zombies[i]; if (!o.alive) continue; |
