예제 #1
0
        public void SubtractDecorationCost(DecorationId decoration, int count)
        {
            int num = 0;

            switch (decoration.type)
            {
            case DecorationType.Decoration:
            {
                Dictionary <int, DecorationDefinition> dictionary2 = Service.Get <IGameData>().Get <Dictionary <int, DecorationDefinition> >();
                if (dictionary2.ContainsKey(decoration.definitionId))
                {
                    num = dictionary2[decoration.definitionId].Cost;
                }
                break;
            }

            case DecorationType.Structure:
            {
                Dictionary <int, StructureDefinition> dictionary = Service.Get <IGameData>().Get <Dictionary <int, StructureDefinition> >();
                if (dictionary.ContainsKey(decoration.definitionId))
                {
                    num = dictionary[decoration.definitionId].Cost;
                }
                break;
            }
            }
            ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
            value.Assets.coins -= num * count;
            if (value.Assets.coins < 0)
            {
                value.Assets.coins = 0;
            }
            offlineDatabase.Write(value);
        }
예제 #2
0
        public void SubtractDisneyStoreItemCost(int itemId, int count)
        {
            Dictionary <int, DisneyStoreFranchiseDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, DisneyStoreFranchiseDefinition> >();

            foreach (DisneyStoreFranchiseDefinition value2 in dictionary.Values)
            {
                if (value2.Items == null)
                {
                    continue;
                }
                foreach (DisneyStoreItemDefinition item in value2.Items)
                {
                    if (item.Id == itemId)
                    {
                        ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
                        value.Assets.coins -= item.Cost * count;
                        if (value.Assets.coins < 0)
                        {
                            value.Assets.coins = 0;
                        }
                        offlineDatabase.Write(value);
                    }
                }
            }
        }
예제 #3
0
 protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
 {
     AddDecoration(ResponseBody.decorationId, Count, offlineDatabase);
     ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
     value.Assets = ResponseBody.assets;
     offlineDatabase.Write(value);
 }
예제 #4
0
 protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
 {
     createEquipment(CustomEquipmentResponse.equipmentId, offlineDatabase, offlineDefinitions);
     ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
     value.Assets = CustomEquipmentResponse.assets;
     offlineDatabase.Write(value);
 }
 protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
 {
     ClubPenguin.Net.Offline.PlayerAssets playerAssets = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
     ResponseBody = new RewardCalculatedResponse
     {
         coins = offlineDefinitions.GetCoinsForExchange(playerAssets.Assets.collectibleCurrencies)
     };
 }
예제 #6
0
 protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
 {
     ClubPenguin.Net.Offline.ConsumableInventory value = offlineDatabase.Read <ClubPenguin.Net.Offline.ConsumableInventory>();
     value.Inventory = Response.inventory.Data.inventoryMap;
     offlineDatabase.Write(value);
     ClubPenguin.Net.Offline.PlayerAssets value2 = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
     value2.Assets = Response.assets;
     offlineDatabase.Write(value2);
 }
예제 #7
0
    protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
    {
        ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
        int coinsForExchange = offlineDefinitions.GetCoinsForExchange(value.Assets.collectibleCurrencies);

        value.Assets.coins += coinsForExchange;
        value.Assets.collectibleCurrencies.Clear();
        offlineDatabase.Write(value);
        ResponseBody = new RewardGrantedResponse
        {
            assets = value.Assets
        };
    }
예제 #8
0
        public void SubtractEquipmentCost(int templateDefinitionId)
        {
            Dictionary <int, TemplateDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, TemplateDefinition> >();

            if (dictionary.TryGetValue(templateDefinitionId, out var value))
            {
                ClubPenguin.Net.Offline.PlayerAssets value2 = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
                value2.Assets.coins -= value.Cost;
                if (value2.Assets.coins < 0)
                {
                    value2.Assets.coins = 0;
                }
                offlineDatabase.Write(value2);
            }
        }
예제 #9
0
        public void SubtractConsumableCost(string consumableId, int count)
        {
            Dictionary <int, PropDefinition> dictionary = Service.Get <GameData>().Get <Dictionary <int, PropDefinition> >();

            foreach (PropDefinition value2 in dictionary.Values)
            {
                if (consumableId == value2.NameOnServer)
                {
                    ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
                    value.Assets.coins -= value2.Cost * count;
                    if (value.Assets.coins < 0)
                    {
                        value.Assets.coins = 0;
                    }
                    offlineDatabase.Write(value);
                }
            }
        }
예제 #10
0
    protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
    {
        ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
        value.Assets = Response.assets;
        offlineDatabase.Write(value);
        DecorationInventoryEntity value2     = offlineDatabase.Read <DecorationInventoryEntity>();
        Dictionary <string, int>  dictionary = new Dictionary <string, int>();

        foreach (DecorationInventoryItem item in Response.decorationInventory.Data.items)
        {
            dictionary.Add(item.decorationId.ToString(), item.count);
        }
        value2.inventory = dictionary;
        offlineDatabase.Write(value2);
        ClubPenguin.Net.Offline.ConsumableInventory value3 = offlineDatabase.Read <ClubPenguin.Net.Offline.ConsumableInventory>();
        value3.Inventory = Response.inventory.Data.inventoryMap;
        offlineDatabase.Write(value3);
    }
        protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
        {
            TubeData value = offlineDatabase.Read <TubeData>();

            value.EquippedTubeId = SignedJoinRoomData.Data.selectedTubeId;
            offlineDatabase.Write(value);
            ClubPenguin.Net.Offline.ConsumableInventory value2 = offlineDatabase.Read <ClubPenguin.Net.Offline.ConsumableInventory>();
            value2.Inventory = SignedJoinRoomData.Data.playerRoomData.consumableInventory.inventoryMap;
            offlineDatabase.Write(value2);
            ClubPenguin.Net.Offline.PlayerAssets value3 = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
            value3.Assets = SignedJoinRoomData.Data.playerRoomData.assets;
            offlineDatabase.Write(value3);
            ClubPenguin.Net.Offline.PlayerOutfitDetails value4 = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerOutfitDetails>();
            value4.Parts = new List <CustomEquipment>(SignedJoinRoomData.Data.playerRoomData.outfit.parts);
            offlineDatabase.Write(value4);
            ClubPenguin.Net.Offline.Profile value5 = offlineDatabase.Read <ClubPenguin.Net.Offline.Profile>();
            value5.Colour      = SignedJoinRoomData.Data.playerRoomData.profile.colour;
            value5.DateCreated = DateTime.UtcNow.AddDays(-1 * SignedJoinRoomData.Data.playerRoomData.profile.daysOld).GetTimeInMilliseconds();
            offlineDatabase.Write(value5);
            SetProgressOperation.SetOfflineQuestStateCollection(offlineDatabase, SignedJoinRoomData.Data.playerRoomData.quests);
        }
예제 #12
0
        public List <QuestState> AvailableQuests(QuestStateCollection quests)
        {
            HashSet <string> hashSet = new HashSet <string>();

            foreach (QuestState quest in quests)
            {
                hashSet.Add(quest.questId);
            }
            ClubPenguin.Net.Offline.PlayerAssets playerAssets = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
            List <QuestState> list = new List <QuestState>();
            Dictionary <string, QuestDefinition> knownQuests = Service.Get <QuestService>().knownQuests;

            foreach (KeyValuePair <string, QuestDefinition> item in knownQuests)
            {
                if (hashSet.Contains(item.Key))
                {
                    continue;
                }
                DateTime?dateTime = questAvailableDate(item.Value, playerAssets.Assets.mascotXP);
                if (dateTime.HasValue)
                {
                    QuestState questState = new QuestState();
                    questState.questId             = item.Key;
                    questState.completedObjectives = new QuestObjectives();
                    if (dateTime <= DateTime.UtcNow)
                    {
                        questState.status = QuestStatus.AVAILABLE;
                    }
                    else
                    {
                        questState.status     = QuestStatus.LOCKED;
                        questState.unlockTime = dateTime.Value.GetTimeInMilliseconds();
                    }
                    list.Add(questState);
                }
            }
            return(list);
        }
예제 #13
0
        public void AddReward(Reward reward, CPResponse responseBody)
        {
            ClubPenguin.Net.Offline.PlayerAssets value = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
            ProgressionService progressionService      = Service.Get <ProgressionService>();

            if (reward.TryGetValue <CoinReward>(out var rewardable))
            {
                value.Assets.coins += rewardable.Coins;
            }
            if (reward.TryGetValue <MascotXPReward>(out var rewardable2))
            {
                foreach (KeyValuePair <string, int> item in rewardable2.XP)
                {
                    if (value.Assets.mascotXP.ContainsKey(item.Key))
                    {
                        value.Assets.mascotXP[item.Key] = progressionService.addXp(item.Key, item.Value, value.Assets.mascotXP[item.Key]);
                    }
                    else
                    {
                        value.Assets.mascotXP[item.Key] = progressionService.addXp(item.Key, item.Value, 0L);
                    }
                }
                int level = progressionService.Level;
                int num   = 0;
                foreach (long value5 in value.Assets.mascotXP.Values)
                {
                    num += ProgressionService.GetMascotLevelFromXP(value5);
                }
                if (num > level)
                {
                    if (responseBody.wsEvents == null)
                    {
                        responseBody.wsEvents = new List <SignedResponse <WebServiceEvent> >();
                    }
                    responseBody.wsEvents.Add(new SignedResponse <WebServiceEvent>
                    {
                        Data = new WebServiceEvent
                        {
                            details = num,
                            type    = 3
                        }
                    });
                }
            }
            if (reward.TryGetValue <CollectibleReward>(out var rewardable3))
            {
                foreach (KeyValuePair <string, int> collectible in rewardable3.Collectibles)
                {
                    if (value.Assets.collectibleCurrencies.ContainsKey(collectible.Key))
                    {
                        value.Assets.collectibleCurrencies[collectible.Key] += collectible.Value;
                    }
                    else
                    {
                        value.Assets.collectibleCurrencies[collectible.Key] = collectible.Value;
                    }
                }
            }
            if (reward.TryGetValue <DecalReward>(out var rewardable4))
            {
                value.Assets.decals.AddRange(rewardable4.Decals);
            }
            if (reward.TryGetValue <FabricReward>(out var rewardable5))
            {
                value.Assets.fabrics.AddRange(rewardable5.Fabrics);
            }
            if (reward.TryGetValue <EmoteReward>(out var rewardable6))
            {
                value.Assets.emotePacks.AddRange(rewardable6.Emotes);
            }
            if (reward.TryGetValue <EquipmentTemplateReward>(out var rewardable7))
            {
                value.Assets.equipmentTemplates.AddRange(rewardable7.EquipmentTemplates);
            }
            if (reward.TryGetValue <EquipmentInstanceReward>(out var rewardable8))
            {
                System.Random             random = new System.Random();
                byte[]                    array  = new byte[8];
                CustomEquipmentCollection value2 = offlineDatabase.Read <CustomEquipmentCollection>();
                foreach (CustomEquipment equipmentInstance in rewardable8.EquipmentInstances)
                {
                    random.NextBytes(array);
                    value2.Equipment.Add(new CustomEquipment
                    {
                        dateTimeCreated = DateTime.UtcNow.GetTimeInMilliseconds(),
                        definitionId    = equipmentInstance.definitionId,
                        equipmentId     = BitConverter.ToInt64(array, 0),
                        parts           = equipmentInstance.parts
                    });
                }
                offlineDatabase.Write(value2);
            }
            if (reward.TryGetValue <LotReward>(out var rewardable9))
            {
                value.Assets.lots.AddRange(rewardable9.Lots);
            }
            if (reward.TryGetValue <DecorationInstanceReward>(out var rewardable10))
            {
                DecorationInventoryEntity value3 = offlineDatabase.Read <DecorationInventoryEntity>();
                foreach (KeyValuePair <int, int> decoration in rewardable10.Decorations)
                {
                    DecorationId decorationId = new DecorationId(decoration.Key, DecorationType.Decoration);
                    if (value3.Inventory.ContainsKey(decorationId))
                    {
                        value3.Inventory[decorationId] += decoration.Value;
                    }
                    else
                    {
                        value3.Inventory[decorationId] = decoration.Value;
                    }
                }
                offlineDatabase.Write(value3);
            }
            if (reward.TryGetValue <StructureInstanceReward>(out var rewardable11))
            {
                DecorationInventoryEntity value3 = offlineDatabase.Read <DecorationInventoryEntity>();
                foreach (KeyValuePair <int, int> decoration2 in rewardable11.Decorations)
                {
                    DecorationId decorationId = new DecorationId(decoration2.Key, DecorationType.Structure);
                    if (value3.Inventory.ContainsKey(decorationId))
                    {
                        value3.Inventory[decorationId] += decoration2.Value;
                    }
                    else
                    {
                        value3.Inventory[decorationId] = decoration2.Value;
                    }
                }
                offlineDatabase.Write(value3);
            }
            if (reward.TryGetValue <DecorationReward>(out var rewardable12))
            {
                value.Assets.decorations.AddRange(rewardable12.Decorations);
            }
            if (reward.TryGetValue <StructureReward>(out var rewardable13))
            {
                value.Assets.structures.AddRange(rewardable13.Structures);
            }
            if (reward.TryGetValue <MusicTrackReward>(out var rewardable14))
            {
                value.Assets.musicTracks.AddRange(rewardable14.MusicTracks);
            }
            if (reward.TryGetValue <LightingReward>(out var rewardable15))
            {
                value.Assets.lighting.AddRange(rewardable15.Lighting);
            }
            if (reward.TryGetValue <DurableReward>(out var rewardable16))
            {
                value.Assets.durables.AddRange(rewardable16.Durables);
            }
            if (reward.TryGetValue <IglooSlotsReward>(out var rewardable17))
            {
                value.IglooSlots += rewardable17.IglooSlots;
            }
            if (reward.TryGetValue <ConsumableReward>(out var rewardable18))
            {
                value.Assets.partySupplies.AddRange(rewardable18.Consumable);
            }
            if (reward.TryGetValue <TubeReward>(out var rewardable19))
            {
                value.Assets.tubes.AddRange(rewardable19.Tubes);
            }
            if (reward.TryGetValue <ConsumableInstanceReward>(out var rewardable20))
            {
                ClubPenguin.Net.Offline.ConsumableInventory value4 = offlineDatabase.Read <ClubPenguin.Net.Offline.ConsumableInventory>();
                foreach (KeyValuePair <string, int> consumable in rewardable20.Consumables)
                {
                    if (value4.Inventory.ContainsKey(consumable.Key))
                    {
                        value4.Inventory[consumable.Key].itemCount += consumable.Value;
                    }
                    else
                    {
                        value4.Inventory[consumable.Key] = new InventoryItemStock
                        {
                            itemCount = consumable.Value
                        };
                    }
                    value4.Inventory[consumable.Key].lastPurchaseTimestamp = DateTime.UtcNow.GetTimeInMilliseconds();
                }
                offlineDatabase.Write(value4);
            }
            offlineDatabase.Write(value);
        }