package main import "core:fmt" import "core:image/png" import "vendor:sdl3" WIDTH :: 1600 HEIGHT :: 900 Game :: struct { render: ^sdl3.Renderer, units: [dynamic]Unit, } main :: proc() { assert(sdl3.Init(sdl3.INIT_VIDEO)) defer sdl3.Quit() window := sdl3.CreateWindow("Game", 1600, 900, nil) assert(window != nil) defer sdl3.DestroyWindow(window) render := sdl3.CreateRenderer(window, "vulkan") assert(render != nil) units := make([dynamic]Unit) append(&units, Unit{faction = Faction.Player, position = Position{x = 500, y = 500}, hp = 100}) append(&units, Unit{faction = Faction.Enemy, position = Position{x = 700, y = 700}, hp = 100}) game := Game { render = render, units = units, } for { event: sdl3.Event for sdl3.PollEvent(&event) { #partial switch event.type { case .QUIT: return case .KEY_DOWN: { fmt.println(event.key) } } } sdl3.SetRenderDrawColor(render, 0, 0, 0, 0) sdl3.RenderClear(render) for unit in game.units { RenderUnit(unit, game) } sdl3.RenderPresent(render) } }