From 085df94d383506dd44b6a27894b32501f9e1b5a9 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Thu, 22 Sep 2022 23:05:21 +0200 Subject: Implemented brothers movements --- src/brothers.zig | 9 +++++++++ src/game.zig | 17 ++++++++++++++--- src/main.zig | 1 + 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/brothers.zig b/src/brothers.zig index 3b92de4..6121841 100644 --- a/src/brothers.zig +++ b/src/brothers.zig @@ -1,3 +1,4 @@ +const inputs = @import("inputs.zig"); const std = @import("std"); const utils = @import("utils.zig"); const w4 = @import("wasm4.zig"); @@ -5,8 +6,10 @@ const w4 = @import("wasm4.zig"); pub const Brother = struct { side: utils.side, score: u8, + // position of the bottom left corner x: u8, y: f64, + vy: f64, pub fn draw(self: Brother) void { var y = @floatToInt(u8, std.math.round(self.y)); w4.DRAW_COLORS.* = 0x30; @@ -20,6 +23,12 @@ pub const Brother = struct { self.x = utils.startingX[@enumToInt(self.side)]; self.y = 160; } + pub fn update(self: *Brother, gamepad: inputs.Gamepad) void { + if (gamepad.held.left and self.x > utils.leftLimit[@enumToInt(self.side)]) + self.x -= 1; + if (gamepad.held.right and self.x <= utils.rightLimit[@enumToInt(self.side)] - brother_width) + self.x += 1; + } }; //----- Sprite ---------------------------------------------------------------- diff --git a/src/game.zig b/src/game.zig index 7dbba66..2f3dfcd 100644 --- a/src/game.zig +++ b/src/game.zig @@ -1,14 +1,16 @@ +const ball = @import("ball.zig"); +const brothers = @import("brothers.zig"); +const inputs = @import("inputs.zig"); const std = @import("std"); const utils = @import("utils.zig"); const w4 = @import("wasm4.zig"); -const ball = @import("ball.zig"); -const brothers = @import("brothers.zig"); - pub const Game = struct { ball: ball.Ball = undefined, brothers: [2]brothers.Brother = undefined, + gamepads: [4]inputs.Gamepad = undefined, playerSide: utils.side = undefined, + pub fn draw(self: *Game) void { self.ball.draw(); self.brothers[0].draw(); @@ -20,8 +22,17 @@ pub const Game = struct { pub fn reset(self: *Game) void { self.brothers[0].reset(.left); self.brothers[1].reset(.right); + self.resetRound(); + } + pub fn resetRound(self: *Game) void { self.ball.resetRound(.left); self.brothers[0].resetRound(); self.brothers[1].resetRound(); } + pub fn update(self: *Game) void { + self.gamepads[0].update(w4.GAMEPAD1.*); + self.gamepads[1].update(w4.GAMEPAD2.*); + self.brothers[0].update(self.gamepads[0]); + self.brothers[1].update(self.gamepads[1]); + } }; diff --git a/src/main.zig b/src/main.zig index 29b7db5..1b051fc 100644 --- a/src/main.zig +++ b/src/main.zig @@ -11,5 +11,6 @@ export fn start() void { } export fn update() void { + Game.update(); Game.draw(); } -- cgit v1.2.3