diff options
Diffstat (limited to 'src/world.odin')
| -rw-r--r-- | src/world.odin | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/world.odin b/src/world.odin index 3248d65..4f3ee7f 100644 --- a/src/world.odin +++ b/src/world.odin @@ -1,16 +1,28 @@ package demonchime -import "core:log" - import rl "vendor:raylib" +Object_Spawner :: proc(Object_Resource) + current_room: Room_Position_Resource +object_spawners := [Object_Type]Object_Spawner{ + .PLAYER_SPAWN = player_spawn_object_spawner, +} + +@(private = "file") +spawn_objects :: proc(room_id: Room_Id) { + room := get_room(room_id) + + for obj in room.objects { + object_spawners[obj.type](obj) + } +} + open_room_at :: proc(pos: [2]i32) -> bool { pos := pos pos += {current_room.x, current_room.y} - log.debug("trying to change room...", pos) for room_pos in world { if room_pos.id == current_room.id { continue @@ -21,6 +33,7 @@ open_room_at :: proc(pos: [2]i32) -> bool { pos.y >= room_pos.y && pos.y <= room_pos.y + room_pos.height { current_room = room_pos + spawn_objects(current_room.id) return true } } @@ -31,6 +44,7 @@ open_room :: proc(id: Room_Id) -> bool { for room_pos in world { if room_pos.id == id { current_room = room_pos + spawn_objects(current_room.id) return true } } |
