38 lines
957 B
GDScript
38 lines
957 B
GDScript
extends Node
|
|
|
|
enum Role { TANK, DAMAGE, HEALER }
|
|
|
|
var current_role: int = Role.DAMAGE
|
|
|
|
@export var tank_set: AbilitySet
|
|
@export var damage_set: AbilitySet
|
|
@export var healer_set: AbilitySet
|
|
|
|
@onready var player: CharacterBody3D = get_parent()
|
|
|
|
func _unhandled_input(event: InputEvent) -> void:
|
|
if event.is_action_pressed("class_tank"):
|
|
set_role(Role.TANK)
|
|
elif event.is_action_pressed("class_damage"):
|
|
set_role(Role.DAMAGE)
|
|
elif event.is_action_pressed("class_healer"):
|
|
set_role(Role.HEALER)
|
|
|
|
func set_role(new_role: int) -> void:
|
|
current_role = new_role
|
|
EventBus.role_changed.emit(player, current_role)
|
|
|
|
func get_role_icon() -> String:
|
|
match current_role:
|
|
Role.TANK: return "T"
|
|
Role.DAMAGE: return "D"
|
|
Role.HEALER: return "H"
|
|
return ""
|
|
|
|
func get_ability_set() -> AbilitySet:
|
|
match current_role:
|
|
Role.TANK: return tank_set
|
|
Role.DAMAGE: return damage_set
|
|
Role.HEALER: return healer_set
|
|
return damage_set
|