ld55/src3/Actor/actor_possessed.gd

49 lines
1.1 KiB
GDScript

extends ActorState
class_name ActorPossessed
var sub_state = null
func _init(_actor):
super(_actor)
func _ready():
pass
func _process(_delta):
if Input.is_action_just_pressed("actor_convulse"):
set_sub_state(ActorConvulse.new(self.actor))
if Input.is_action_just_released("actor_convulse"):
set_sub_state(null)
func _physics_process(_delta):
self.actor.modulate = Color.RED
var mydir = Vector2(0, 0)
if Input.is_action_pressed("actor_up"):
mydir.y -= 1
if Input.is_action_pressed("actor_down"):
mydir.y += 1
if Input.is_action_pressed("actor_left"):
mydir.x -= 1
if Input.is_action_pressed("actor_right"):
mydir.x += 1
if mydir.length_squared() > 0:
mydir = mydir.normalized()
self.actor.sprite().rotation = mydir.angle() - PI/2
self.actor.anim_walk()
else:
self.actor.anim_idle()
if self.actor:
self.actor.velocity = mydir * self.actor.SPEED
self.actor.move_and_slide()
func set_sub_state(new_state):
if self.sub_state:
remove_child(self.sub_state)
self.sub_state = new_state
if self.sub_state:
add_child(self.sub_state)