summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.zig91
1 files changed, 67 insertions, 24 deletions
diff --git a/src/main.zig b/src/main.zig
index 09cbd0f..6a50cd1 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -10,6 +10,8 @@ const world_width = cells_width * cell_size;
const world_height = cells_height * cell_size;
const bg_color = rl.Color.init(0x20, 0x2e, 0x37, 0xFF);
+const debug = true;
+
var screenWidth: i32 = 1280;
var screenHeight: i32 = 720;
@@ -264,7 +266,20 @@ const Wave = struct {
// This is horrible code, sorry
var spawn_rules = std.ArrayList(SpawnRule).init(arena.allocator());
+ var map: [cells_height][cells_width]Cell = undefined;
if (wave_number == 1) {
+ map = [_][cells_width]Cell{
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .socket, .socket, .socket, .socket, .socket, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .socket, .lane, .lane, .lane, .socket, .none, .none, .none, .none, .none, .none },
+ .{ .none, .socket, .socket, .socket, .socket, .socket, .lane, .socket, .lane, .socket, .socket, .socket, .socket, .socket, .socket, .none },
+ .{ .ai, .lane, .lane, .lane, .lane, .socket, .lane, .socket, .lane, .lane, .lane, .lane, .lane, .lane, .lane, .ram },
+ .{ .none, .socket, .socket, .socket, .lane, .socket, .lane, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .none },
+ .{ .none, .none, .none, .socket, .lane, .lane, .lane, .socket, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .socket, .socket, .socket, .socket, .socket, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ };
+
spawn_rules.append(.{
.from_time_s = 0,
.to_time_s = 10,
@@ -303,28 +318,43 @@ const Wave = struct {
// .{ .spawn_interval = 0.5 },
// },
// }) catch unreachable;
- } else if (wave_number == 2) {} else if (wave_number == 3) {}
+ } else if (wave_number == 2) {
+ map = .{
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .socket, .lane, .lane, .lane, .lane, .lane, .socket, .none, .none, .none, .none, .none, .none },
+ .{ .none, .socket, .socket, .socket, .lane, .socket, .socket, .socket, .lane, .socket, .socket, .socket, .socket, .socket, .socket, .none },
+ .{ .ai, .lane, .lane, .lane, .lane, .socket, .lane, .lane, .lane, .socket, .lane, .lane, .lane, .lane, .lane, .ram },
+ .{ .none, .socket, .socket, .socket, .socket, .socket, .lane, .socket, .socket, .socket, .lane, .socket, .socket, .socket, .socket, .none },
+ .{ .none, .none, .none, .none, .none, .socket, .lane, .lane, .lane, .lane, .lane, .socket, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ };
+ } else if (wave_number == 3) {
+ map = .{
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ .{ .none, .socket, .socket, .socket, .socket, .socket, .none, .none, .none, .none, .none, .none, .socket, .socket, .socket, .none },
+ .{ .ai, .lane, .lane, .lane, .lane, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .lane, .lane, .ram },
+ .{ .none, .socket, .socket, .socket, .lane, .socket, .socket, .lane, .lane, .lane, .lane, .lane, .socket, .lane, .socket, .none },
+ .{ .none, .none, .none, .socket, .lane, .lane, .lane, .lane, .socket, .socket, .socket, .lane, .lane, .lane, .socket, .none },
+ .{ .none, .none, .none, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .socket, .none },
+ .{ .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none, .none },
+ };
+ } else {
+ unreachable;
+ }
var wave = Wave{
.arena = arena,
.bugs = std.ArrayList(Bug).init(arena.allocator()),
.spawn_rules = spawn_rules,
+ .map = map,
};
- for (1..cells_height - 1) |y| {
- for (1..cells_width - 1) |x| {
- // const is_even = (y + x) % 2 == 0;
- if (true) {
- wave.map[y][x] = .socket;
- }
- }
- }
-
wave.map[height_middle][0] = .ai;
wave.map[height_middle][cells_width - 1] = .ram;
- for (1..cells_width - 1) |x| {
- wave.map[height_middle][x] = .lane;
- }
return wave;
}
@@ -435,7 +465,8 @@ const Game = struct {
.font_title = font_title,
.font_normal = font_normal,
.screen_state = .{
- .main = .init(),
+ // .main = .init(),
+ .battle = .init(),
},
};
}
@@ -564,7 +595,7 @@ const ScreenBattle = struct {
fn init() ScreenBattle {
return .{
- .wave = .init(1), // TODO: change this and move this to ScreenBattle state
+ .wave = .init(1),
.camera = .{
.target = .{ .x = 128, .y = 128 },
.offset = .{
@@ -591,17 +622,29 @@ const ScreenBattle = struct {
fn handlePlayerInput(self: *ScreenBattle, dt: f32) void {
_ = dt;
- if (rl.isMouseButtonPressed(rl.MouseButton.left)) {
- const msp = rl.getMousePosition().scale(1 / self.camera.zoom);
-
- const x: usize = @intFromFloat(msp.x / cell_size);
- const y: usize = @intFromFloat(msp.y / cell_size);
+ const msp = rl.getMousePosition().scale(1 / self.camera.zoom);
+ const mx: usize = @intFromFloat(msp.x / cell_size);
+ const my: usize = @intFromFloat(msp.y / cell_size);
- if (self.wave.get(x, y) == .lane) {
- self.wave.set(x, y, .socket);
- } else if (self.wave.get(x, y) == .socket) {
- self.wave.set(x, y, .lane);
+ if (rl.isMouseButtonPressed(rl.MouseButton.left)) {
+ if (self.wave.get(mx, my) == .lane and debug) {
+ self.wave.set(mx, my, .socket);
+ } else if (self.wave.get(mx, my) == .socket and debug) {
+ self.wave.set(mx, my, .lane);
+ } else if (self.wave.get(mx, my) == .none and debug) {
+ self.wave.set(mx, my, .socket);
}
+ } else if (rl.isMouseButtonPressed(rl.MouseButton.right) and debug) {
+ self.wave.set(mx, my, .none);
+ }
+
+ if (rl.isKeyPressed(rl.KeyboardKey.s)) {
+ const f = std.io.getStdErr().writer();
+ std.zon.stringify.serializeArbitraryDepth(self.wave.map, .{
+ .whitespace = false,
+ }, f) catch unreachable;
+ f.writeByte('\n') catch unreachable;
+ unreachable;
}
}