From d2d25b4e56367dfbccb93631fd8af51e4ea6322e Mon Sep 17 00:00:00 2001 From: Louis Pearson Date: Fri, 5 Aug 2022 16:58:57 -0600 Subject: [PATCH] Add doors back in --- src/game.zig | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/game.zig b/src/game.zig index 444dc82..bc8c728 100644 --- a/src/game.zig +++ b/src/game.zig @@ -158,6 +158,8 @@ pub var player: Player = undefined; var music = Music.Procedural.init(.C3, &Music.Minor, 83); pub var wires = std.BoundedArray(Wire, 10).init(0) catch unreachable; var camera = Vec2{ 0, 0 }; +var level: world.Level = undefined; +var level_buf: []world.TileData = undefined; const Coin = struct { pos: Pos, sprite: Sprite, anim: Anim, area: AABB }; pub var coins = std.BoundedArray(Coin, 20).init(0) catch unreachable; @@ -217,8 +219,8 @@ pub fn start() !void { }; const world_reader = stream.reader(); - var level = try world.Level.read(world_reader); - var level_buf = try alloc.alloc(world.TileData, level.size); + level = try world.Level.read(world_reader); + level_buf = try alloc.alloc(world.TileData, level.size); try level.readTiles(world_reader, level_buf); try extract.extractLevel(.{ @@ -607,7 +609,11 @@ fn updateCircuit() !void { circuit.bridge(.{ cellBegin, cellEnd }, wireID); } + + // Simulate circuit _ = try circuit.fill(frame_alloc); + + // Energize wires for (wires.slice()) |*wire| { const begin = wire.begin(); const end = wire.end(); @@ -616,7 +622,15 @@ fn updateCircuit() !void { if ((circuit.isEnabled(cellBegin) and begin.pinned) or (circuit.isEnabled(cellEnd) and end.pinned)) wire.enabled = true; } - // map.reset(&assets.solid); + + // Add doors to map + var i: usize = 0; + while (level.getDoor(i)) |door| : (i += 1) { + const tile: u8 = if (door.kind == .Door) 3 else 4; + try map.set_cell(.{door.x, door.y}, tile); + } + + // Remove doors that have been unlocked const enabledDoors = try circuit.enabledDoors(frame_alloc); defer frame_alloc.free(enabledDoors.items); for (enabledDoors.items) |door| {