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(); } }
public void Update(GameTime gameTime, Player player) { hpBar.Update(player.Health, player.maxHealth); energyBar.Update(player.Energy, player.maxEnergy); achController.Update(gameTime); }