Uncomment door code

Still doesn't work because I decided to do doors differently. My next
step is to make the door entities add and remove tiles
master
Louis Pearson 2022-08-05 16:42:24 -06:00
parent 3c0f4580b5
commit cce79b4d90
5 changed files with 28 additions and 16 deletions

View File

@ -1,2 +1 @@
pub usingnamespace @import("tiles.zig");
pub usingnamespace @import("maps/map.zig");

View File

@ -235,9 +235,12 @@ pub fn enabledBridges(this: @This(), alloc: std.mem.Allocator) !util.Buffer(usiz
}
pub fn enabledDoors(this: @This(), alloc: std.mem.Allocator) !util.Buffer(Cell) {
var items = try alloc.alloc(Cell, this.doors.len);
var items = try alloc.alloc(Cell, this.doors.items.len);
var buffer = util.Buffer(Cell).init(items);
for (this.doors.items) |d| {
const x = d.cell[0];
const y = d.cell[1];
w4.tracef("%d, %d", x, y);
if (d.enabled) buffer.append(d.cell);
}
return buffer;

View File

@ -617,10 +617,11 @@ fn updateCircuit() !void {
(circuit.isEnabled(cellEnd) and end.pinned)) wire.enabled = true;
}
// map.reset(&assets.solid);
// const enabledDoors = try circuit.enabledDoors(frame_alloc);
// for (enabledDoors.items) |door| {
// try map.set_cell(door, 0);
// }
const enabledDoors = try circuit.enabledDoors(frame_alloc);
defer frame_alloc.free(enabledDoors.items);
for (enabledDoors.items) |door| {
try map.set_cell(door, 0);
}
}
fn wirePhysicsProcess(dt: f32, wire: *Wire) !void {

View File

@ -29,7 +29,7 @@ export fn update() void {
.Menu => menu.update(),
.Game => game.update(time) catch |e| switch (e) {
error.Overflow => showErr(@errorName(e)),
// error.OutOfBounds => showErr(@errorName(e)),
error.OutOfBounds => showErr(@errorName(e)),
// error.EndOfStream => showErr(@errorName(e)),
error.OutOfMemory => showErr(@errorName(e)),
},
@ -40,7 +40,7 @@ export fn update() void {
.Menu => menu.start(),
.Game => game.start() catch |e| switch (e) {
error.Overflow => showErr(@errorName(e)),
// error.OutOfBounds => showErr(@errorName(e)),
error.OutOfBounds => showErr(@errorName(e)),
error.EndOfStream => showErr(@errorName(e)),
error.OutOfMemory => showErr(@errorName(e)),
error.NullTiles => showErr(@errorName(e)),

View File

@ -107,24 +107,33 @@ test "Queue" {
pub fn Buffer(comptime T: type) type {
return struct {
len: usize,
len: usize = 0,
backing_buffer: []T,
items: []T,
pub fn init(slice: []T) @This() {
return @This(){
.len = 0,
.items = slice,
pub fn init(backing_buffer: []T) @This() {
var this = @This(){
.items = backing_buffer,
.backing_buffer = backing_buffer,
};
this.set_len(0);
return this;
}
fn set_len(this: *@This(), len: usize) void {
this.len = len;
this.items.len = len;
}
pub fn reset(buf: *@This()) void {
buf.len = 0;
buf.items.len = 0;
}
pub fn append(buf: *@This(), item: T) void {
std.debug.assert(buf.len < buf.items.len);
buf.items[buf.len] = item;
buf.len += 1;
std.debug.assert(buf.len < buf.backing_buffer.len);
buf.backing_buffer[buf.len] = item;
buf.set_len(buf.len + 1);
}
};
}