RiftMayhem/Assets/Scripts/BuildManager/BuildManagerUIController.cs
Pedro Gomes 86deb651ba Build Manager & new abilities update
- Build Manager system to allow swapping, saving and loading build setups for characters
- Necromancer new channeled ability: Soulfire
- Mage new melee ability: Cold Slash
- Mage new summon ability: Mirror Image
- Added summon ability support to spawn more than one minion per cast
2024-12-27 23:23:10 +00:00

85 lines
2.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class BuildManagerUIController : MonoBehaviour
{
[SerializeField] private List<TMP_Dropdown> abilitySlotsDropdowns = new List<TMP_Dropdown>();
[SerializeField] private GameEventListener_BuildManager onBuildManagerInitialized;
BuildManager buildManager;
List<BaseAbility> possibleAbilities = new List<BaseAbility>();
List<TMP_Dropdown.OptionData> abilitiesOptions = new List<TMP_Dropdown.OptionData>();
TMP_Dropdown.OptionData optionData = new TMP_Dropdown.OptionData();
int pickedEntry;
string pickedEntryName;
BaseAbility ability;
private void Awake()
{
onBuildManagerInitialized.Response.AddListener(DependencyInjection);
abilitySlotsDropdowns[0].onValueChanged.AddListener((x) => UpdateAbilitySlotOnDropdownValueChanged(0, x));
abilitySlotsDropdowns[1].onValueChanged.AddListener((x) => UpdateAbilitySlotOnDropdownValueChanged(1, x));
abilitySlotsDropdowns[2].onValueChanged.AddListener((x) => UpdateAbilitySlotOnDropdownValueChanged(2, x));
abilitySlotsDropdowns[3].onValueChanged.AddListener((x) => UpdateAbilitySlotOnDropdownValueChanged(3, x));
}
private void UpdateAbilitySlotOnDropdownValueChanged(int dropdownIndex, int pickedEntry)
{
ability = GetAbilityFromDropdown(dropdownIndex);
buildManager.UpdateBuildOnAbilitiesChanged(dropdownIndex, ability);
}
private BaseAbility GetAbilityFromDropdown(int dropdownIndex)
{
pickedEntry = abilitySlotsDropdowns[dropdownIndex].value;
return possibleAbilities[pickedEntry];
}
private void DependencyInjection(BuildManager buildManager)
{
this.buildManager = buildManager;
InitializeDropdowns();
}
private void InitializeDropdowns()
{
possibleAbilities = BuildLibrary.Instance.GetBaseAbilities(buildManager.CharacterClass);
abilitiesOptions.Clear();
for (int i = 0; i < possibleAbilities.Count; i++)
{
optionData = new TMP_Dropdown.OptionData();
optionData.text = possibleAbilities[i].displayName;
optionData.image = possibleAbilities[i].Icon;
abilitiesOptions.Add(optionData);
}
for (int i = 0; i < abilitySlotsDropdowns.Count; i++)
{
abilitySlotsDropdowns[i].options.Clear();
abilitySlotsDropdowns[i].AddOptions(abilitiesOptions);
abilitySlotsDropdowns[i].RefreshShownValue();
abilitySlotsDropdowns[i].value = possibleAbilities.IndexOf(buildManager.SelectedBuildSlots[i].ability);
}
}
}