1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
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,
)
}
|