I need to iterate over a rect's tiles in different ways based on a passed render_dir variable. First thought was
fn SanRect2D_ViewIter(render_dir: bapi_types.EnumDir) type {
return struct {
const Self = @This();
const InitRet = struct { tile_iter: Self, started_on_border: bool };
const NextRet = ?struct { xyz: geometry.SanXYZ, clear_mask: bool };
inner: ?geometry.SanRect2D,
iter: u10,
pub fn init(rect: geometry.SanRect2D, render_dir: bapi_types.EnumDir) InitRet {
return switch (render_dir) {
.North => ...,
.South => ...,
.East => ...,
.West => ...,
},
};
}
pub fn next(self: Self) NextRet {
var inner = &(self.inner orelse return null);
std.debug.assert(inner.x1 <= inner.x2);
std.debug.assert(inner.y1 <= inner.y2);
return switch (render_dir) {
.North => {...},
.South => {...},
.East => {...},
.West => {...},
};
}
};
}
...but render_dir is sadly not known at comptime.

