示例#1
0
        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);
                }
            }
        }
示例#2
0
        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];
                }
            }
        }