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) : ""); }
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); }
public void HighlightCell(Vector position) { _lastBuildingDto = NetManager.Current.GetBuildingInfo(position); ShowPreviousData(); }