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