DataDeletionNode.gd 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. extends HBoxContainer
  2. @export var title := ""
  3. @export var selected := false
  4. @export var campaigns: Array[String]
  5. @export var extra_confirm := false
  6. signal deleted(campaign: String)
  7. var confirming := false
  8. var confirm_2 := false
  9. var selected_index := 0:
  10. set(value):
  11. selected_index = value
  12. func _process(_delta: float) -> void:
  13. if selected:
  14. handle_inputs()
  15. else:
  16. confirm_2 = false
  17. confirming = false
  18. $Cursor.modulate.a = int(selected)
  19. for i in [$AutoScrollContainer, %AutoScrollContainer2]:
  20. i.is_focused = selected
  21. %Title.text = tr(title) + ":"
  22. if not confirming:
  23. %Value.modulate = Color.WHITE
  24. %Value.text = tr(str(campaigns[selected_index]))
  25. else:
  26. if confirm_2:
  27. %Value.text = tr("DELETION_CONFIRM_2")
  28. else:
  29. %Value.text = tr("DELETION_CONFIRM")
  30. %Value.modulate = Color.RED
  31. %LeftArrow.modulate.a = int(selected and selected_index > 0)
  32. %RightArrow.modulate.a = int(selected and selected_index < campaigns.size() - 1)
  33. func set_selected(active := false) -> void:
  34. selected = active
  35. func handle_inputs() -> void:
  36. if Input.is_action_just_pressed("ui_left"):
  37. confirming = false
  38. confirm_2 = false
  39. selected_index -= 1
  40. if Settings.file.audio.extra_sfx == 1:
  41. AudioManager.play_global_sfx("menu_move")
  42. if Input.is_action_just_pressed("ui_right"):
  43. confirming = false
  44. confirm_2 = false
  45. selected_index += 1
  46. if Settings.file.audio.extra_sfx == 1:
  47. AudioManager.play_global_sfx("menu_move")
  48. if Input.is_action_just_pressed("ui_accept"):
  49. if confirming or confirm_2:
  50. if extra_confirm and confirm_2 == false:
  51. confirm_2 = true
  52. else:
  53. AudioManager.play_global_sfx("cannon")
  54. confirm_2 = false
  55. confirming = false
  56. deleted.emit(campaigns[selected_index])
  57. else:
  58. confirm_2 = false
  59. confirming = true
  60. selected_index = clamp(selected_index, 0, campaigns.size() - 1)