ludumdare50/Assets/Scripts/UI/MinionBar.cs
2022-04-02 15:12:15 -04:00

77 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<Entity> minionTypes;
List<MinionIcon> minionIcons;
int currentIndex;
void Awake() {
minionTypes = new List<Entity>();
minionIcons = new List<MinionIcon>();
}
void Start() {
UpdateReload(0f);
}
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(Entity newMinionPrefab) {
minionTypes.Add(newMinionPrefab);
MinionIcon newIcon = Instantiate(minionIconPrefab, transform).GetComponent<MinionIcon>();
minionIcons.Add(newIcon);
// minionIcons[i].icon = minionTypes.icon; // TODO
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 Entity GetCurrentMinion() {
return minionTypes[currentIndex];
}
}