Пример #1
0
    private void DrawUnitsBar(UnitBar unitBar, List <WorldObject> indicatedObjects, string indicatorName)
    {
        indicatedObjects = indicatedObjects
                           .Where(p => ((p is Unit) && ((Unit)p).IsMajor()) || (p is BossPart) || (p is Building))
                           .ToList();

        var indicators     = unitBar.GetIndicators();
        var indicatedUnits = indicators.Select(p => p.GetIndicatedObject()).ToList();

        int newIndicatorsCounter = 0;

        for (int i = 0; i < indicatedUnits.Count; i++)
        {
            if (
                indicatedObjects.Count <= i ||
                !indicatedObjects[i] ||
                !indicatedUnits[i] ||
                indicatedObjects[i].ObjectId != indicatedUnits[i].ObjectId
                )
            {
                indicatedUnits = new List <WorldObject>();
                var indicatorsWrapper = unitBar.GetIndicatorsWrapper();
                new List <Indicator>(
                    indicatorsWrapper.transform
                    .GetComponentsInChildren <Indicator>()
                    )
                .ForEach(s => Destroy(s.gameObject));
                break;
            }
        }

        indicatedObjects
        .ToList().ForEach(p =>
        {
            if (!indicatedUnits.Contains(p))
            {
                var indicatorsWrapper  = unitBar.GetIndicatorsWrapper();
                var newIndicatorObject = GameObject.Instantiate(ResourceManager.GetUIElement(indicatorName));
                var newIndicator       = newIndicatorObject.GetComponent <Indicator>();

                if (newIndicator)
                {
                    newIndicator.Init(p);
                    newIndicator.transform.parent = indicatorsWrapper.transform;

                    var rectTransform = newIndicatorObject.GetComponent <RectTransform>();
                    rectTransform.anchoredPosition = new Vector2(0,
                                                                 -30 - 69 * (indicatedUnits.Count() + newIndicatorsCounter));
                    rectTransform.sizeDelta = new Vector2(0, 60);

                    newIndicatorsCounter++;
                }
            }
        });

        if (newIndicatorsCounter > 0)
        {
            unitBar.Update();
        }
    }
Пример #2
0
 public void Update(GameTime gameTime, Player player)
 {
     hpBar.Update(player.Health, player.maxHealth);
     energyBar.Update(player.Energy, player.maxEnergy);
     achController.Update(gameTime);
 }