RedCoin.gd 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. extends Node2D
  2. @export var id := 0
  3. var already_collected := false
  4. const COLLECTION_SFXS := [preload("uid://drr1qqeuhmv6m"), preload("uid://de1tktivtggdv"), preload("uid://cdtlca36qsba5"), preload("uid://dd47k4c5sypwp"), preload("uid://chi2nogc2op4i")]
  5. const SPINNING_RED_COIN = preload("res://Scenes/Prefabs/Entities/Items/SpinningRedCoin.tscn")
  6. func _ready() -> void:
  7. if ChallengeModeHandler.is_coin_collected(id):
  8. already_collected = true
  9. $Sprite.play("Collected")
  10. set_visibility_layer_bit(0, false)
  11. func on_player_entered(_player: Player) -> void:
  12. collected()
  13. func collected() -> void:
  14. if already_collected:
  15. AudioManager.play_sfx("coin", global_position, 2)
  16. else:
  17. AudioManager.play_sfx(COLLECTION_SFXS[ChallengeModeHandler.red_coins], global_position)
  18. ChallengeModeHandler.red_coins += 1
  19. Global.score += 200
  20. ChallengeModeHandler.set_value(id, true)
  21. queue_free()
  22. func summon_bounced_coin() -> void:
  23. var node = SPINNING_RED_COIN.instantiate()
  24. node.id = id
  25. node.global_position = global_position + Vector2(0, 8)
  26. add_sibling(node)
  27. queue_free()