summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2024-05-09 11:31:07 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2024-05-09 11:31:07 +0200
commit962ebf95459a8da08f44898d13d185e60de59b45 (patch)
treeb7b8d5bd0760f760f99fd6e2703752f6137e306e /src
parentc13e3bce702003aea65eef54ee462fd20cdf4fa1 (diff)
work
Diffstat (limited to 'src')
-rw-r--r--src/asset_defs.c6
-rw-r--r--src/audio.c4
-rw-r--r--src/editor.c12
-rw-r--r--src/map.c9
-rw-r--r--src/objects.c9
-rw-r--r--src/players.c55
-rw-r--r--src/zombies.c4
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;
}
diff --git a/src/map.c b/src/map.c
index 4ebd930..8ec60fb 100644
--- a/src/map.c
+++ b/src/map.c
@@ -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;