diff --git a/assets/texture_atlas.png b/assets/texture_atlas.png index c7dfd1f..a8b53c7 100644 Binary files a/assets/texture_atlas.png and b/assets/texture_atlas.png differ 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) } +