summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2023-12-26 16:04:38 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2023-12-26 16:04:38 +0100
commitd018848939d1101df21515cb81f611f23c119d10 (patch)
tree02b7bcdc876de586d5fdce9ff92f0d01f670d4db /src
parentef471c71e0da0269ed2a924eaae991ac2d0cfa20 (diff)
body
Diffstat (limited to 'src')
-rw-r--r--src/asset_defs.c3
-rw-r--r--src/objects.c2
-rw-r--r--src/players.c53
-rw-r--r--src/sprite.c10
-rw-r--r--src/throwables.c5
-rw-r--r--src/zombies.c2
6 files changed, 54 insertions, 21 deletions
diff --git a/src/asset_defs.c b/src/asset_defs.c
index a44963f..bca99f4 100644
--- a/src/asset_defs.c
+++ b/src/asset_defs.c
@@ -30,6 +30,7 @@ void load_assets() {
img_disconnected = assets_load_image_from_file("data/imgs/icons/disconnected.png");
img_icon_grenade = assets_load_image_from_file("data/imgs/icons/grenade.png");
img_icon_molotov = assets_load_image_from_file("data/imgs/icons/molotov.png");
+ img_test = assets_load_image_from_file("data/imgs/players/body.png");
// Throwables
img_grenade = assets_load_image_from_file("data/imgs/throwables/grenade.png");
@@ -43,8 +44,8 @@ void load_assets() {
img_metal_wall_front = assets_load_image_from_file("data/imgs/objects/metal_wall_front.png");
// Players
- img_player_running = assets_load_image_from_file("data/imgs/players/player1_running.png");
img_helmet = assets_load_image_from_file("data/imgs/players/helmet.png");
+ img_body = assets_load_image_from_file("data/imgs/players/body.png");
// Other
img_zombie_chunk_hand = assets_load_image_from_file("data/imgs/zombie_chunk_hand.png");
diff --git a/src/objects.c b/src/objects.c
index 32a2dc7..fad613b 100644
--- a/src/objects.c
+++ b/src/objects.c
@@ -137,6 +137,6 @@ void create_objects() {
create_spawner((vec2){15, 5});
create_spawner((vec2){3, 8});
*/
- create_spawner((vec2){11, 18});
+ //create_spawner((vec2){11, 18});
create_wallitem((vec3f){14, 1, 0}, WALLITEM_GUN, (wall_item_data){.gun = GUN_NOVA});
} \ No newline at end of file
diff --git a/src/players.c b/src/players.c
index 52e1e7c..c4f2c61 100644
--- a/src/players.c
+++ b/src/players.c
@@ -59,7 +59,7 @@ void spawn_player(u32 id, network_client client) {
players[i].guntype = GUN_MP5;
players[i].height = 0.0f;
players[i].client = client;
- players[i].sprite = create_sprite(img_player_running, 22, 108, 136, 0.02f);
+ players[i].sprite = create_sprite(img_body, 4, 256, 256, 0.0f);
players[i].direction = DIRECTION_DOWN;
players[i].connection_state = CONNECTED;
players[i].throwables.grenades = 3;
@@ -319,29 +319,29 @@ void update_players_client() {
if (!players[i].active) continue;
if (players[i].direction == DIRECTION_DOWN) {
- players[i].sprite.frame_start = 374;
+ sprite_set_current_frame(&players[i].sprite, 0);
}
if (players[i].direction == DIRECTION_UP) {
- players[i].sprite.frame_start = 0;
+ sprite_set_current_frame(&players[i].sprite, 1);
}
if (players[i].direction == DIRECTION_LEFT) {
- players[i].sprite.frame_start = 660;
+ sprite_set_current_frame(&players[i].sprite, 2);
}
if (players[i].direction == DIRECTION_RIGHT) {
- players[i].sprite.frame_start = 198;
+ sprite_set_current_frame(&players[i].sprite, 3);
}
if (players[i].direction == DIRECTION_TOPRIGHT) {
- players[i].sprite.frame_start = 110;
+ sprite_set_current_frame(&players[i].sprite, 1);
}
if (players[i].direction == DIRECTION_TOPLEFT) {
- players[i].sprite.frame_start = 506;
+ sprite_set_current_frame(&players[i].sprite, 1);
}
if (players[i].direction == DIRECTION_BOTTOMRIGHT) {
- players[i].sprite.frame_start = 286;
+ sprite_set_current_frame(&players[i].sprite, 0);
}
if (players[i].direction == DIRECTION_BOTTOMLEFT) {
- players[i].sprite.frame_start = 682;
+ sprite_set_current_frame(&players[i].sprite, 0);
}
@@ -464,13 +464,36 @@ void draw_player(platform_window* window, player* p, int index) {
float player_render_x = player_pos.x;
float player_render_y = player_pos.y;
- float rads = -atan2(p->diry, p->dirx);
- renderer->render_set_rotation(rads + M_PI);
- renderer->render_image(img_helmet, player_render_x, player_render_y, size, size);
- renderer->render_image_tint(img_helmet,
+ // Body
+ {
+ sprite_frame frame = sprite_get_frame(img_test, &p->sprite);
+ renderer->render_image_quad_partial(img_test,
player_render_x, player_render_y,
- size, size, get_color_tint_by_player_index(index));
- renderer->render_set_rotation(0.0f);
+ 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);
+
+ renderer->render_image_quad_partial_tint(img_test,
+ 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, get_color_tint_by_player_index(index));
+ }
+
+ player_render_y -= size*0.7;
+
+ // Helmet
+ {
+ float rads = -atan2(p->diry, p->dirx);
+ renderer->render_set_rotation(rads + M_PI);
+ renderer->render_image(img_helmet, player_render_x, player_render_y, size, size);
+ renderer->render_image_tint(img_helmet,
+ player_render_x, player_render_y,
+ size, size, get_color_tint_by_player_index(index));
+ renderer->render_set_rotation(0.0f);
+ }
int name_x = player_render_x + (size)/2 - (renderer->calculate_text_width(fnt_20, name))/2;
int name_y = player_render_y - fnt_20->px_h - 5;
diff --git a/src/sprite.c b/src/sprite.c
index c6ee82e..30307ae 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -16,6 +16,7 @@ sprite create_sprite(image* img, int frame_count, int fwidth, int fheight, float
void update_sprite(sprite* sprite) {
sprite->time += SERVER_TICK_RATE;
+ if (sprite->sec_per_frame == 0.0f) return; // sprite does not play.
int frame = sprite->time / sprite->sec_per_frame;
sprite->current_frame = frame;
if (frame >= sprite->frame_count) {
@@ -24,7 +25,14 @@ void update_sprite(sprite* sprite) {
}
}
-sprite_frame sprite_get_frame(sprite* sprite) {
+void sprite_set_current_frame(sprite* sprite, int index) {
+ sprite->current_frame = index;
+}
+
+sprite_frame sprite_get_frame(image* img, sprite* sprite) {
+ sprite->img_width = img->width;
+ sprite->img_height = img->height;
+
sprite_frame frame = {0};
int columns = sprite->img_width / sprite->frame_width;
int rows = sprite->img_height/ sprite->frame_height;
diff --git a/src/throwables.c b/src/throwables.c
index a950080..2ed5133 100644
--- a/src/throwables.c
+++ b/src/throwables.c
@@ -258,9 +258,10 @@ void draw_throwables(platform_window* window) {
explode_location.y -= explosion_size.y/2;
box box = get_render_box_of_square(window, explode_location, explosion_size);
- sprite_frame frame = sprite_get_frame(&throwables[i].sprite);
+ image* img = get_throwable_explosion_from_type(t.type);
+ sprite_frame frame = sprite_get_frame(img, &throwables[i].sprite);
- renderer->render_image_quad_partial(get_throwable_explosion_from_type(t.type),
+ renderer->render_image_quad_partial(img,
box.tl_u.x, box.tl_u.y,
box.bl_d.x, box.bl_d.y,
box.br_d.x, box.br_d.y,
diff --git a/src/zombies.c b/src/zombies.c
index 1006e95..4abef22 100644
--- a/src/zombies.c
+++ b/src/zombies.c
@@ -125,7 +125,7 @@ void draw_spawners(platform_window* window) {
tile tile = loaded_map.heightmap[spawner.position.y][spawner.position.x];
- sprite_frame frame = sprite_get_frame(&spawner.sprite);
+ sprite_frame frame = sprite_get_frame(img_spawner, &spawner.sprite);
renderer->render_image_quad_partial(img_spawner,
tile.tl.x, tile.tl.y,
tile.bl.x, tile.bl.y,