code / tomo-lost-signal

Lines522 Tomo498 Markdown11 make10
1 others 3
INI3
(38 lines)
1 # Defines a struct representing the player, which is controlled by WASD keys
3 use ./raylib.tm
4 use ./world.tm
6 struct Player(
7 pos,prev_pos:Vector2,
8 facing=Vector2(1,0),
9 has_signal=no,
10 dead=no,
11 target_vel=Vector2(0,0),
12 texture=Texture.load((./assets/RocketWhite.png)),
14 WALK_SPEED := Num32(500.)
15 ACCEL := Num32(0.1)
16 SIZE := Vector2(32, 32)
17 TEXTURE : Texture? = none
19 func update(p:@Player)
20 return if p.dead
22 vel := (p.pos - p.prev_pos)/World.DT
23 vel = vel.mix(p.target_vel, Player.ACCEL)
25 p.prev_pos, p.pos = p.pos, p.pos + World.DT*vel
26 if not p.pos.dist(p.prev_pos).near(0, .1, .1)
27 p.facing = p.facing.mix((p.pos-p.prev_pos).norm(), .1)
29 func draw(p:Player)
30 return if p.dead
31 angle := p.facing.angle()
32 tint := if p.has_signal
33 Color(0xff,0xff,0xff)
34 else
35 Color(0xcc,0x66,0x66)
36 p.texture.draw(p.pos, Player.SIZE, angle=angle+Num32.TAU/4, tint=tint)
37 if not p.has_signal
38 DrawText(CString("???"), Int32(p.pos.x,yes) - 24, Int32(p.pos.y,yes) - 40, 24, Color(0xff,0xff,0xff,0xa0))