From 0aa534c4d1bb5414087f951d9212c5aca055ccec Mon Sep 17 00:00:00 2001 From: Stefan Stefanov Date: Fri, 9 Feb 2024 22:19:40 +0200 Subject: [PATCH] added animation to the bullet & sprites to all major components --- assets/texture_atlas.png | Bin 709 -> 688 bytes game.odin | 25 ++++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/assets/texture_atlas.png b/assets/texture_atlas.png index c7dfd1f0ea0dfef0205243e635617bcc711a4939..a8b53c73e584001cbc01a274ba3d3aa3620668e5 100644 GIT binary patch delta 462 zcmV;<0Wto?1+WE>F+OTZL_t(|obB38Qo=wGK;dqS4M))(=X34#0L}>jX8>?M1;9B0 z;JgWha{|EO_hup<1yDfE%3vw`gzZuDQAEu5l8qZ*c(qkv=~3@RD{un9?IMQv^09k>scZCnoB(j&eI&zW!A|{-00000NkvXXu0jG} Ef?H|kga7~l delta 482 zcmV<80UiFZ1;quBF+hJwL_t(|obB2{QrkcfK+&F*H$Dp4`FyOoUVIj>vg|ApQDb>z zNqB-v`v0wr5MYWwJ(5kyw_Ap=er){&v@MZwz<)CUxY9b9nHdpLN-3?6=dAhqe7ogW zp1AsO0>GVG2bZq&rFwrq_2UG9GXS_|0Qpa^AJY5#sUIf*T=ODuZ0$vy7k&HT1b|x< zz}h|BJ%2x(0B{BXX8>@%6b$DCfb*3=IQ(d)|389T09=;<&KY^mSiF+fp0EGs^DZFY z?|=Uw<>P*PnESl;$t?hG^4-Akiht&J`8y5H896+jvg90nA146ZqW=e&Q(w?6xwsq7 zaT09rPP2^RqO Y2b~(zQ-nwYk^lez07*qoM6N<$f|{@NCIA2c diff --git a/game.odin b/game.odin index bbd2e78..86a7941 100644 --- a/game.odin +++ b/game.odin @@ -25,7 +25,8 @@ PLAYER_RECT :: glm.vec2{SPRITE_CELL * GLOBAL_SPRITE_SCALE, SPRITE_CELL * GLOBAL_ // texture offset for ship SHIP_TO :: glm.vec2{0, 112} -BULLET_TO :: glm.vec2{32, 112} +BULLET_TO := [2]glm.vec2{{0, 80}, {16, 80}} +BULLET_FRAME_ANIM := 0 AlienKind :: enum { ORANGE, @@ -101,6 +102,9 @@ update_game :: proc(state: ^GameState) { log.info("Done setting up game") } + // update bullet frame idx + if frame_counter % 10 == 0 { BULLET_FRAME_ANIM = (BULLET_FRAME_ANIM + 1) % len(BULLET_TO) } + // Press enter to change to ENDING screen if (rl.IsKeyPressed(rl.KeyboardKey.ENTER)) { state.screen = .ENDING @@ -156,8 +160,8 @@ update_game :: proc(state: ^GameState) { } -ship_sprite_cell_offset := rl.Rectangle{SHIP_TO.x, SHIP_TO.y, SPRITE_CELL, SPRITE_CELL} -bullet_sprite_cell_offset := rl.Rectangle{BULLET_TO.x, BULLET_TO.y, SPRITE_CELL, SPRITE_CELL} +// ship_sprite_cell_offset := rl.Rectangle{SHIP_TO.x, SHIP_TO.y, SPRITE_CELL, SPRITE_CELL} +// bullet_sprite_cell_offset := rl.Rectangle{BULLET_TO.x, BULLET_TO.y, SPRITE_CELL, SPRITE_CELL} draw_game :: proc(state: ^GameState) { using state @@ -166,7 +170,7 @@ draw_game :: proc(state: ^GameState) { rl.DrawTexturePro( texture_atlas, - ship_sprite_cell_offset, + {SHIP_TO.x, SHIP_TO.y, SPRITE_CELL, SPRITE_CELL}, {player_pos.x, player_pos.y, f32(PLAYER_RECT.x), f32(PLAYER_RECT.y)}, {SPRITE_CELL, SPRITE_CELL}, 0, @@ -178,7 +182,7 @@ draw_game :: proc(state: ^GameState) { rl.DrawTexturePro( texture_atlas, {ALIENS_TO[alien.id].x, ALIENS_TO[alien.id].y, SPRITE_CELL, SPRITE_CELL}, - {alien.position.x, alien.position.y, SPRITE_CELL, SPRITE_CELL}, + {alien.position.x, alien.position.y, ALIEN_RECT.x, ALIEN_RECT.y}, {SPRITE_CELL, SPRITE_CELL}, 0, rl.WHITE, @@ -193,10 +197,12 @@ draw_game :: proc(state: ^GameState) { for &bullet in bullets { if !bullet.alive {continue} - rl.DrawCircle( - c.int(bullet.position.x), - c.int(bullet.position.y), - f32(BULLET_RECT.x / 2), + rl.DrawTexturePro( + texture_atlas, + {BULLET_TO[BULLET_FRAME_ANIM].x, BULLET_TO[BULLET_FRAME_ANIM].y, SPRITE_CELL, SPRITE_CELL}, + {bullet.position.x, bullet.position.y, BULLET_RECT.x, BULLET_RECT.y}, + {SPRITE_CELL, SPRITE_CELL}, + 0, rl.WHITE, ) } @@ -235,3 +241,4 @@ draw_game :: proc(state: ^GameState) { rl.DrawText(rl.TextFormat("Score: %d", player_score), 130, 220, 20, rl.MAROON) // rl.DrawText("GAMEPLAY SCREEN", 20, 20, 40, rl.MAROON) } +