Do not bundle multiple buffs in UI
This commit is contained in:
parent
034e6beca6
commit
58da527ad5
3 changed files with 32 additions and 16 deletions
|
|
@ -14,14 +14,14 @@ public class StatusUI : MonoBehaviour
|
|||
|
||||
private Dictionary<BattleStatus, StatusIconUI> statusIcons;
|
||||
|
||||
private Dictionary<BuffType, StatusIconUI> buffIcons;
|
||||
private Dictionary<Buff, StatusIconUI> buffIcons;
|
||||
|
||||
public void Init(BattleParticipant battleParticipant, BattleState battleState) {
|
||||
this.battleParticipant = battleParticipant;
|
||||
this.battleState = battleState;
|
||||
|
||||
this.statusIcons = new Dictionary<BattleStatus, StatusIconUI>();
|
||||
this.buffIcons = new Dictionary<BuffType, StatusIconUI>();
|
||||
this.buffIcons = new Dictionary<Buff, StatusIconUI>();
|
||||
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<BuffType, StatusIconUI> previousBuffIcons = new Dictionary<BuffType, StatusIconUI>(this.buffIcons);
|
||||
Dictionary<Buff, StatusIconUI> previousBuffIcons = new Dictionary<Buff, StatusIconUI>(this.buffIcons);
|
||||
List<Buff> 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<StatusIconUI>();
|
||||
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<BuffType, StatusIconUI> p in previousBuffIcons) {
|
||||
BuffType buffType = p.Key;
|
||||
foreach (KeyValuePair<Buff, StatusIconUI> p in previousBuffIcons) {
|
||||
Buff buff = p.Key;
|
||||
StatusIconUI iconUI = p.Value;
|
||||
Destroy(iconUI.gameObject);
|
||||
this.buffIcons.Remove(buffType);
|
||||
this.buffIcons.Remove(buff);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue