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
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)
}