package main import rl "vendor:raylib" import "core:slice" Vec2 :: [2]f32 Vec2i :: [2]i32 WINDOW_WIDTH : i32 = 800 WINDOW_HEIGHT : i32 = 480 main :: proc() { rl.SetConfigFlags(rl.ConfigFlags{.BORDERLESS_WINDOWED_MODE, .VSYNC_HINT, .WINDOW_RESIZABLE}) monitor := rl.GetCurrentMonitor() WINDOW_WIDTH = rl.GetMonitorWidth(monitor) WINDOW_HEIGHT = rl.GetMonitorHeight(monitor) rl.InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "SinePong") rl.SetTargetFPS(9999) stack_init() defer { for s, i in state_stack { free(s) } } game := game_init() append(&state_stack, game) for (!rl.WindowShouldClose()) { if rl.IsWindowResized() { WINDOW_WIDTH = rl.GetScreenWidth() WINDOW_HEIGHT = rl.GetScreenHeight() } current_state := state_stack[len(state_stack)-1] delta := rl.GetFrameTime() current_state->update(delta) { rl.BeginDrawing() defer rl.EndDrawing() current_state->draw() } } }