package demonchime import "core:fmt" import "core:math" import "core:math/linalg" import sapp "shared:sokol/app" import "draw" Player :: struct { pos: Vec2, anim: draw.Animation, sprite: draw.Sprite, } init_player :: proc(player: ^Player) { anim_ok := draw.init_anim_data(&player.anim, "res/robot2.json") if !anim_ok { fmt.println("coult not load animation") sapp.quit() return } draw.init_sprite(&player.sprite, player.anim.image_path, player.anim) } deinit_player :: proc(player: ^Player) { draw.delete_anim_data(player.anim) } update_player :: proc(player: ^Player, dt: f32) { SPEED :: 100 input: Vec2 if is_keybind_down(state.input, state.input.move_up) { input.y -= 1 } if is_keybind_down(state.input, state.input.move_left) { input.x -= 1 } if is_keybind_down(state.input, state.input.move_down) { input.y += 1 } if is_keybind_down(state.input, state.input.move_right) { input.x += 1 } if linalg.length2(input) > 0 { input = linalg.normalize(input) draw.set_sprite_active_tag(&player.sprite, "down_run") } else { draw.set_sprite_active_tag(&player.sprite, "down_idle") } player.pos += input * SPEED * dt draw.update_sprite(&player.sprite, dt) } draw_player :: proc(player: Player) { draw.draw_sprite( &state.renderer, player.sprite, player.pos, ) }