ludumdare50/Assets/Scripts/UI/MinionBar.cs
2022-04-03 17:56:30 -04:00

75 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class MinionBar : MonoBehaviour {
public GameObject minionIconPrefab;
List<AIEntity> minionTypes;
List<MinionIcon> minionIcons;
int currentIndex;
void Awake() {
minionTypes = new List<AIEntity>();
minionIcons = new List<MinionIcon>();
}
public void ChangeSelectedIcon(InputAction.CallbackContext context) {
float floatDelta = context.ReadValue<float>();
int delta = 0;
if (floatDelta > 0.5f) {
delta = 1;
} else if (floatDelta < -0.5f) {
delta = -1;
}
minionIcons[currentIndex].UnSelect();
currentIndex += delta;
if (currentIndex >= minionIcons.Count) {
currentIndex = 0;
} else if (currentIndex < 0) {
currentIndex = minionIcons.Count - 1;
}
minionIcons[currentIndex].Select();
// print("new selected minion type : " + currentIndex.ToString());
}
public void AddMinionType(AIEntity newMinionPrefab) {
minionTypes.Add(newMinionPrefab);
MinionIcon newIcon = Instantiate(minionIconPrefab, transform)
.GetComponent<MinionIcon>();
minionIcons.Add(newIcon);
newIcon.icon.sprite = newMinionPrefab.renderer.sprite;
newIcon.icon.preserveAspect = true;
newIcon.indexInMinionList = minionIcons.Count;
if (currentIndex == minionIcons.Count - 1) {
newIcon.Select();
} else {
newIcon.UnSelect();
}
}
public void UpdateReload(float reloadFraction) {
float reloadFractionCorrected = reloadFraction;
if (reloadFractionCorrected < 0f) {
reloadFractionCorrected = 0f;
} else if (reloadFractionCorrected > 1f) {
reloadFractionCorrected = 1f;
}
foreach (MinionIcon icon in minionIcons) {
icon.reloadSlider.value = reloadFractionCorrected;
}
}
public AIEntity GetCurrentMinion() {
return minionTypes[currentIndex];
}
}