-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.zig
67 lines (55 loc) · 2.24 KB
/
main.zig
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const std = @import("std");
const raylib = @import("raylib");
const gameLib = @import("game.zig");
pub fn main() !void {
const Game = gameLib.ConwayGame(gameLib.GameConfig{ .blockSize = 5 });
var game = Game{};
game.init();
raylib.initWindow(@as(i32, @intCast(game.windowWidth)), @as(i32, @intCast(game.windowHeight)), "Conway's Game of Life");
defer raylib.closeWindow();
raylib.setTargetFPS(game.fps);
var isPaused: bool = false;
// loading font
const text = raylib.measureTextEx(
raylib.Font.init("/home/mohitjangra/.fonts/UbuntuNerdFont-Regular.ttf"),
"PAUSED",
128,
0,
);
const textStartX: i32 = @intFromFloat(text.x / 2);
const textStartY: i32 = @intFromFloat(text.y / 2);
while (!raylib.windowShouldClose()) {
const mousePosition = raylib.getMousePosition();
if (raylib.isMouseButtonDown(raylib.MouseButton.left)) {
if (@as(i32, @intFromFloat(mousePosition.x)) > 0 and
@as(i32, @intFromFloat(mousePosition.x)) < game.windowWidth and
@as(i32, @intFromFloat(mousePosition.y)) > 0 and
@as(i32, @intFromFloat(mousePosition.y)) < game.windowHeight)
{
const y: usize = @intCast(@divTrunc(@as(u32, @intFromFloat(mousePosition.y)), @as(u32, @intCast(game.blockSize))));
const x: usize = @intCast(@divTrunc(@as(u32, @intFromFloat(mousePosition.x)), @as(u32, @intCast(game.blockSize))));
game.resurrectCell(x, y);
}
}
raylib.beginDrawing();
defer raylib.endDrawing();
raylib.clearBackground(raylib.Color.gray);
game.drawAll();
game.drawGrid();
if (raylib.isKeyPressed(raylib.KeyboardKey.space)) {
isPaused = !isPaused;
if (isPaused) {
raylib.setTargetFPS(0);
} else {
raylib.setTargetFPS(game.fps);
}
}
if (isPaused) {
raylib.drawText("PAUSED", textStartX, textStartY, 124, raylib.Color.red);
} else {
game.updateAll();
}
const fps: i32 = raylib.getFPS();
raylib.drawText(raylib.textFormat("%i", .{fps}), 0, 0, 36, raylib.Color.black);
}
}