// Обновление текстовок
        public void UpdateDescription()
        {
            Color LColor = Color.red;

            switch (FActivePlanet.Owner.Role)
            {
            case SSHRole.Self:
                LColor = SSHLocale.IntToColor(0x00CAFFB2); break;

            case SSHRole.Friend:
                LColor = Color.green; break;

            case SSHRole.Neutral:
                LColor = SSHLocale.IntToColor(0xF0F0F0AE); break;

            case SSHRole.Enemy:
                LColor = SSHLocale.IntToColor(0xFF8E0090); break;
            }

            if (FActivePlanet.PlanetType == PlanetType.Earth)
            {
                Owner.text = FActivePlanet.Class.ToString() + " <color=\"#" + ColorUtility.ToHtmlStringRGB(LColor) + "\">" + FActivePlanet.Name + "</color>";
            }
            else
            {
                Owner.text = "<color=\"#CBCC3C\">" + FActivePlanet.PlanetType.ToString() + "</color>";
            }
        }
 // Обновление уровня лояльности
 public void UpdateCapture(int AValue, SSHRole ARole)
 {
     // Закрасим кружок
     _OwnerCapture.fillAmount = AValue / 100000f;
     // Под цвет владельца
     if (ARole == SSHRole.Self)
     {
         _OwnerCapture.color = SSHLocale.IntToColor(0x00CAFF79);
     }
     else if (ARole == SSHRole.Friend)
     {
         _OwnerCapture.color = SSHLocale.IntToColor(0x00770079);
     }
     else
     {
         _OwnerCapture.color = SSHLocale.IntToColor(0xFF8E0090);
     }
     // Выключим графику захвата
     if (AValue == 0)
     {
         if (FSelf.CaptureValue > 0)
         {
             _OwnerCapture.enabled = false;
             _OwnerLevel.enabled   = false;
         }
     }
     // Включим графику захвата
     else if (FSelf.CaptureValue == 0)
     {
         _OwnerCapture.enabled = true;
         _OwnerLevel.enabled   = true;
     }
 }
        // Активация функционала установки торгового пути или свойства планеты
        private void DoPlanetDrag(bool AMouseUp)
        {
            // При активном выборе пути торговли нужно протянуть до курсора мышки
            if ((SSHShared.MonoSource != null) && (_PathSelection.enabled))
            {
                Vector3 LPosition = SSHLocale.PointToCircle(FSelf.Transform, C_TradePathRadius);
                LPosition.y = 0;
                _PathSelection.SetPosition(1, LPosition);
                return;
            }
            // Если планета недоступна или уже выбрана для протягивания - не запускаем функционал повторно

            /*if ((FShowingAccept != TShowingAction.Show) || (SSHShared.MonoSource != null))
             *  return;*/
            // Покажем детали планеты
            if (AMouseUp)
            {
                Engine.UIPlanetDetails.Show(FSelf);/*
                                                    * // Или начнем протягивание пути
                                                    * else if ((FSelf.ControlEnemy == 0)
                                                    * && (FSelf.Type != PlanetType.Hole)
                                                    * && (Vector3.Distance(Input.mousePosition, FClickPoint) > C_PathDelta))
                                                    * {
                                                    * /*SSHShared.MonoSource = FSelf;
                                                    * _PathSelection.enabled = true;
                                                    * ShowRadius(true);
                                                    * DoPlanetDrag(AMouseUp);
                                                    * }*/
            }
        }
Exemple #4
0
        // Отображение отсчета таймера
        private void UpdateTimer()
        {
            int LTime;

            // Определим с какого таймера брать данные
            if (FSelf.Timer(ShipTimer.PortalJump) > 0)
            {
                LTime = FSelf.Timer(ShipTimer.PortalJump);
            }
            else if (FSelf.Timer(ShipTimer.Annihilation) > 0)
            {
                LTime = FSelf.Timer(ShipTimer.Annihilation);
            }
            else if (FSelf.Timer(ShipTimer.Construction) > 0)
            {
                LTime = FSelf.Timer(ShipTimer.Construction);
            }
            else
            {
                return;
            }
            // Определим оставшееся время, прячем расхождение секунды с сервером
            if (LTime < 0)
            {
                _Timer.text = SSHLocale.SecondsToString(LTime);
            }
            else if (LTime - Mathf.RoundToInt(Time.time) >= 0)
            {
                _Timer.text = SSHLocale.SecondsToString(LTime - Mathf.RoundToInt(Time.time));
            }
        }
        public void UpdateActive()
        {
            if (FShip == null)
            {
                return;
            }
            int LHP = FShip.Tech(ShipTech.Hp).Value;

            HP.text     = SSHLocale.CountToLongString(LHP);
            Damage.text = SSHLocale.CountToLongString(LHP - FShip.HP);
            Count.text  = SSHLocale.CountToLongString(FShip.Count);
        }
 // Обновление состояния планеты, видимое всем игрокам
 public void UpdateState()
 {
     // Обновим таймер для тайминговых планет
     if (FSelf.IsTiming)
     {
         if (FSelf.State == PlanetState.Active)
         {
             _TimerBackground.color = SSHLocale.IntToColor(0x003807FF);
         }
         else
         {
             _TimerBackground.color = SSHLocale.IntToColor(0x636363FF);
         }
     }
 }
 private void Update()
 {
     // Неподписанные и видимые в камере планеты игнорируются
     if (FSelf.Subscription != PlanetSubscription.Enabled)
     {
         return;
     }
     // Обновим таймер времени активности
     if (FSelf.IsTiming)
     {
         _TimerText.text = SSHLocale.SecondsToString(Mathf.RoundToInt(FSelf.TimerStateTime - (Time.time - FSelf.TimerUpdateTime)));
     }
     // Повернем слоты вокруг сферы
     DoSlotsRotate();
 }
        // Обновление роли планеты
        private void DoUpdateRole()
        {
            /* цвета вынести */
            switch (FSelf.Owner.Role)
            {
            case SSHRole.Self:
                _OwnerLevel.color = SSHLocale.IntToColor(0x00CAFFB2); break;

            case SSHRole.Friend:
                _OwnerLevel.color = Color.green; break;

            case SSHRole.Neutral:
                _OwnerLevel.color = SSHLocale.IntToColor(0xF0F0F0AE); break;

            case SSHRole.Enemy:
                _OwnerLevel.color = SSHLocale.IntToColor(0xFF8E0090); break;
            }
        }
Exemple #9
0
 // UI графика: владелец корябля
 private void ShowCornerColor()
 {
     if (FSelf.Owner.Role == SSHRole.Self)
     {
         _CountBackground.color = SSHLocale.IntToColor(C_ColorSelfBack);
         _CountCorner.color     = SSHLocale.IntToColor(C_ColorSelfCorner);
     }
     else if (FSelf.Owner.Role == SSHRole.Enemy)
     {
         _CountBackground.color = SSHLocale.IntToColor(C_ColorEnemyBack);
         _CountCorner.color     = SSHLocale.IntToColor(C_ColorEnemyCorner);
     }
     else
     {
         _CountBackground.color = SSHLocale.IntToColor(C_ColorNeutralBack);
         _CountCorner.color     = SSHLocale.IntToColor(C_ColorNeutralCorner);
     }
 }
Exemple #10
0
 // Смена типа или количества кораблика
 public void Change(ShipType AShipType, int ACount)
 {
     FSelf.Count = ACount;
     // Обновление строчки количества
     _TextCount.text = SSHLocale.CountToShortString(ACount);
     // Тип кораблика не изменился
     if (AShipType == FSelf.ShipType)
     {
         return;
     }
     // Меняем тип кораблика
     FSelf.ShipType = AShipType;
     if (FPrefab != null)
     {
         Destroy(FPrefab.gameObject);
     }
     // Для нового кораблика задаем спрайт
     if (AShipType != ShipType.Empty)
     {
         FPrefab        = PrefabManager.CreateShipModel(_PanelModel, Engine.Player.Race, AShipType).transform;
         _TextType.text = AShipType.ToString();
         _PanelInfo.SetActive(true);
         if (IsFocused)
         {
             CheckEnterAny();
         }
     }
     // Для пустого слота выключаем кнопку
     else
     {
         _PanelInfo.SetActive(false);
         if (IsFocused)
         {
             Deactivate();
         }
     }
 }
 // Смены цены покупки стека
 void DoButtonChangePrice(int ACount)
 {
     FShipCount = Mathf.Min(FShipMax, ACount);
     // Если можно купить несколько кораблей, распишем формулу покупки
     if (FShipCount > 0)
     {
         FLastSlot.UpdatePrice(FShipCount.ToString() + " x " + FShipCost.ToString() + " = " + SSHLocale.CountToLongString(ACount * FShipCost));
     }
     else
     {
         FLastSlot.UpdatePrice();
     }
     InputCount.text = FShipCount.ToString();
     DoSelectInput();
 }
        private void doshow()
        {
            OwnerName.text = FShip.Owner.Name;
            Type.text      = FShip.ShipType.ToString();
            FTime          = Time.time;

            string LText = "Описание " + FShip.ShipType.ToString() + "\r\n";

            LText += "Номер в реестре: " + FShip.UID + "\r\n\r";

            if (FShip.AttachedPlanet != null)
            {
                LText += "Присоединен: " + FShip.AttachedPlanet.UID + ", " + FShip.AttachedPlanet.PlanetType + " : ";
                if (FShip.IsAutoTarget)
                {
                    LText += "Автоприцел\r\n\r\n";
                }
                else
                {
                    LText += "Вручную\r\n\r\n";
                }
            }
            LText += "Топливо: " + FShip.Fuel;
            if (FShip.Timer(ShipTimer.Refill) > 0)
            {
                LText += " (" + SSHLocale.SecondsToString(FShip.Timer(ShipTimer.Refill) - Mathf.RoundToInt(Time.time)) + ")\r\n";
            }
            else
            {
                LText += "\r\n";
            }

            if (FShip.Timer(ShipTimer.Constructor) > 0)
            {
                LText += "Constructor: (" + SSHLocale.SecondsToString(FShip.Timer(ShipTimer.Constructor) - Mathf.RoundToInt(Time.time)) + ")\r\n";
            }

            LText += "Убито: " + FShip.Destructed + "\r\n";
            LText += "В группе: " + FShip.Group + "\r\n";
            LText += "Инициатор: " + FShip.Script.IsActive + "\r\n";
            LText += "Состояние: " + FShip.State + ", Режим: " + FShip.Mode + "\r\n\r\n";

            if (FShip.Weapon(ShipWeaponType.Left).Ship != null)
            {
                LText += "Левое орудие: " + FShip.Weapon(ShipWeaponType.Left).Ship.UID + ", " + FShip.Weapon(ShipWeaponType.Left).Ship.ShipType + "\r\n";
            }
            if (FShip.Weapon(ShipWeaponType.Right).Ship != null)
            {
                LText += "Правое орудие: " + FShip.Weapon(ShipWeaponType.Right).Ship.UID + ", " + FShip.Weapon(ShipWeaponType.Right).Ship.ShipType + "\r\n";
            }
            if (FShip.Weapon(ShipWeaponType.Center).Ship != null)
            {
                LText += "Центральное орудие: " + FShip.Weapon(ShipWeaponType.Center).Ship.UID + ", " + FShip.Weapon(ShipWeaponType.Center).Ship.ShipType + "\r\n";
            }
            if (FShip.Weapon(ShipWeaponType.Rocket).Ship != null)
            {
                LText += "Ракетное орудие: " + FShip.Weapon(ShipWeaponType.Rocket).Ship.UID + ", " + FShip.Weapon(ShipWeaponType.Rocket).Ship.ShipType + "\r\n";
            }

            Description.text = LText;

            UpdateActive();
            UpdatePassive();
        }
Exemple #13
0
 // Смена количества елиниц ресурсов у слота
 public void ChangeCount(int AValue)
 {
     FCount.text       = SSHLocale.CountToShortString(AValue);
     FCollider.enabled = (AValue == 0);
 }