- 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
85 lines
2.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|