way too many changes to list, oops. big rewrite.
This commit is contained in:
78
Scenes/Menus/CharacterSelect/character_select.gd
Normal file
78
Scenes/Menus/CharacterSelect/character_select.gd
Normal file
@ -0,0 +1,78 @@
|
||||
class_name CharacterSelect extends Node3D
|
||||
|
||||
signal hero_selected(hero_class: int)
|
||||
signal hero_confirmed()
|
||||
|
||||
@export var hero_preview_panel: CharacterPreview
|
||||
|
||||
var podiums: Array[CharacterPodium]
|
||||
|
||||
var character_selected: int = 0
|
||||
var can_hit_button: bool = true
|
||||
|
||||
func _ready() -> void:
|
||||
hero_preview_panel.set_preview(Data.characters[0])
|
||||
var heroes: int = Data.characters.size()
|
||||
var x: int = 0
|
||||
for hero: HeroClass in Data.characters:
|
||||
var pivot: Node3D = Node3D.new()
|
||||
$Podiums.add_child(pivot)
|
||||
var podium: CharacterPodium = hero.podium.instantiate() as CharacterPodium
|
||||
podium.position = Vector3(0.0, -0.5, 5.0)
|
||||
podiums.append(podium)
|
||||
pivot.add_child(podium)
|
||||
pivot.rotate_y((TAU / heroes) * x)
|
||||
x += 1
|
||||
#if Data.save_data.mage_unlocked:
|
||||
#podiums.visible = true
|
||||
|
||||
|
||||
func reset_button() -> void:
|
||||
can_hit_button = true
|
||||
|
||||
|
||||
func setup_ui() -> void:
|
||||
#TODO: This should all tie into a proper achievements system
|
||||
if character_selected == 0 or (character_selected == 1 and Data.save_data.mage_unlocked):
|
||||
$VBoxContainer/Button.disabled = false
|
||||
hero_preview_panel.set_preview(Data.characters[character_selected])
|
||||
hero_selected.emit(character_selected)
|
||||
elif character_selected == 1 and !Data.save_data.mage_unlocked and Data.save_data.mage_card_seen_in_shop:
|
||||
hero_preview_panel.setup_with_basic_text(Data.characters[character_selected], "Buy " + str(Data.save_data.mage_cards_bought) + "/10 scrolls in the shop to unlock")
|
||||
else:
|
||||
$VBoxContainer/Button.disabled = true
|
||||
hero_preview_panel.setup_with_basic_text(Data.characters[character_selected], podiums[character_selected].text)
|
||||
|
||||
|
||||
func retreat_selector() -> void:
|
||||
if !can_hit_button:
|
||||
return
|
||||
can_hit_button = false
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_trans(Tween.TRANS_CUBIC)
|
||||
tween.tween_property($Node3D, "rotation_degrees", Vector3(0.0, $Node3D.rotation_degrees.y - 90.0, 0.0), 1.0)
|
||||
tween.tween_callback(reset_button)
|
||||
character_selected -= 1
|
||||
if character_selected < 0:
|
||||
character_selected = Data.characters.size() - 1
|
||||
setup_ui()
|
||||
|
||||
|
||||
func advance_selector() -> void:
|
||||
if !can_hit_button:
|
||||
return
|
||||
can_hit_button = false
|
||||
var tween: Tween = create_tween()
|
||||
tween.set_ease(Tween.EASE_OUT)
|
||||
tween.set_trans(Tween.TRANS_CUBIC)
|
||||
tween.tween_property($Node3D, "rotation_degrees", Vector3(0.0, $Node3D.rotation_degrees.y + 90.0, 0.0), 1.0)
|
||||
tween.tween_callback(reset_button)
|
||||
character_selected += 1
|
||||
if character_selected >= Data.characters.size():
|
||||
character_selected = 0
|
||||
setup_ui()
|
||||
|
||||
|
||||
func _on_confirm_button_pressed() -> void:
|
||||
hero_confirmed.emit()
|
Reference in New Issue
Block a user