package main import rl "vendor:raylib" SCREEN_W :: 1280 SCREEN_H :: 720 TARGET_FPS :: 120 // test edit main :: proc() { rl.InitWindow(SCREEN_W, SCREEN_H, "ARPG Demo") rl.SetTargetFPS(TARGET_FPS) defer rl.CloseWindow() gfx := gfx_init() defer gfx_free(gfx) camera := rl.Camera3D { position = {0, 80, 80}, target = {0, 0, 0}, up = {0, 1, 0}, fovy = 400, projection = .ORTHOGRAPHIC, } state := new(GameState) state.camera = camera state.collisions = make([dynamic]CollisionPair) defer delete(state.collisions) state.player = spawn(state, make_player(&gfx)) // spawn(state, make_enemy({400, 300}, .Brute)) // spawn(state, make_enemy({-400, 200}, .Scout)) // spawn(state, make_enemy({300, -350}, .Grunt)) // spawn(state, make_enemy({-300, -300}, .Scout)) // spawn(state, make_enemy({100, 400}, .Grunt)) // spawn(state, make_enemy({-150, 350}, .Grunt)) // spawn(state, make_enemy({450, -150}, .Brute)) // spawn(state, make_enemy({-450, 100}, .Scout)) for !rl.WindowShouldClose() { dt := rl.GetFrameTime() sys_input(state, dt) sys_update(state, dt) sys_sweep(state) if pe := get_entity(state, state.player); pe != nil { p := get_base(pe).pos state.camera.target = {p.x, 0, p.y} state.camera.position = state.camera.target + {600, 600, 600} } sys_draw(state) } }