示例#1
0
 public void ShowInformation(BuildingFullDto info)
 {
     Text =
         string.Format(
             "{0}\n" +
             (info.OwnerName == "no owner" ? "Без владельца\n" : "Владелец: '{1}'\n") +
             (info.IsFinished ? "" : "Не достроено\nСтроители: " + info.Builders + "/" + info.MaxBuilders + "\n") +
             "\nНезанятых людей: {2}",
             Names.RealBuildingsNames[info.Name],
             info.OwnerName,
             info.FreePeople)
         + (info.IsIncomeBuilding || info.IsWorkerBuilding ? "\n" : "")
         + (info.IsIncomeBuilding
             ? (info.Income.Where((t, i) => t != info.LastIncome[i]).Any() // if income is not maximal
                 ? string.Format(
                    "\nМаксимальный доход: {0}"
                    + "\nТекущий доход: {1}",
                    info.Income.ToResourcesString(),
                    info.LastIncome.ToResourcesString())
                 : "\nДоход:" + info.Income.ToResourcesString())
             : "")
         + (info.IsWorkerBuilding
             ? string.Format(
                "\nРабочие: {0}/{1}",
                info.Workers,
                info.MaxWorkers)
             : "")
         + (info.IsArmyBuilding
             ? string.Format(
                "\n\nТренируемая армия: {0}" +
                "\nВремя тренировки: {1}/{2} ({3})" +
                "\nТребуется людей: {4}" +
                "\nТребуется ресурсов: {5}",
                info.CreatingArmy,
                info.ArmyCreationTime.ToTimerString(),
                info.ArmyCreationTimeMax.ToTimerString(),
                info.ArmyQueueSize,
                info.PeopleForArmy,
                info.ArmyPrice.ToResourcesString())
             : "")
         + (info.Armies.Any()
             ? "\n\nАрмии: " + info.Armies.Aggregate("", (sum, army) => sum + ", " + army).Substring(2)
             : "");
 }
示例#2
0
        public bool SelectCell(Vector position)
        {
            _lastUpgrades    = NetManager.Current.GetUpgrades(position);
            _lastBuildingDto = NetManager.Current.GetBuildingInfo(position);
            _lastPosition    = position;

            GameUi.Current.Clear();

            TableManager.Current.Clear();
            var i = 0;

            foreach (var upgrade in _lastUpgrades)
            {
                TableManager.Current.SetButton(
                    i % 5, i / 5, Sprites.Current.GetIcon(upgrade.Name) ?? Sprites.Current.UpgradeIcon,
                    b =>
                {
                    GameUi.Current.Clear();
                    TimeSpan upgradeTime;
                    if (NetManager.Current.TryUpgrade(upgrade.Name, _lastPosition, out upgradeTime))
                    {
                        BuildingsManager.Current.SetUpgrade(_lastPosition, upgrade.Name,
                                                            NetManager.Current.LastLogin, upgradeTime.Multiple(1 / Settings.Current.GameSpeed));

                        ActionProcessor.Current.AddActionToQueue(
                            () => GameUi.Current.Refresh(),
                            TimeSpan.FromSeconds(0.5));
                    }
                    else
                    {
                        GameUi.Current.ShowMessage("Улучшение невозможно", TimeSpan.FromSeconds(4));
                    }
                },
                    string.Format(
                        "Улучшить до {0} ({1})"
                        + "\nСтоимость: {2}",
                        Names.RealBuildingsNames[upgrade.Name],
                        upgrade.Time.ToTimerString(),
                        upgrade.Price.ToResourcesString())
                    + (upgrade.RequiredResearches.Any()
                        ? "\n\nТребуются исследования: " +
                       upgrade.RequiredResearches.Aggregate("", (sum, r) => sum + "\n - " + r)
                        : ""));

                TableManager.Current.Buttons[i].GetComponent <Button>().interactable
                    = upgrade.Possibility == UpgradePossibility.Possible;
                i++;
            }

            if (_lastBuildingDto.OwnerName == NetManager.Current.LastLogin || _lastBuildingDto.Name == "Plain")
            {
                if (_lastBuildingDto.IsArmyBuilding && _lastBuildingDto.IsFinished)
                {
                    TableManager.Current.SetButton(
                        2, 0, Sprites.Current.UpgradeIcon,
                        b =>
                    {
                        TimeSpan trainingTime;
                        NetManager.Current.TrainArmy(_lastPosition, out trainingTime);

                        BuildingsManager.Current.SetTimer(_lastPosition, trainingTime.Multiple(1 / Settings.Current.GameSpeed));
                    },
                        "Тренировать армию");
                }
            }

            ShowPreviousData();

            return(true);
        }
示例#3
0
 public void HighlightCell(Vector position)
 {
     _lastBuildingDto = NetManager.Current.GetBuildingInfo(position);
     ShowPreviousData();
 }