# Defines a struct representing the player, which is controlled by WASD keys use libraylib.so use use use vectors use ./world.tm struct Player(pos,prev_pos:Vec2): WALK_SPEED := 500. ACCEL := 0.3 FRICTION := 0.99 SIZE := Vec2(30, 30) func update(p:&Player): target_x := inline C:Num { (Num_t)((IsKeyDown(KEY_A) ? -1 : 0) + (IsKeyDown(KEY_D) ? 1 : 0)) } target_y := inline C:Num { (Num_t)((IsKeyDown(KEY_W) ? -1 : 0) + (IsKeyDown(KEY_S) ? 1 : 0)) } target_vel := Vec2(target_x, target_y):norm() * WALK_SPEED vel := (p.pos - p.prev_pos)/World.DT vel *= FRICTION vel = vel:mix(target_vel, ACCEL) p.prev_pos, p.pos = p.pos, p.pos + World.DT*vel func draw(p:Player): Color.PLAYER:draw_rectangle(p.pos, Player.SIZE)