45 lines
813 B
GDScript
45 lines
813 B
GDScript
|
extends CharacterBody2D
|
||
|
class_name Actor
|
||
|
|
||
|
@export var auto_die = false
|
||
|
@export var player = false
|
||
|
|
||
|
var state = null
|
||
|
const SPEED = 400
|
||
|
var vel: Vector2 = Vector2(0, 0)
|
||
|
|
||
|
func _ready():
|
||
|
if self.auto_die:
|
||
|
self.set_state(ActorExplode.new(self))
|
||
|
|
||
|
func _physics_process(_delta):
|
||
|
pass
|
||
|
|
||
|
func set_state(new_state):
|
||
|
if self.state != null:
|
||
|
remove_child(self.state)
|
||
|
self.state = new_state
|
||
|
if self.state:
|
||
|
add_child(self.state)
|
||
|
|
||
|
func sprite() -> AnimatedSprite2D:
|
||
|
return $AnimatedSprite2D
|
||
|
|
||
|
func explode():
|
||
|
sprite().visible = false
|
||
|
$CPUParticles2D.restart()
|
||
|
|
||
|
func anim_walk():
|
||
|
sprite().animation = 'walk'
|
||
|
if not sprite().is_playing():
|
||
|
sprite().play()
|
||
|
|
||
|
func anim_idle():
|
||
|
sprite().animation = 'idle'
|
||
|
if not sprite().is_playing():
|
||
|
sprite().play()
|
||
|
|
||
|
|
||
|
func _on_cpu_particles_2d_finished():
|
||
|
self.queue_free()
|