extends Actor enum PlayerState { NORMAL = 0, # < default from Actor DASHING = 1, STANDING = 2, ATTACKING = 3 }; var screen_size # Size of the game window. var last_process_velocity = Vector2() var key_map func start(pos): position = pos state_map = {PlayerState.NORMAL: PlayerNormal.new(), PlayerState.ATTACKING: PlayerAttack.new()} var ak = AttackKey.new() key_map = { KEY_Z: ak.register(self) } show() func _process(delta): state_map[state].run(self, delta) func _ready(): screen_size = get_viewport_rect().size func _on_AnimatedSprite_animation_finished(): state_map[state].spriteFinished(self) func getAnimatedSprite(): return $AnimatedSprite