Initial simple entity system.
This commit is contained in:
@@ -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,
|
||||
}
|
||||
@@ -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
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user