46 lines
1.0 KiB
Zig
46 lines
1.0 KiB
Zig
const std = @import("std");
|
|
const SDL = @import("sdl2");
|
|
|
|
const Renderer = @import("Renderer.zig");
|
|
const Game = @import("Game.zig");
|
|
const MainMenu = @import("MainMenu.zig");
|
|
|
|
const State = @import("flow.zig").State;
|
|
|
|
pub fn main() !void {
|
|
var renderer = try Renderer.init();
|
|
defer renderer.deinit();
|
|
|
|
var main_menu = MainMenu.init(renderer);
|
|
var game = Game.init(renderer);
|
|
|
|
var current_state: State = main_menu.state;
|
|
|
|
try SDL.image.init(.{ .jpg = true });
|
|
|
|
mainLoop: while (true) {
|
|
const start = SDL.getTicks64();
|
|
|
|
while (SDL.pollEvent()) |ev| {
|
|
switch (ev) {
|
|
.quit => break :mainLoop,
|
|
else => {},
|
|
}
|
|
}
|
|
|
|
current_state = switch (current_state) {
|
|
.main_menu => main_menu.tick(),
|
|
.game => game.tick(),
|
|
};
|
|
|
|
renderer.render();
|
|
|
|
const delay = SDL.getTicks64() - start;
|
|
|
|
std.debug.print("{} ms\n", .{delay});
|
|
if (delay < 16) {
|
|
SDL.delay(16 - @intCast(u32, delay));
|
|
}
|
|
}
|
|
}
|