package demonchime // import "core:math" // import "core:math/rand" // import "core:time" import "base:runtime" import "core:log" import "core:fmt" import rl "vendor:raylib" import "draw" import "phys" Vec2 :: [2]f32 Rect :: struct { start: Vec2, size: Vec2, } state: struct { player: Player, platform_list: Entity_List(Platform), } init :: proc() { init_keybinds() draw.init() init_player(&state.player) make_platform(Rect{ start = {50, 50}, size = {64, 20} }) i := f32(20) for i < draw.SCREEN_WIDTH - 20 - 64 { make_platform(Rect{ start = {i, 340}, size = {64, 20} }) i += 65 } make_platform(Rect{ start = {160, 320}, size = {20, 20} }) make_platform(Rect{ start = {240, 280}, size = {40, 20} }) make_platform(Rect{ start = {260, 260}, size = {20, 20} }) make_platform(Rect{ start = {300, 220}, size = {40, 20} }) make_platform(Rect{ start = {240, 180}, size = {40, 20} }) make_platform(Rect{ start = {200, 140}, size = {40, 20} }) make_platform(Rect{ start = {180, 100}, size = {20, 20} }) make_platform(Rect{ start = {140, 100}, size = {16, 16} }) } frame :: proc() { update_player(&state.player, rl.GetFrameTime()) draw.new_frame() fps_text := fmt.caprintf( "FPS: %v", rl.GetFPS(), allocator = context.temp_allocator, ) rl.DrawText(fps_text, 5, 5, 8, rl.GREEN) draw_platforms() draw_player(state.player) draw.end_frame() } cleanup :: proc() { delete_entity_list(state.platform_list) } main :: proc() { logger := log.create_console_logger() context.logger = logger defer log.destroy_console_logger(logger) rl.InitWindow(480 * 2, 360 * 2, "Demonchime") rl.SetWindowState({.WINDOW_RESIZABLE}) init() for !rl.WindowShouldClose() { frame() free_all(context.temp_allocator) } cleanup() }