private void UpdateIconPosition(CountDownUnitIcon cdui) { float time = cdui.Unit.WaitTime; cdui.Icon.GetComponent <RectTransform>().transform.localPosition = new Vector3(GetIconX(time), cdui.Icon.GetComponent <RectTransform>().transform.localPosition.y, 0); if (cdui.Unit.Moved) { float penalty; if (cdui.Unit.LockdownPenalty) { penalty = cdui.Unit.LockdownPenaltyTime + cdui.Unit.BaseCountDownTime; cdui.Unit.LockdownPenalty = false; } else { penalty = cdui.Unit.BaseCountDownTime; } cdui.Icon.GetComponent <CountDownIcon>().ShowPenaltyTime(penalty); cdui.Unit.Moved = false; DecideIconPosition(cdui); cdui.Unlocked = false; } }
private void DecideIconPosition(CountDownUnitIcon cdui) { var pos = cdui.Unit.Owned ? 0 : 5; cdui.Position = pos; SetYPosition(cdui, pos); AvoidOverlap(); }
private void SetYPosition(CountDownUnitIcon cdui, int posId) { int[] candidates = { 1, 2, 3, 4, 5, -1, -2, -3, -4, -5 }; var y = candidates[posId] * IconYOffset; cdui.Icon.transform.localPosition = new Vector3(cdui.Icon.transform.localPosition.x, y, 0); //Schin change y>0 condition to (0,0) so that text is not too high // Also add canvas to Text of Countdown Icon to make time text always visible Vector2 textOffset = y > 0 ? new Vector2(0, TextYOffset) : new Vector2(0, -TextYOffset); cdui.Icon.GetComponent <CountDownIcon>().SetTextPosition(textOffset); }
// Add units to the countdown bar public void RegisterUnit(BasicUnit unit) { if (!UnitTypeCDIconMapper.map.TryGetValue(unit.unit.type, out string iconPath)) { return; } var texture = (Texture)Resources.Load(iconPath); GameObject icon = Instantiate(modelIcon); icon.GetComponent <RawImage>().texture = texture; var cdui = new CountDownUnitIcon(); cdui.Unit = unit; cdui.Icon = icon; targets.Add(cdui); icon.GetComponent <RectTransform>().SetParent(this.transform); cdui.Icon.GetComponent <CountDownIcon>().TargetUnit = cdui.Unit; DecideIconPosition(cdui); }