usg/src/main.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));
}
}
}