added animation to the bullet & sprites to all major components

This commit is contained in:
Stefan Stefanov 2024-02-09 22:19:40 +02:00
parent 348b4fd181
commit 0aa534c4d1
2 changed files with 16 additions and 9 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 709 B

After

Width:  |  Height:  |  Size: 688 B

Before After
Before After

View file

@ -25,7 +25,8 @@ PLAYER_RECT :: glm.vec2{SPRITE_CELL * GLOBAL_SPRITE_SCALE, SPRITE_CELL * GLOBAL_
// texture offset for ship // texture offset for ship
SHIP_TO :: glm.vec2{0, 112} 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 { AlienKind :: enum {
ORANGE, ORANGE,
@ -101,6 +102,9 @@ update_game :: proc(state: ^GameState) {
log.info("Done setting up game") 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 // Press enter to change to ENDING screen
if (rl.IsKeyPressed(rl.KeyboardKey.ENTER)) { if (rl.IsKeyPressed(rl.KeyboardKey.ENTER)) {
state.screen = .ENDING 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} // 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} // bullet_sprite_cell_offset := rl.Rectangle{BULLET_TO.x, BULLET_TO.y, SPRITE_CELL, SPRITE_CELL}
draw_game :: proc(state: ^GameState) { draw_game :: proc(state: ^GameState) {
using state using state
@ -166,7 +170,7 @@ draw_game :: proc(state: ^GameState) {
rl.DrawTexturePro( rl.DrawTexturePro(
texture_atlas, 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)}, {player_pos.x, player_pos.y, f32(PLAYER_RECT.x), f32(PLAYER_RECT.y)},
{SPRITE_CELL, SPRITE_CELL}, {SPRITE_CELL, SPRITE_CELL},
0, 0,
@ -178,7 +182,7 @@ draw_game :: proc(state: ^GameState) {
rl.DrawTexturePro( rl.DrawTexturePro(
texture_atlas, texture_atlas,
{ALIENS_TO[alien.id].x, ALIENS_TO[alien.id].y, SPRITE_CELL, SPRITE_CELL}, {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}, {SPRITE_CELL, SPRITE_CELL},
0, 0,
rl.WHITE, rl.WHITE,
@ -193,10 +197,12 @@ draw_game :: proc(state: ^GameState) {
for &bullet in bullets { for &bullet in bullets {
if !bullet.alive {continue} if !bullet.alive {continue}
rl.DrawCircle( rl.DrawTexturePro(
c.int(bullet.position.x), texture_atlas,
c.int(bullet.position.y), {BULLET_TO[BULLET_FRAME_ANIM].x, BULLET_TO[BULLET_FRAME_ANIM].y, SPRITE_CELL, SPRITE_CELL},
f32(BULLET_RECT.x / 2), {bullet.position.x, bullet.position.y, BULLET_RECT.x, BULLET_RECT.y},
{SPRITE_CELL, SPRITE_CELL},
0,
rl.WHITE, 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(rl.TextFormat("Score: %d", player_score), 130, 220, 20, rl.MAROON)
// rl.DrawText("GAMEPLAY SCREEN", 20, 20, 40, rl.MAROON) // rl.DrawText("GAMEPLAY SCREEN", 20, 20, 40, rl.MAROON)
} }