Example #1
0
 public unsafe static long $Invoke5(long instance, long *args)
 {
     TimedEventPrizeUtils.TrySetupConflictItemRewardView((TournamentRewardsVO)GCHandledObjects.GCHandleToObject(*args), (UXLabel)GCHandledObjects.GCHandleToObject(args[1]), (UXSprite)GCHandledObjects.GCHandleToObject(args[2]), (UXSprite)GCHandledObjects.GCHandleToObject(args[3]), (UXElement)GCHandledObjects.GCHandleToObject(args[4]), (UXElement)GCHandledObjects.GCHandleToObject(args[5]), (UXElement)GCHandledObjects.GCHandleToObject(args[6]), (UXLabel)GCHandledObjects.GCHandleToObject(args[7]), (UXSprite)GCHandledObjects.GCHandleToObject(args[8]), (UXLabel)GCHandledObjects.GCHandleToObject(args[9]));
     return(-1L);
 }
Example #2
0
        public static int TransferPrizeFromInventory(PrizeType prizeType, string prizeID)
        {
            Lang             lang               = Service.Get <Lang>();
            IDataController  dataController     = Service.Get <IDataController>();
            CurrentPlayer    currentPlayer      = Service.Get <CurrentPlayer>();
            PrizeInventory   prizes             = currentPlayer.Prizes;
            Inventory        inventory          = currentPlayer.Inventory;
            InventoryStorage inventoryStorage   = null;
            IUpgradeableVO   finalUnitFromPrize = TimedEventPrizeUtils.GetFinalUnitFromPrize(prizeType, prizeID);
            string           text               = null;
            string           text2              = null;
            string           id = null;
            int result          = 0;
            int num             = 0;

            switch (prizeType)
            {
            case PrizeType.Currency:
                num = prizes.GetResourceAmount(prizeID);
                TimedEventPrizeUtils.GetCurrencyAmountToTransfer(prizeID, ref num, ref result);
                if (num > 0)
                {
                    inventory.ModifyItemAmount(prizeID, num);
                    prizes.ModifyResourceAmount(prizeID, -num);
                    text  = "INVENTORY_REWARD_USED_CURRENCY";
                    text2 = lang.Get(prizeID.ToUpper(), new object[0]);
                }
                else
                {
                    id = "INVENTORY_NO_ROOM";
                }
                break;

            case PrizeType.Infantry:
            case PrizeType.Vehicle:
            case PrizeType.Mercenary:
                inventoryStorage = inventory.Troop;
                if (inventoryStorage.GetTotalStorageCapacity() >= inventoryStorage.GetTotalStorageAmount() + finalUnitFromPrize.Size)
                {
                    num = 1;
                    inventoryStorage.ModifyItemAmount(finalUnitFromPrize.Uid, num);
                    prizes.ModifyTroopAmount(prizeID, -num);
                    text  = "INVENTORY_REWARD_USED_TROOP";
                    text2 = LangUtils.GetTroopDisplayName((TroopTypeVO)finalUnitFromPrize);
                    StorageSpreadUtils.UpdateAllStarportFullnessMeters();
                }
                else
                {
                    id = "NOT_ENOUGH_HOUSING";
                }
                result = prizes.GetTroopAmount(prizeID);
                break;

            case PrizeType.Hero:
                inventoryStorage = inventory.Hero;
                if (!Service.Get <BuildingLookupController>().HasHeroCommand())
                {
                    id = "INVENTORY_NO_HERO_COMMAND";
                }
                else if (inventoryStorage.GetTotalStorageCapacity() >= inventoryStorage.GetTotalStorageAmount() + finalUnitFromPrize.Size)
                {
                    bool flag = false;
                    foreach (KeyValuePair <string, InventoryEntry> current in inventoryStorage.GetInternalStorage())
                    {
                        if (current.get_Value().Amount > 0)
                        {
                            TroopTypeVO troopTypeVO = dataController.Get <TroopTypeVO>(current.get_Key());
                            if (troopTypeVO.UpgradeGroup == finalUnitFromPrize.UpgradeGroup)
                            {
                                flag = true;
                                break;
                            }
                        }
                    }
                    if (!flag)
                    {
                        flag = ContractUtils.HasExistingHeroContract(finalUnitFromPrize.UpgradeGroup);
                    }
                    if (!flag)
                    {
                        num = 1;
                        inventoryStorage.ModifyItemAmount(finalUnitFromPrize.Uid, num);
                        prizes.ModifyTroopAmount(prizeID, -num);
                        text  = "INVENTORY_REWARD_USED_HERO";
                        text2 = LangUtils.GetTroopDisplayName((TroopTypeVO)finalUnitFromPrize);
                        Service.Get <EventManager>().SendEvent(EventId.HeroMobilizedFromPrize, finalUnitFromPrize.Uid);
                    }
                    else
                    {
                        id = "INVENTORY_NO_ROOM_HERO_IN_QUEUE";
                    }
                }
                else
                {
                    id = "INVENTORY_NO_ROOM_HERO";
                }
                result = prizes.GetTroopAmount(prizeID);
                break;

            case PrizeType.SpecialAttack:
                inventoryStorage = inventory.SpecialAttack;
                if (!Service.Get <BuildingLookupController>().HasStarshipCommand())
                {
                    id = "INVENTORY_NO_FLEET_COMMAND";
                }
                else if (inventoryStorage.GetTotalStorageCapacity() >= inventoryStorage.GetTotalStorageAmount() + finalUnitFromPrize.Size)
                {
                    num = 1;
                    inventoryStorage.ModifyItemAmount(finalUnitFromPrize.Uid, num);
                    prizes.ModifySpecialAttackAmount(prizeID, -num);
                    text  = "INVENTORY_REWARD_USED_TROOP";
                    text2 = LangUtils.GetStarshipDisplayName((SpecialAttackTypeVO)finalUnitFromPrize);
                    Service.Get <EventManager>().SendEvent(EventId.StarshipMobilizedFromPrize, finalUnitFromPrize.Uid);
                }
                else
                {
                    id = "NOT_ENOUGH_SPACE";
                }
                result = prizes.GetSpecialAttackAmount(prizeID);
                break;
            }
            if (num > 0)
            {
                InventoryTransferRequest request = new InventoryTransferRequest(prizeID, num);
                Service.Get <ServerAPI>().Enqueue(new InventoryTransferCommand(request));
            }
            else
            {
                string message = lang.Get(id, new object[0]);
                AlertScreen.ShowModal(false, null, message, null, null);
            }
            if (text != null)
            {
                string text3 = (prizeType == PrizeType.Hero) ? text2 : lang.Get("AMOUNT_AND_NAME", new object[]
                {
                    num,
                    text2
                });
                string instructions = lang.Get(text, new object[]
                {
                    text3
                });
                Service.Get <UXController>().MiscElementsManager.ShowPlayerInstructions(instructions, 1f, 2f);
            }
            return(result);
        }
Example #3
0
 public unsafe static long $Invoke4(long instance, long *args)
 {
     return(GCHandledObjects.ObjectToGCHandle(TimedEventPrizeUtils.TrySetupConflictEndedRewardView((List <string>)GCHandledObjects.GCHandleToObject(*args), (UXLabel)GCHandledObjects.GCHandleToObject(args[1]), (UXSprite)GCHandledObjects.GCHandleToObject(args[2]))));
 }
Example #4
0
 public unsafe static long $Invoke3(long instance, long *args)
 {
     return(GCHandledObjects.ObjectToGCHandle(TimedEventPrizeUtils.TransferPrizeFromInventory((PrizeType)(*(int *)args), Marshal.PtrToStringUni(*(IntPtr *)(args + 1)))));
 }
Example #5
0
 public unsafe static long $Invoke2(long instance, long *args)
 {
     TimedEventPrizeUtils.HandleCrateSupplyRewardClicked((CrateSupplyVO)GCHandledObjects.GCHandleToObject(*args));
     return(-1L);
 }
Example #6
0
 public unsafe static long $Invoke1(long instance, long *args)
 {
     return(GCHandledObjects.ObjectToGCHandle(TimedEventPrizeUtils.GetTierRewardMap(Marshal.PtrToStringUni(*(IntPtr *)args))));
 }
Example #7
0
 public unsafe static long $Invoke0(long instance, long *args)
 {
     return(GCHandledObjects.ObjectToGCHandle(TimedEventPrizeUtils.GetFinalUnitFromPrize((PrizeType)(*(int *)args), Marshal.PtrToStringUni(*(IntPtr *)(args + 1)))));
 }