diff options
Diffstat (limited to 'src/main.odin')
| -rw-r--r-- | src/main.odin | 86 |
1 files changed, 39 insertions, 47 deletions
diff --git a/src/main.odin b/src/main.odin index ff794f6..3a90917 100644 --- a/src/main.odin +++ b/src/main.odin @@ -24,55 +24,44 @@ Rect :: struct { } state: struct { - player: Player, + camera: rl.Camera2D, platform_list: Entity_List(Platform), - - room: tiled.Map, } init :: proc() { + state.camera.zoom = 1 + // state.camera.offset = {draw.SCREEN_WIDTH/2, draw.SCREEN_HEIGHT/2} + init_keybinds() draw.init() - init_player(&state.player) + init_player() - room, err := tiled.load_map("res/room_begin.tmj") - if err != .NONE { - log.errorf("Error loading map (%v)", err) - } - state.room = room + // room, err := tiled.load_map("res/room_begin.tmj") + // if err != .NONE { + // log.errorf("Error loading map (%v)", err) + // } + // state.room = room - make_map_collisions :: proc( - x: i32, - y: i32, - tile: tiled.Tile, - tile_set: tiled.Tile_Set, - ) { - objs, is_object_layer := tile.object_group.layer.(tiled.Object_Layer) - if !is_object_layer { - return - } + tiled.load_world("res/map.world") + tiled.open_new_room_at({0, 0}) - for obj in objs { - make_platform({ - Vec2{f32(x), f32(y)} + obj.position, - obj.size, - }) - } - } - - tiled.iterate_map_tiles(state.room, make_map_collisions) + setup_map_collisions() } frame :: proc() { - update_player(&state.player, rl.GetFrameTime()) + update_player(rl.GetFrameTime()) draw.new_frame() + + rl.BeginMode2D(state.camera) + + draw_player() + tiled.draw_map(tiled.current_room.tmap) + draw_platforms() - draw_player(state.player) - tiled.draw_map(state.room) - // draw_platforms() + rl.EndMode2D() fps_text := fmt.caprintf( "FPS: %v", rl.GetFPS(), @@ -84,27 +73,27 @@ frame :: proc() { } cleanup :: proc() { - delete_player(state.player) + delete_player() delete_entity_list(state.platform_list) - tiled.delete_map(state.room) + tiled.delete_world() phys.destroy_world() } main :: proc() { - when ODIN_DEBUG { - track: mem.Tracking_Allocator - mem.tracking_allocator_init(&track, context.allocator) - context.allocator = mem.tracking_allocator(&track) + when ODIN_DEBUG { + track: mem.Tracking_Allocator + mem.tracking_allocator_init(&track, context.allocator) + context.allocator = mem.tracking_allocator(&track) - defer { - if len(track.allocation_map) > 0 { - fmt.eprintf( + defer { + if len(track.allocation_map) > 0 { + fmt.eprintf( "=== %v allocations not freed: ===\n", len(track.allocation_map), ) total := 0 - for _, entry in track.allocation_map { - fmt.eprintf( + for _, entry in track.allocation_map { + fmt.eprintf( "- %v bytes @ %v (%v, mode %v)\n", entry.size, entry.location, @@ -112,12 +101,12 @@ main :: proc() { entry.mode, ) total += entry.size - } + } fmt.eprintf("=== a total of %v bytes unfreed ===\n", total) - } - mem.tracking_allocator_destroy(&track) - } + } + mem.tracking_allocator_destroy(&track) + } } logger := log.create_console_logger() @@ -131,6 +120,9 @@ main :: proc() { init() for !rl.WindowShouldClose() { + // pbody := phys.get_body(player.body_handle) + // state.camera.target = {pbody.pos.x, pbody.pos.y} + frame() free_all(context.temp_allocator) |
