diff --git a/src/game_entity.odin b/src/game_entity.odin new file mode 100644 index 0000000..99a134f --- /dev/null +++ b/src/game_entity.odin @@ -0,0 +1,28 @@ +package game + +import rl "vendor:raylib" + +/* +Entites are generic structures shared between enemies, environment items, player etc +Anything here is intended to be used with any entity some optional and some required +*/ + +Entity_Type :: enum { + Player, + Enemy, + Ball, +} + +Shape_Type :: enum { + Rectangle, + Circle +} + +Entity :: struct { + type: Entity_Type, + active: bool, + pos: rl.Vector2, + vel: rl.Vector2, + shape: Shape_Type, + shape_size: rl.Vector2, +} \ No newline at end of file diff --git a/src/game_entity_player.odin b/src/game_entity_player.odin new file mode 100644 index 0000000..86747a2 --- /dev/null +++ b/src/game_entity_player.odin @@ -0,0 +1,30 @@ +package game + +import rl "vendor:raylib" + +init_player :: proc() -> Entity { + return Entity{ + type = .Player, + active = true, + pos = rl.Vector2{0,0}, + vel = rl.Vector2{450,0}, + shape = .Rectangle, + shape_size = rl.Vector2{50, 250} + } +} + +update_player :: proc(dt: f32, player: ^Entity) { + // Input + if rl.IsKeyDown(.W) do player.pos.y -= player.vel.x * dt + if rl.IsKeyDown(.S) do player.pos.y += player.vel.x * dt +} + +render_player :: proc(player: Entity) { + rl.DrawRectangle( + i32(player.pos.x), + i32(player.pos.y), + i32(player.shape_size.x), + i32(player.shape_size.y), + rl.BLACK + ) +} \ No newline at end of file