Added Pickup
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
extends StaticBody2D
|
||||
|
||||
|
||||
enum PickupType {CHERRY, FLY_AGARIC, GREEN_APPLE, RED_APPLE}
|
||||
@export var pickup_type: PickupType
|
||||
|
||||
enum PickupState {PREPARING, SHOWING_UP, IDLING, HIGHLIGHTING}
|
||||
@export var pickup_state: PickupState = PickupState.PREPARING
|
||||
|
||||
|
||||
var ANIMATIONS_BY_TYPE : Dictionary = {
|
||||
PickupType.CHERRY: "cherry",
|
||||
PickupType.FLY_AGARIC: "fly_agaric",
|
||||
PickupType.GREEN_APPLE: "green_apple",
|
||||
PickupType.RED_APPLE: "red_apple",
|
||||
}
|
||||
|
||||
var ANIMATIONS_BY_STATE : Dictionary = {
|
||||
PickupState.PREPARING: "preparing",
|
||||
PickupState.SHOWING_UP: "showing_up",
|
||||
PickupState.IDLING: "idling",
|
||||
PickupState.HIGHLIGHTING: "highlighting",
|
||||
}
|
||||
|
||||
|
||||
|
||||
func _init(type : PickupType = PickupType.RED_APPLE) -> void:
|
||||
pickup_type = type
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
play_animation()
|
||||
|
||||
|
||||
func highlight() -> void:
|
||||
pickup_state = PickupState.HIGHLIGHTING
|
||||
play_animation()
|
||||
|
||||
|
||||
func play_animation() -> void:
|
||||
var animation : String
|
||||
if pickup_state == PickupState.PREPARING:
|
||||
animation = ANIMATIONS_BY_STATE[pickup_state]
|
||||
else:
|
||||
animation = "%s_%s" % [
|
||||
ANIMATIONS_BY_TYPE[pickup_type],
|
||||
ANIMATIONS_BY_STATE[pickup_state]
|
||||
]
|
||||
$AnimatedSprite2D.play(animation)
|
||||
|
||||
|
||||
func _on_animated_sprite_2d_animation_finished() -> void:
|
||||
if pickup_state == PickupState.PREPARING:
|
||||
pickup_state = PickupState.SHOWING_UP
|
||||
play_animation()
|
||||
elif pickup_state == PickupState.SHOWING_UP:
|
||||
pickup_state = PickupState.IDLING
|
||||
play_animation()
|
||||
elif pickup_state == PickupState.HIGHLIGHTING:
|
||||
pickup_state = PickupState.IDLING
|
||||
play_animation()
|
||||
Reference in New Issue
Block a user