public void StartClearingSelectedBuilding() { Entity selectedBuilding = this.buildingSelector.SelectedBuilding; BuildingTypeVO buildingType = selectedBuilding.Get <BuildingComponent>().BuildingType; if (buildingType.Type == BuildingType.Clearable) { int credits = buildingType.Credits; int materials = buildingType.Materials; int contraband = buildingType.Contraband; string text = StringUtils.ToLowerCaseUnderscoreSeperated(buildingType.Type.ToString()); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(text); stringBuilder.Append("|"); stringBuilder.Append(buildingType.BuildingID); stringBuilder.Append("|"); stringBuilder.Append(buildingType.SizeX * buildingType.SizeY); if (PayMeScreen.ShowIfNotEnoughCurrency(credits, materials, contraband, stringBuilder.ToString(), new OnScreenModalResult(this.OnPayMeForCurrencyResult))) { return; } if (PayMeScreen.ShowIfNoFreeDroids(new OnScreenModalResult(this.OnPayMeForDroidResult), selectedBuilding)) { return; } this.ConfirmClearingBuilding(selectedBuilding); } }
public void StartChampionRepair(SmartEntity building) { BuildingTypeVO buildingType = building.BuildingComp.BuildingType; this.repairChampionType = this.FindChampionTypeIfPlatform(buildingType); if (this.repairChampionType == null) { return; } int credits = this.repairChampionType.Credits; int materials = this.repairChampionType.Materials; int contraband = this.repairChampionType.Contraband; if (credits != 0 || materials != 0 || contraband != 0) { string purchaseContext = string.Format("{0}|{1}|{2}|{3}", new object[] { StringUtils.ToLowerCaseUnderscoreSeperated(this.repairChampionType.Type.ToString()), this.repairChampionType.TroopID, this.repairChampionType.Lvl, "repair" }); if (PayMeScreen.ShowIfNotEnoughCurrency(credits, materials, contraband, purchaseContext, new OnScreenModalResult(this.OnPayMeForCurrencyResult))) { return; } } if (PayMeScreen.ShowIfNoFreeDroids(new OnScreenModalResult(this.OnPayMeForDroidResult), null)) { return; } this.ConfirmRepair(); }
private void OnPvpButtonClicked(UXButton button) { StringBuilder stringBuilder = new StringBuilder(); TournamentVO currentPlanetActiveTournament = Service.Get <TournamentController>().CurrentPlanetActiveTournament; stringBuilder.Append((currentPlanetActiveTournament != null) ? currentPlanetActiveTournament.Uid : "no_tournament"); if (!GameUtils.HasAvailableTroops(false, null)) { AlertScreen.ShowModal(false, base.LangController.Get("NOT_ENOUGH_TROOPS_TITLE", new object[0]), base.LangController.Get("NOT_ENOUGH_TROOPS_FOR_ATTACK", new object[0]), null, null); stringBuilder.Append("|"); stringBuilder.Append("no_troops"); Service.Get <EventManager>().SendEvent(EventId.UIAttackScreenSelection, new ActionMessageBIData("PvP", stringBuilder.ToString())); return; } if (!GameUtils.CanAffordCredits(Service.Get <PvpManager>().GetPvpMatchCost())) { PayMeScreen.ShowIfNotEnoughCurrency(Service.Get <PvpManager>().GetPvpMatchCost(), 0, 0, "PvP_battle", new OnScreenModalResult(this.OnNotEnoughCreditsModalResult)); return; } if (base.Player.ProtectedUntil > ServerTime.Time) { DisableProtectionAlertScreen.ShowModal(new OnScreenModalResult(this.OnConfirmInvalidation), null); return; } this.PurchaseNextBattle(); base.EvtManager.SendEvent(EventId.UIAttackScreenSelection, new ActionMessageBIData("PvP", stringBuilder.ToString())); }
public static void RearmAllTraps() { int num; int num2; int num3; TrapUtils.GetRearmAllTrapsCost(out num, out num2, out num3); if (!GameUtils.CanAffordCredits(num) || !GameUtils.CanAffordMaterials(num2) || !GameUtils.CanAffordContraband(num3)) { int arg_51_0 = num; int arg_51_1 = num2; int arg_51_2 = num3; string arg_51_3 = "Rearm_All_Traps"; if (TrapUtils.< > f__mg$cache0 == null) { TrapUtils.< > f__mg$cache0 = new OnScreenModalResult(TrapUtils.OnPayMeForCurrencyResultForMultiTrap); } PayMeScreen.ShowIfNotEnoughCurrency(arg_51_0, arg_51_1, arg_51_2, arg_51_3, TrapUtils.< > f__mg$cache0); return; } List <SmartEntity> rearmableTraps = TrapUtils.GetRearmableTraps(); int i = 0; int count = rearmableTraps.Count; while (i < count) { TrapUtils.RearmTrapForClient(rearmableTraps[i]); i++; } TrapUtils.SendRearmTrapServerCommand(rearmableTraps); }
public static bool RearmTrapForClient(SmartEntity selectedBuilding) { BuildingTypeVO buildingType = selectedBuilding.BuildingComp.BuildingType; TrapTypeVO trapTypeVO = Service.StaticDataController.Get <TrapTypeVO>(buildingType.TrapUid); int rearmCreditsCost = trapTypeVO.RearmCreditsCost; int rearmMaterialsCost = trapTypeVO.RearmMaterialsCost; int rearmContrabandCost = trapTypeVO.RearmContrabandCost; if (!GameUtils.CanAffordCredits(rearmCreditsCost) || !GameUtils.CanAffordMaterials(rearmMaterialsCost)) { int arg_73_0 = rearmCreditsCost; int arg_73_1 = rearmMaterialsCost; int arg_73_2 = rearmContrabandCost; string arg_73_3 = GameUtils.GetBuildingPurchaseContext(buildingType, null, false, false); if (TrapUtils.< > f__mg$cache1 == null) { TrapUtils.< > f__mg$cache1 = new OnScreenModalResult(TrapUtils.OnPayMeForCurrencyResultSingleTrap); } PayMeScreen.ShowIfNotEnoughCurrency(arg_73_0, arg_73_1, arg_73_2, arg_73_3, TrapUtils.< > f__mg$cache1); return(false); } GameUtils.SpendCurrency(rearmCreditsCost, rearmMaterialsCost, rearmContrabandCost, true); Service.TrapController.SetTrapState(selectedBuilding.TrapComp, TrapState.Armed); selectedBuilding.BuildingComp.BuildingTO.CurrentStorage = 1; Service.UXController.HUD.ShowContextButtons(selectedBuilding); Service.BuildingController.RedrawRadiusForSelectedBuilding(); return(true); }
private void HandleCurrencyOfferPurchase(TargetedBundleVO currentOffer) { int credits = 0; int materials = 0; int contraband = 0; int num = 0; int num2 = 0; GameUtils.GetCurrencyCost(currentOffer.Cost, out credits, out materials, out contraband, out num2, out num); if (!GameUtils.CanAffordCosts(credits, materials, contraband, num)) { if (num == 0) { PayMeScreen.ShowIfNotEnoughCurrency(credits, materials, contraband, "SPD", new OnScreenModalResult(this.OnCurrencyPurchased)); } else { GameUtils.PromptToBuyCrystals(); } } else { this.MakeCurrencyOfferPurchase(); } }
public bool BuyShards(int slotIndex, int quantity, Action <int, bool> deferredSuccess, Action <object> serverCallback) { CostVO costVO = ShardShopController.CalculateCost(slotIndex, quantity, this.CurrentShopData); MissingCurrencyTypes missingCurrencyTypes = CostUtils.CheckForMissingCurrency(Service.CurrentPlayer, costVO); if (missingCurrencyTypes != MissingCurrencyTypes.Hard) { if (missingCurrencyTypes != MissingCurrencyTypes.MultipleSoft) { if (missingCurrencyTypes == MissingCurrencyTypes.Soft) { ShardShopPurchaseCookie purchaseCookie = new ShardShopPurchaseCookie(slotIndex, quantity, deferredSuccess, serverCallback, this.ClientPredictionId, costVO); PayMeScreen.ShowIfNotEnoughCurrency(costVO.Credits, costVO.Materials, costVO.Contraband, "shard", purchaseCookie, new OnScreenModalResult(this.OnPurchaseMissingSoftCurrency)); } } else { ShardShopPurchaseCookie purchaseCookie2 = new ShardShopPurchaseCookie(slotIndex, quantity, deferredSuccess, serverCallback, this.ClientPredictionId, costVO); MultiResourcePayMeScreen.ShowIfNotEnoughMultipleCurrencies(costVO, "shard", purchaseCookie2, new OnScreenModalResult(this.OnPurchaseMissingSoftCurrency)); } } else { GameUtils.PromptToBuyCrystals(); } if (missingCurrencyTypes != MissingCurrencyTypes.None) { return(false); } this.ClientPredictionId++; this.PurchasePoolIdShard(slotIndex, quantity, serverCallback, this.ClientPredictionId, costVO); return(true); }
private void OnPayMeForCurrencyResult(object result, object cookie) { Entity selectedBuilding = this.buildingSelector.SelectedBuilding; if (GameUtils.HandleSoftCurrencyFlow(result, cookie) && !PayMeScreen.ShowIfNoFreeDroids(new OnScreenModalResult(this.OnPayMeForDroidResult), selectedBuilding)) { this.ConfirmClearingBuilding(selectedBuilding); } }
private void OnPayMeForCurrencyResult(object result, object cookie) { if (GameUtils.HandleSoftCurrencyFlow(result, cookie)) { if (!PayMeScreen.ShowIfNoFreeDroids(new OnScreenModalResult(this.OnPayMeForDroidResult), null)) { this.ConfirmRepair(); } } else { this.repairChampionType = null; } }
private void OnPayMeForCurrencyResult(object result, object cookie) { bool flag = GameUtils.HandleSoftCurrencyFlow(result, cookie); if (flag) { Entity selectedBuilding = this.buildingSelector.SelectedBuilding; BuildingTypeVO buildingType = selectedBuilding.Get <BuildingComponent>().BuildingType; if (buildingType.Type != BuildingType.DroidHut && PayMeScreen.ShowIfNoFreeDroids(new OnScreenModalResult(this.OnPayMeForDroidResult), null)) { return; } } UXController uXController = Service.UXController; uXController.HUD.ToggleExitEditModeButton(true); this.LowerLiftedBuilding((!flag) ? DropKind.CancelPurchase : DropKind.ConfirmPurchase, true, this.lifted, true, true); }
public static bool RearmTrapForClient(Entity selectedBuilding) { BuildingTypeVO buildingType = selectedBuilding.Get <BuildingComponent>().BuildingType; TrapTypeVO trapTypeVO = Service.Get <IDataController>().Get <TrapTypeVO>(buildingType.TrapUid); int rearmCreditsCost = trapTypeVO.RearmCreditsCost; int rearmMaterialsCost = trapTypeVO.RearmMaterialsCost; int rearmContrabandCost = trapTypeVO.RearmContrabandCost; if (!GameUtils.CanAffordCredits(rearmCreditsCost) || !GameUtils.CanAffordMaterials(rearmMaterialsCost)) { PayMeScreen.ShowIfNotEnoughCurrency(rearmCreditsCost, rearmMaterialsCost, rearmContrabandCost, GameUtils.GetBuildingPurchaseContext(buildingType, null, false, false), new OnScreenModalResult(TrapUtils.OnPayMeForCurrencyResultSingleTrap)); return(false); } GameUtils.SpendCurrency(rearmCreditsCost, rearmMaterialsCost, rearmContrabandCost, true); Service.Get <TrapController>().SetTrapState(selectedBuilding.Get <TrapComponent>(), TrapState.Armed); selectedBuilding.Get <BuildingComponent>().BuildingTO.CurrentStorage = 1; Service.Get <UXController>().HUD.ShowContextButtons(selectedBuilding); Service.Get <BuildingController>().RedrawRadiusForSelectedBuilding(); return(true); }
public static void RearmAllTraps() { int credits; int materials; int contraband; TrapUtils.GetRearmAllTrapsCost(out credits, out materials, out contraband); if (!GameUtils.CanAffordCredits(credits) || !GameUtils.CanAffordMaterials(materials) || !GameUtils.CanAffordContraband(contraband)) { PayMeScreen.ShowIfNotEnoughCurrency(credits, materials, contraband, "Rearm_All_Traps", new OnScreenModalResult(TrapUtils.OnPayMeForCurrencyResultForMultiTrap)); return; } List <Entity> rearmableTraps = TrapUtils.GetRearmableTraps(); int i = 0; int count = rearmableTraps.Count; while (i < count) { TrapUtils.RearmTrapForClient(rearmableTraps[i]); i++; } TrapUtils.SendRearmTrapServerCommand(rearmableTraps); }
private void LowerLiftedBuilding(DropKind dropKind, bool affectBoard, bool sendLoweredEvent, bool playLoweredSound, bool showContextButtons) { SmartEntity selectedBuilding = this.buildingSelector.SelectedBuilding; if (selectedBuilding == null) { this.lifted = false; this.moved = false; return; } UXController uXController = Service.UXController; if (dropKind != DropKind.JustDrop) { uXController.MiscElementsManager.HideConfirmGroup(); } if (affectBoard && dropKind == DropKind.ConfirmPurchase) { BuildingTypeVO buildingType = selectedBuilding.BuildingComp.BuildingType; int credits = buildingType.Credits; int materials = buildingType.Materials; int contraband = buildingType.Contraband; string value = StringUtils.ToLowerCaseUnderscoreSeperated(buildingType.Type.ToString()); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(value); stringBuilder.Append("|"); stringBuilder.Append(buildingType.BuildingID); stringBuilder.Append("|"); stringBuilder.Append(buildingType.Lvl); if (PayMeScreen.ShowIfNotEnoughCurrency(credits, materials, contraband, stringBuilder.ToString(), new OnScreenModalResult(this.OnPayMeForCurrencyResult))) { return; } if (buildingType.Type != BuildingType.DroidHut && PayMeScreen.ShowIfNoFreeDroids(new OnScreenModalResult(this.OnPayMeForDroidResult), null)) { return; } if (buildingType.Type == BuildingType.NavigationCenter && buildingType.Lvl == 1) { Service.UXController.HUD.InitialNavigationCenterPlanetSelect(selectedBuilding, buildingType, new OnScreenModalResult(this.OnPickPlanetResult)); return; } } BuildingTypeVO buildingType2 = selectedBuilding.Get <BuildingComponent>().BuildingType; if (buildingType2.Time == 0 && dropKind != DropKind.JustDrop) { showContextButtons = false; } if (dropKind != DropKind.JustDrop) { uXController.HUD.ToggleExitEditModeButton(true); } this.canOccupy = this.EntireSelectionIsPlaceable(); if (!this.canOccupy) { this.LiftSelectedBuilding(selectedBuilding, false, false); int i = 0; int count = this.buildingSelector.AdditionalSelectedBuildings.Count; while (i < count) { this.LiftSelectedBuilding(this.buildingSelector.AdditionalSelectedBuildings[i], false, false); i++; } } bool flag = !this.LowerLiftedBuildingHelper(selectedBuilding, dropKind, affectBoard, sendLoweredEvent, playLoweredSound, showContextButtons, string.Empty); int j = 0; int count2 = this.buildingSelector.AdditionalSelectedBuildings.Count; while (j < count2) { this.LowerLiftedBuildingHelper(this.buildingSelector.AdditionalSelectedBuildings[j], dropKind, affectBoard, false, false, false, string.Empty); j++; } if (sendLoweredEvent) { for (int k = 0; k < this.buildingSelector.AdditionalSelectedBuildings.Count; k++) { Service.EventManager.SendEvent(EventId.UserLoweredBuilding, this.buildingSelector.AdditionalSelectedBuildings[k]); } Service.EventManager.SendEvent(EventId.UserLoweredBuilding, flag ? null : selectedBuilding); } if (affectBoard && dropKind == DropKind.JustDrop && this.ShouldSaveAfterEveryMove()) { BuildingMultiMoveRequest buildingMultiMoveRequest = new BuildingMultiMoveRequest(); buildingMultiMoveRequest.PositionMap = new PositionMap(); Position position = new Position(); position.X = selectedBuilding.Get <TransformComponent>().X; position.Z = selectedBuilding.Get <TransformComponent>().Z; buildingMultiMoveRequest.PositionMap.AddPosition(selectedBuilding.Get <BuildingComponent>().BuildingTO.Key, position); for (int l = 0; l < this.buildingSelector.AdditionalSelectedBuildings.Count; l++) { Entity entity = this.buildingSelector.AdditionalSelectedBuildings[l]; position = new Position(); position.X = entity.Get <TransformComponent>().X; position.Z = entity.Get <TransformComponent>().Z; buildingMultiMoveRequest.PositionMap.AddPosition(entity.Get <BuildingComponent>().BuildingTO.Key, position); } BuildingMultiMoveCommand command = new BuildingMultiMoveCommand(buildingMultiMoveRequest); Service.ServerAPI.Sync(command); } if (dropKind == DropKind.ConfirmPurchase || dropKind == DropKind.CancelPurchase) { Service.EventManager.SendEvent(EventId.BuildingPurchaseModeEnded, null); } }