public void SetMaxStat(int value, Character.Stats.StatType statType, List <Image> cache, List <Image> maxCache, RectTransform group) { var numHearts = value * 0.5f; var numWholeHearts = (int)numHearts; var addHalfHeart = (numHearts - numWholeHearts) > 0; var heartCount = numWholeHearts + (addHalfHeart ? 1 : 0); if (maxCache.Count > heartCount) { var diff = maxCache.Count - heartCount; for (var i = 0; i < diff; i++) { var heart = maxCache[maxCache.Count - 1]; maxCache.RemoveAt(maxCache.Count - 1); cache.Remove(heart); } } else if (maxCache.Count < heartCount) { UiDbEntry statDb; if (_db.Find(statType, out statDb) == false || statDb.Prefab == null) { return; } var diff = heartCount - maxCache.Count; for (var i = 0; i < diff; i++) { var heart = GameObject.Instantiate(statDb.Prefab); heart.transform.SetParent(group, false); heart.sprite = statDb.Sprites[(int)HeartStages.Empty]; maxCache.Add(heart); } } }
public void SetStat(int value, Character.Stats.StatType statType, List <Image> cache, List <Image> maxCache) { UiDbEntry statDb; if (_db.Find(statType, out statDb) == false) { return; } var numHearts = value * 0.5f; var numWholeHearts = (int)numHearts; var addHalfHeart = (numHearts - numWholeHearts) > 0; var heartCount = numWholeHearts + (addHalfHeart ? 1 : 0); if (cache.Count > heartCount) { if (statDb.Sprites.Count >= (int)HeartStages.Empty) { var diff = cache.Count - heartCount; for (var i = 0; i < diff; i++) { var heart = cache[cache.Count - 1]; cache.RemoveAt(cache.Count - 1); if (heart == null || heart.transform == null || heart.IsDestroyed()) { continue; } heart.sprite = statDb.Sprites[(int)HeartStages.Empty]; } } } else if (cache.Count < heartCount) { if (statDb.Sprites.Count >= (int)HeartStages.Full) { var diff = heartCount - cache.Count; for (var i = 0; i < diff; i++) { var heart = maxCache[cache.Count]; cache.Add(heart); heart.sprite = statDb.Sprites[(int)HeartStages.Full]; } } } if (addHalfHeart) { var heart = cache[cache.Count - 1]; if (heart != null && heart.transform != null && !heart.IsDestroyed()) { heart.sprite = statDb.Sprites[(int)UiManager.HeartStages.Half]; } } }