示例#1
0
        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);
            }
        }
示例#2
0
        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();
        }
示例#3
0
        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()));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        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();
            }
        }
示例#7
0
        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);
        }
示例#8
0
        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);
            }
        }
示例#9
0
 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;
     }
 }
示例#10
0
        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);
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        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);
            }
        }