aboutsummaryrefslogtreecommitdiff
path: root/src/player.odin
diff options
context:
space:
mode:
authoriamcheeseman <[hidden email]>2026-01-12 20:51:28 -0500
committeriamcheeseman <[hidden email]>2026-01-12 20:51:28 -0500
commit7fb83578b99aa224f7545f4118a46e84b58a9295 (patch)
tree515e294ac7de167c4501cc0a8d375b13213faf36 /src/player.odin
parent2b3a3ea9f4bc902b1b357fd149952d4570b25bf3 (diff)
NEW ASSET SYSTEM WOOOOOOOOHOOOOOOOOOOOOOOOOOOOOOOOOO
Diffstat (limited to 'src/player.odin')
-rw-r--r--src/player.odin50
1 files changed, 20 insertions, 30 deletions
diff --git a/src/player.odin b/src/player.odin
index de5a66b..e7fd214 100644
--- a/src/player.odin
+++ b/src/player.odin
@@ -5,9 +5,7 @@ import "core:math"
import rl "vendor:raylib"
-import "draw"
import "phys"
-import "tiled"
PLAYER_SPEED :: 100
PLAYER_ACCEL :: 10
@@ -29,8 +27,7 @@ Player_State :: enum {
// there will only ever be one player, so just make it a global :)
player: struct {
body_handle: phys.Body_Handle,
- anim: draw.Animation,
- sprite: draw.Sprite,
+ sprite: Sprite,
jump_buffer: f32,
coyote_time: f32,
@@ -45,13 +42,6 @@ player: struct {
}
init_player :: proc() {
- anim_ok := draw.init_anim_data(&player.anim, "res/player.json")
- if !anim_ok {
- log.warn("could not load animation")
- rl.CloseWindow()
- return
- }
-
handle, body := phys.make_body(
phys.Rect{{-4, 17}, {8, 16}},
)
@@ -59,7 +49,7 @@ init_player :: proc() {
phys.set_body_position(handle, Vec2{50, 100})
- draw.init_sprite(&player.sprite, player.anim.image_path, player.anim)
+ init_sprite(&player.sprite, .PLAYER)
player.sprite.offset = Vec2{
math.floor(f32(player.sprite.width / 2)),
@@ -70,8 +60,7 @@ init_player :: proc() {
delete_player :: proc() {
phys.remove_body(player.body_handle)
- draw.destroy_sprite(player.sprite)
- draw.delete_anim_data(player.anim)
+ destroy_sprite(player.sprite)
}
@(private="file")
@@ -93,10 +82,10 @@ default_state :: proc(dt: f32) {
input := get_input_dir()
if input != 0 {
- draw.set_sprite_active_tag(&player.sprite, "run")
+ set_sprite_active_tag(&player.sprite, "run")
player.sprite.scale.x = math.sign(input)
} else {
- draw.set_sprite_active_tag(&player.sprite, "idle")
+ set_sprite_active_tag(&player.sprite, "idle")
}
if is_keybind_just_down(actions.jump) {
@@ -116,11 +105,11 @@ default_state :: proc(dt: f32) {
} else {
switch body.vel.y {
case -math.INF_F32..<-50:
- draw.set_sprite_active_tag(&player.sprite, "jump_up")
+ set_sprite_active_tag(&player.sprite, "jump_up")
case 50..<math.INF_F32:
- draw.set_sprite_active_tag(&player.sprite, "jump_down")
+ set_sprite_active_tag(&player.sprite, "jump_down")
case:
- draw.set_sprite_active_tag(&player.sprite, "jump_trans")
+ set_sprite_active_tag(&player.sprite, "jump_trans")
}
}
@@ -176,6 +165,7 @@ dash_state :: proc(dt: f32) {
}
}
+@(private="file")
exit_dash :: proc() {
player.state = .DEFAULT
@@ -189,21 +179,21 @@ exit_dash :: proc() {
change_rooms :: proc() {
body := phys.get_body(player.body_handle)
- width := f32(tiled.current_room.room.width)
- height := f32(tiled.current_room.room.height)
+ width := f32(current_room.width)
+ height := f32(current_room.height)
if body.pos.x < 0 || body.pos.x > width \
|| body.pos.y < 0 || body.pos.y > height {
- prev_room_pos := [2]f32{
- f32(tiled.current_room.room.x),
- f32(tiled.current_room.room.y),
+ prev_room_pos := Vec2{
+ f32(current_room.x),
+ f32(current_room.y),
}
- changed := tiled.open_new_room_at({i32(body.pos.x), i32(body.pos.y)})
+ changed := open_room_at({i32(body.pos.x), i32(body.pos.y)})
if changed {
- new_room_pos := [2]f32{
- f32(tiled.current_room.room.x),
- f32(tiled.current_room.room.y),
+ new_room_pos := Vec2{
+ f32(current_room.x),
+ f32(current_room.y),
}
diff := prev_room_pos - new_room_pos
@@ -226,7 +216,7 @@ update_player :: proc(dt: f32) {
body := phys.get_body(player.body_handle)
player.sprite.pos = body.pos
- draw.update_sprite(&player.sprite, dt)
+ update_sprite(&player.sprite, dt)
player.dash_cooldown -= dt
player.jump_buffer -= dt
@@ -236,5 +226,5 @@ update_player :: proc(dt: f32) {
}
draw_player :: proc() {
- draw.sprite(player.sprite)
+ draw_sprite(player.sprite)
}