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); }
public static PurchaseDisneyStoreItemResponse Purchase(int itemId, int count, OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { PurchaseDisneyStoreItemResponse purchaseDisneyStoreItemResponse = new PurchaseDisneyStoreItemResponse(); Reward disneyStoreItemReward = offlineDefinitions.GetDisneyStoreItemReward(itemId, count); offlineDefinitions.AddReward(disneyStoreItemReward, purchaseDisneyStoreItemResponse); offlineDefinitions.SubtractDisneyStoreItemCost(itemId, count); purchaseDisneyStoreItemResponse.assets = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>().Assets; purchaseDisneyStoreItemResponse.inventory = new SignedResponse <ClubPenguin.Net.Domain.ConsumableInventory> { Data = new ClubPenguin.Net.Domain.ConsumableInventory { inventoryMap = offlineDatabase.Read <ClubPenguin.Net.Offline.ConsumableInventory>().Inventory } }; DecorationInventory decorationInventory = new DecorationInventory(); decorationInventory.items = new List <DecorationInventoryItem>(); foreach (KeyValuePair <string, int> item in offlineDatabase.Read <DecorationInventoryEntity>().inventory) { decorationInventory.items.Add(new DecorationInventoryItem { count = item.Value, decorationId = DecorationId.FromString(item.Key) }); } purchaseDisneyStoreItemResponse.decorationInventory = new SignedResponse <DecorationInventory> { Data = decorationInventory }; return(purchaseDisneyStoreItemResponse); }
public void DeleteDecoration(DecorationId decorationId) { APICall <DeleteDecorationOperation> aPICall = clubPenguinClient.IglooApi.DeleteDecoration(decorationId); aPICall.OnResponse += onDecorationDeleted; aPICall.OnError += handleCPResponseError; aPICall.Execute(); }
public APICall <PurchaseDecorationOperation> PurchaseDecoration(DecorationId decorationId, int?count) { if (!count.HasValue) { count = 1; } PurchaseDecorationOperation operation = new PurchaseDecorationOperation(decorationId.ToString(), count.Value); return(new APICall <PurchaseDecorationOperation>(clubPenguinClient, operation)); }
public void PurchaseDecoration(DecorationId decorationId, int?count, IIglooCatalogPurchaseErrorHandler errorHandler) { APICall <PurchaseDecorationOperation> aPICall = clubPenguinClient.IglooApi.PurchaseDecoration(decorationId, count); aPICall.OnResponse += onDecorationUpdated; aPICall.OnError += delegate { errorHandler.OnPurchaseDecorationError(); }; aPICall.Execute(); }
protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { DecorationId decorationId = new DecorationId(DefinitionId, (DecorationType)Type); AddDecoration(decorationId, Count, offlineDatabase); ResponseBody = new CreateDecorationResponse { assets = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>().Assets, decorationId = decorationId }; }
public int this[DecorationId id] { get { return(inventory[id.ToString()]); } set { inventory[id.ToString()] = value; } }
protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { DecorationId decorationId = ClubPenguin.Net.Domain.Decoration.DecorationId.FromString(DecorationId); QACreateDecorationOperation.AddDecoration(decorationId, Count, offlineDatabase); offlineDefinitions.SubtractDecorationCost(decorationId, Count); ResponseBody = new UpdateDecorationResponse { assets = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>().Assets, decorationId = decorationId }; }
protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions) { DecorationInventory = new DecorationInventory(); DecorationInventory.items = new List <DecorationInventoryItem>(); foreach (KeyValuePair <string, int> item in offlineDatabase.Read <DecorationInventoryEntity>().inventory) { DecorationInventory.items.Add(new DecorationInventoryItem { decorationId = DecorationId.FromString(item.Key), count = item.Value }); } }
public static void AddDecoration(DecorationId decoration, int count, OfflineDatabase offlineDatabase) { DecorationInventoryEntity value = offlineDatabase.Read <DecorationInventoryEntity>(); if (value.Inventory.ContainsKey(decoration)) { value.Inventory[decoration] += count; } else { value.Inventory[decoration] = count; } offlineDatabase.Write(value); }
public static void AddDecoration(DecorationId decoration, int count, OfflineDatabase offlineDatabase) { DecorationInventoryEntity value = offlineDatabase.Read <DecorationInventoryEntity>(); if (value.Inventory.ContainsKey(decoration)) { DecorationInventoryEntity.InventoryWrapper inventory; DecorationId id; (inventory = value.Inventory)[id = decoration] = inventory[id] + count; } else { value.Inventory[decoration] = count; } offlineDatabase.Write(value); }
private bool onIglooServiceEventsDecorationsLoaded(IglooServiceEvents.DecorationsLoaded evt) { CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>(); int count = evt.DecorationInventory.items.Count; if (!cPDataEntityCollection.TryGetComponent <DecorationInventoryData>(cPDataEntityCollection.LocalPlayerHandle, out var component)) { component = cPDataEntityCollection.AddComponent <DecorationInventoryData>(cPDataEntityCollection.LocalPlayerHandle); } Dictionary <int, int> dictionary = new Dictionary <int, int>(count); for (int i = 0; i < count; i++) { DecorationId decorationId = evt.DecorationInventory.items[i].decorationId; if (decorationId.type == DecorationType.Decoration && !decorationId.customId.HasValue) { dictionary.Add(decorationId.definitionId, evt.DecorationInventory.items[i].count); } } component.Decorations = dictionary; if (!cPDataEntityCollection.TryGetComponent <StructureInventoryData>(cPDataEntityCollection.LocalPlayerHandle, out var component2)) { component2 = cPDataEntityCollection.AddComponent <StructureInventoryData>(cPDataEntityCollection.LocalPlayerHandle); } Dictionary <int, int> dictionary2 = new Dictionary <int, int>(count); for (int i = 0; i < count; i++) { DecorationId decorationId = evt.DecorationInventory.items[i].decorationId; if (decorationId.type == DecorationType.Structure && !decorationId.customId.HasValue) { dictionary2.Add(decorationId.definitionId, evt.DecorationInventory.items[i].count); } } component2.Structures = dictionary2; return(false); }
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); }
private void onDecorationDeleted(DeleteDecorationOperation operation, HttpResponse httpResponse) { DecorationId decorationId = DecorationId.FromString(operation.DecorationId); Service.Get <EventDispatcher>().DispatchEvent(new IglooServiceEvents.DecorationDeleted(decorationId)); }
public APICall <DeleteDecorationOperation> DeleteDecoration(DecorationId decorationId) { DeleteDecorationOperation operation = new DeleteDecorationOperation(decorationId.ToString()); return(new APICall <DeleteDecorationOperation>(clubPenguinClient, operation)); }
public DecorationDeleted(DecorationId decorationId) { DecorationId = decorationId; }
public DecorationUpdated(DecorationId decorationId, int count) { DecorationId = decorationId; Count = count; }
public DecorationCreated(DecorationId decorationId) { DecorationId = decorationId; }
public bool ContainsKey(DecorationId key) { return(inventory.ContainsKey(key.ToString())); }