diff --git a/Assets/Battle/UI/StatusIconUI.cs b/Assets/Battle/UI/StatusIconUI.cs index 4d5b295..c550191 100644 --- a/Assets/Battle/UI/StatusIconUI.cs +++ b/Assets/Battle/UI/StatusIconUI.cs @@ -10,15 +10,19 @@ public class StatusIconUI : MonoBehaviour public Text turnsText; private BattleStatus status; + private Buff buff; public void InitStatus(BattleStatus status) { + this.status = status; Sprite sprite = Resources.Load(GetStatusResourcePath(status)); this.statusImage.sprite = sprite; } - public void InitBuff(BuffType buffType) { - Sprite sprite = Resources.Load(GetBuffResourcePath(buffType)); + public void InitBuff(Buff buff) { + this.buff = buff; + Sprite sprite = Resources.Load(GetBuffResourcePath(buff.Type)); this.statusImage.sprite = sprite; + this.SetNumber(buff.Amount); } private static string GetStatusResourcePath(BattleStatus status) { @@ -29,8 +33,18 @@ public class StatusIconUI : MonoBehaviour return "BattleIcons/BuffIcon" + buffType; } - public void SetAmount(int amount, int index) { - this.turnsText.text = "" + amount; + public void UpdateStatusAmount(int amount) { + if (this.status == BattleStatus.None) { + throw new System.Exception(); + } + this.SetNumber(amount); + } + + public void SetPosition(int index) { this.transform.localPosition = new Vector2(-index * 22, 0); } + + private void SetNumber(int number) { + this.turnsText.text = "" + number; + } } diff --git a/Assets/Battle/UI/StatusUI.cs b/Assets/Battle/UI/StatusUI.cs index 638ce28..e2ec928 100644 --- a/Assets/Battle/UI/StatusUI.cs +++ b/Assets/Battle/UI/StatusUI.cs @@ -14,14 +14,14 @@ public class StatusUI : MonoBehaviour private Dictionary statusIcons; - private Dictionary buffIcons; + private Dictionary buffIcons; public void Init(BattleParticipant battleParticipant, BattleState battleState) { this.battleParticipant = battleParticipant; this.battleState = battleState; this.statusIcons = new Dictionary(); - this.buffIcons = new Dictionary(); + this.buffIcons = new Dictionary(); this.battleParticipant.OnStatusChanged += this.NotifyBattleStatusOrBuffsChanged; this.battleParticipant.OnBuffsChanged += this.NotifyBattleStatusOrBuffsChanged; } @@ -54,7 +54,8 @@ public class StatusUI : MonoBehaviour iconUI.InitStatus(status); this.statusIcons[status] = iconUI; } - iconUI.SetAmount(this.battleParticipant.GetStatusAmount(status), index++); + iconUI.UpdateStatusAmount(this.battleParticipant.GetStatusAmount(status)); + iconUI.SetPosition(index++); } else { if (iconUI != null) { Destroy(iconUI.gameObject); @@ -63,28 +64,28 @@ public class StatusUI : MonoBehaviour } } - Dictionary previousBuffIcons = new Dictionary(this.buffIcons); + Dictionary previousBuffIcons = new Dictionary(this.buffIcons); List currentBuffs = this.battleState.BuffManager.GetAllBuffsFor(this.battleParticipant); foreach (Buff buff in currentBuffs) { StatusIconUI iconUI = null; - previousBuffIcons.TryGetValue(buff.Type, out iconUI); + previousBuffIcons.TryGetValue(buff, out iconUI); if (iconUI == null) { iconUI = Instantiate(this.iconPrefab.gameObject, this.transform).GetComponent(); - iconUI.InitBuff(buff.Type); - this.buffIcons[buff.Type] = iconUI; + iconUI.InitBuff(buff); + this.buffIcons[buff] = iconUI; } else { - previousBuffIcons.Remove(buff.Type); + previousBuffIcons.Remove(buff); } - iconUI.SetAmount(buff.Amount, index++); + iconUI.SetPosition(index++); } // If a buff is left in previousBuffIcons, it has been removed. - foreach (KeyValuePair p in previousBuffIcons) { - BuffType buffType = p.Key; + foreach (KeyValuePair p in previousBuffIcons) { + Buff buff = p.Key; StatusIconUI iconUI = p.Value; Destroy(iconUI.gameObject); - this.buffIcons.Remove(buffType); + this.buffIcons.Remove(buff); } } } diff --git a/TODO.txt b/TODO.txt index 3798e2d..fc8ab16 100644 --- a/TODO.txt +++ b/TODO.txt @@ -12,6 +12,7 @@ Battle - No need to start coroutine for targeting - Indicate which Default is triggering - Merge BattleClock with BattleState +- Do not bundle together buffs of the same type that have different durations Story - Make dialogue show letter by letter.