From b951f4de71d47d17a22265b1ea336e67fedeba7a Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sun, 14 Aug 2022 14:33:29 +0200 Subject: Wrote initial game objects --- src/brothers.zig | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/brothers.zig (limited to 'src/brothers.zig') diff --git a/src/brothers.zig b/src/brothers.zig new file mode 100644 index 0000000..b221ddc --- /dev/null +++ b/src/brothers.zig @@ -0,0 +1,46 @@ +const std = @import("std"); +const spoon = @import("spoon"); + +pub const Side = enum(u1) { + left, + right, +}; + +const startingX = [2]f64{ 15, 60 }; +const colors = [2]spoon.Attribute.Colour{ .blue, .red }; + +pub const Brother = struct { + side: Side, + x: f64, + y: f64, + dx: f64, + dy: f64, + pub fn reset(self: *Brother, side: ?Side) void { + if (side) |s| { + self.side = s; + } + self.x = startingX[@enumToInt(self.side)]; + self.y = 17; + self.dx = 0; + self.dy = 0; + } + pub fn draw(self: Brother, rc: *spoon.Term.RenderContext) !void { + try rc.setAttribute(.{ .fg = colors[@enumToInt(self.side)] }); + var iter = std.mem.split(u8, brother, "\n"); + var y = @floatToInt(usize, std.math.round(self.y)); + var x = @floatToInt(usize, std.math.round(self.x)); + while (iter.next()) |line| : (y += 1) { + try rc.moveCursorTo(y, x); + _ = try rc.buffer.writer().write(line); + } + } +}; + +const brother = + \\█ █ + \\█ █ █ + \\█████ + \\█████ + \\█ █ + \\█ █ +; -- cgit v1.2.3