51 lines
1.5 KiB
Odin
51 lines
1.5 KiB
Odin
package space_invaders
|
|
|
|
import glm "core:math/linalg/glsl"
|
|
|
|
// TO -> texture offset
|
|
|
|
// x,y, width, height
|
|
LOGO_TO :: [2]glm.vec2{{0, 0}, {128-(SPRITE_CELL * 2), SPRITE_CELL * 2}}
|
|
|
|
GLOBAL_SPRITE_SCALE :: 2
|
|
SPRITE_CELL :: 16
|
|
SPRITE :: SPRITE_CELL * GLOBAL_SPRITE_SCALE
|
|
|
|
ALIEN_ROWS :: 5
|
|
ALIENS_PER_ROW :: 11
|
|
ALIENS :: ALIEN_ROWS * ALIENS_PER_ROW
|
|
ALIEN_SIDE_STEP :: 20 * GLOBAL_SPRITE_SCALE
|
|
ALIEN_RECT :: glm.vec2{SPRITE, SPRITE}
|
|
// note: this multiplication by GLOBAL_SPRITE_SCALE is a hack, but it's a weekend project
|
|
// so i won't bother refactoring it
|
|
|
|
MAX_BULLETS :: 100
|
|
BULLET_SPEED :: 240
|
|
BULLET_RECT :: glm.vec2{SPRITE, SPRITE}
|
|
|
|
MAX_PLAYER_HEALTH :: 3
|
|
PLAYER_SPEED :: 120
|
|
PLAYER_RECT :: glm.vec2{SPRITE, SPRITE}
|
|
|
|
// texture offset for ship
|
|
SHIP_TO :: glm.vec2{0, 112}
|
|
HEART_TO :: glm.vec2{16, 112}
|
|
BULLET_TO := [2]glm.vec2{{0, 80}, {16, 80}}
|
|
BULLET_FRAME_ANIM := 0
|
|
|
|
// texture atlas offset for aliens (x,y), height & width is implied by SPRITE_CELL
|
|
ALIENS_TO := [AlienKind]glm.vec2 {
|
|
.ORANGE = {0, 128 - (SPRITE_CELL * 2)},
|
|
.GREEN = {SPRITE_CELL * 1, 128 - (SPRITE_CELL * 2)},
|
|
.YELLOW = {SPRITE_CELL * 2, 128 - (SPRITE_CELL * 2)},
|
|
.RED = {SPRITE_CELL * 3, 128 - (SPRITE_CELL * 2)},
|
|
}
|
|
ALIEN_DEATH_FRAMES :: 4
|
|
// texture atlas offset for aliens' death frames (x,y), height & width is implied by SPRITE_CELL
|
|
ALIEN_DEATH_ANIMATION_TO := [ALIEN_DEATH_FRAMES]glm.vec2 {
|
|
{0, 128 - (SPRITE_CELL * 4)},
|
|
{SPRITE_CELL * 1, 128 - (SPRITE_CELL * 4)},
|
|
{SPRITE_CELL * 2, 128 - (SPRITE_CELL * 4)},
|
|
{SPRITE_CELL * 3, 128 - (SPRITE_CELL * 4)},
|
|
}
|
|
|