public void BuyItem(PlayerItemData item) { item.Unlocked = true; playerItemLoader.Save(item); UseItem(item); }
public void AddClubSystem(PlayerItemData Item) { PlayerTransactionData Tran; if ((Item == null)) { return; } Tran = new PlayerTransactionData() { Types = 0xCC, TypeID = Item.ItemTypeID, Index = Item.ItemIndex, PreviousQuan = 0, NewQuan = 0, UCC = string.Empty, C0_SLOT = Item.ItemC0Slot, C1_SLOT = Item.ItemC1Slot, C2_SLOT = Item.ItemC2Slot, C3_SLOT = Item.ItemC3Slot, C4_SLOT = Item.ItemC4Slot, ClubPoint = (uint)Item.ItemClubPoint, WorkshopCount = (uint)Item.ItemClubWorkCount, CancelledCount = (uint)Item.ItemClubSlotCancelledCount }; this.AddInfo(Tran); }
public void ResetInventory() { // For items already in the player inventory reset the amount to the initialValue. foreach (PlayerItemData playerItem in SpilUnityEditorImplementation.pData.Inventory.items) { int initialValue = SpilUnityEditorImplementation.gData.items.FirstOrDefault(a => a.id == playerItem.id).initialValue; int newDelta = initialValue - playerItem.amount; playerItem.amount = initialValue; playerItem.delta = newDelta + playerItem.delta; } // Check the items in the game data, if an item is not currently in the inventory but has an initialvalue > 0 then add it. foreach (SpilItemData gameDataItem in SpilUnityEditorImplementation.gData.items) { if (gameDataItem.initialValue > 0 && !SpilUnityEditorImplementation.pData.Inventory.items.Any(a => a.id == gameDataItem.id)) { PlayerItemData playerItem = new PlayerItemData(gameDataItem); playerItem.amount = gameDataItem.initialValue; playerItem.delta = gameDataItem.initialValue; SpilUnityEditorImplementation.pData.Inventory.items.Add(playerItem); } } }
public void Init(PlayerItemData data) { Item = data; UpdateAppearance(); image.sprite = data.Image.Image; image.color = data.Image.Color; image.rectTransform.rotation = Quaternion.Euler(0f, 0f, data.Image.Rotation); }
public PlayerItemData[] Load(PlayerItemConfig[] configs) { var result = new PlayerItemData[configs.Length]; for (int i = 0; i < configs.Length; i++) { result[i] = Load(configs[i]); } return(result); }
private void UpdateItem(PlayerItemData item) { foreach (PlayerItemData playerItem in Inventory.items) { if (playerItem.id != item.id) { continue; } playerItem.amount = item.amount; playerItem.delta = item.delta; } }
private bool Contains(PlayerItemData[] items, PlayerItemData searched) { foreach (var item in items) { if (item.Id.Equals(searched.Id)) { return(true); } } return(false); }
public AddData AddRent(uint TypeID, ushort Day = 7) { object PRent; AddData Result; Result = new AddData() { Status = false }; if (!(GetItemGroup(TypeID) == 2)) { return(Result); } var _db = new PangyaEntities(); var Add = _db.ProcAddRent((int)UID, (int)TypeID, Day).ToList(); if (Add.Count <= 0) { return(Result); } foreach (var data in Add) { PRent = new PlayerItemData(); ((PlayerItemData)(PRent)).ItemIndex = (uint)data.ITEM_INDEX; ((PlayerItemData)(PRent)).ItemTypeID = (uint)data.ITEM_TYPEID; ((PlayerItemData)(PRent)).ItemC0 = 0; ((PlayerItemData)(PRent)).ItemUCCUnique = string.Empty; ((PlayerItemData)(PRent)).CreateNewItem(); ((PlayerItemData)(PRent)).ItemFlag = (byte)data.ITEM_FLAG; ((PlayerItemData)(PRent)).ItemEndDate = data.ITEM_DATE_END; ItemWarehouse.ItemAdd((PlayerItemData)(PRent)); Result.Status = true; Result.ItemIndex = ((PlayerItemData)(PRent)).ItemIndex; Result.ItemTypeID = ((PlayerItemData)(PRent)).ItemTypeID; Result.ItemOldQty = 0; Result.ItemNewQty = 1; Result.ItemUCCKey = ((PlayerItemData)(PRent)).ItemUCCUnique; Result.ItemFlag = (byte)((PlayerItemData)(PRent)).ItemFlag; Result.ItemEndDate = ((PlayerItemData)(PRent)).ItemEndDate; } return(Result); }
public void AddItem(Byte ShowType, PlayerItemData Item, UInt32 Add) { PlayerTransactionData Tran; if ((Item == null)) { return; } Tran = new PlayerTransactionData() { Types = ShowType, TypeID = Item.ItemTypeID, Index = Item.ItemIndex, PreviousQuan = Item.ItemC0 - Add, NewQuan = Item.ItemC0, UCC = string.Empty }; this.AddInfo(Tran); }
private void HandleBeardChanged(PlayerItemData data) { SetImage(beardRenderer, data.Image); }
public void OpenGacha(int gachaId, string reason, string reasonDetails, string location) { PlayerItemData gachaPlayerItem = GetGachaFromInventory(gachaId); SpilItemData gachaItem = GetGachaFromObjects(gachaId); if (gachaPlayerItem == null || gachaItem == null || gachaId <= 0 || reason == null || !gachaPlayerItem.isGacha) { SpilLogging.Error("Error opening gacha!"); return; } if (!gachaPlayerItem.content.All(gachaItem.content.Contains) && gachaPlayerItem.content.Count == gachaItem.content.Count) { gachaPlayerItem.content = gachaItem.content; } if (gachaPlayerItem.amount < 1) { SpilLogging.Error("Not enough gacha boxes in the inventory!"); return; } if (gachaPlayerItem.content.Count < 1) { SpilLogging.Error("Error opening gacha! No content present!"); return; } int weightSum = 0; foreach (SpilGachaContent gachaContent in gachaPlayerItem.content) { weightSum = weightSum + gachaContent.weight; } if (weightSum == 0) { SpilLogging.Error("Error opening gacha!"); return; } int rand = Random.Range(0, weightSum); int low = 0; int high = 0; for (int i = 0; i < gachaPlayerItem.content.Count; i++) { SpilGachaContent gachaContent = gachaPlayerItem.content[i]; if (i != 0) { low = high; } high = low + gachaContent.weight; if (rand >= low && rand < high) { gachaPlayerItem.amount = gachaPlayerItem.amount - 1; gachaPlayerItem.delta = gachaPlayerItem.delta - 1; UpdateItem(gachaPlayerItem); switch (gachaContent.type) { case "CURRENCY": WalletOperation("add", gachaContent.id, gachaContent.amount, reason, reasonDetails, location, null); break; case "ITEM": InventoryOperation("add", gachaContent.id, gachaContent.amount, reason, reasonDetails, location, null); break; case "BUNDLE": OpenBundle(gachaContent.id, gachaContent.amount, reason, reasonDetails, location); break; case "GACHA": InventoryOperation("add", gachaContent.id, gachaContent.amount, reason, reasonDetails, location, null); break; case "NONE": UserDataManager.UpdateUserDataVersions(); UserDataManager.UpdateUserDataMeta(); PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData(); updatedData.items.Add(gachaPlayerItem); updatedData.reason = reason; SpilUnityImplementationBase.firePlayerDataEmptyGacha(); SpilUnityImplementationBase.firePlayerDataUpdated(JsonHelper.getJSONFromObject(updatedData)); break; default: SpilLogging.Error("Error opening gacha!"); return; } break; } } }
public void BuyBundle(int bundleId, string reason, string reasonDetails, string location, string transactionId) { PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData(); SpilBundleData bundle = GetBundleFromObjects(bundleId); if (bundle == null || reason == null) { SpilLogging.Error("Error adding bundle to player inventory!"); return; } Promotion promotion = Spil.Instance.GetPromotions().GetBundlePromotion(bundleId); bool isPromotionValid = false; if (promotion != null) { isPromotionValid = promotion.IsValid(); } List <SpilBundlePriceData> bundlePrices = new List <SpilBundlePriceData>(); if (isPromotionValid) { foreach (PriceOverride priceOverride in promotion.PriceOverride) { SpilBundlePriceData bundlePriceData = new SpilBundlePriceData(); bundlePriceData.currencyId = priceOverride.Id; bundlePriceData.value = priceOverride.Amount; bundlePrices.Add(bundlePriceData); } } else { bundlePrices = bundle.prices; } foreach (SpilBundlePriceData bundlePrice in bundlePrices) { PlayerCurrencyData currency = GetCurrencyFromWallet(bundlePrice.currencyId); if (currency == null) { SpilLogging.Error("Currency does not exist!"); return; } int currentBalance = currency.currentBalance; int updatedBalance = currentBalance - bundlePrice.value; if (updatedBalance < 0) { SpilLogging.Error("Not enough balance for currency!"); return; } int updatedDelta = -bundlePrice.value + currency.delta; if (updatedDelta == 0) { updatedDelta = -bundlePrice.value; } currency.delta = updatedDelta; currency.currentBalance = updatedBalance; UpdateCurrency(currency); updatedData.currencies.Add(currency); } foreach (SpilBundleItemData bundleItem in bundle.items) { SpilItemData gameItem = GetItemFromObjects(bundleItem.id); if (gameItem == null) { SpilLogging.Error("Item does not exist!"); return; } ; PlayerItemData item = new PlayerItemData(); item.id = gameItem.id; item.name = gameItem.name; item.type = gameItem.type; item.displayName = gameItem.displayName; item.displayDescription = gameItem.displayDescription; item.isGacha = gameItem.isGacha; item.content = gameItem.content; PlayerItemData inventoryItem = GetItemFromInventory(bundleItem.id); int inventoryItemAmount; if (inventoryItem != null) { inventoryItemAmount = inventoryItem.amount; inventoryItemAmount = inventoryItemAmount + bundleItem.amount; inventoryItem.delta = bundleItem.amount; inventoryItem.amount = inventoryItemAmount; UpdateItem(inventoryItem); updatedData.items.Add(inventoryItem); } else { inventoryItemAmount = bundleItem.amount; item.delta = inventoryItemAmount; item.amount = inventoryItemAmount; Inventory.items.Add(item); updatedData.items.Add(item); } } if (isPromotionValid) { foreach (ExtraEntity extraEntity in promotion.ExtraEntities) { if (extraEntity.Type.Equals("CURRENCY")) { PlayerCurrencyData currency = GetCurrencyFromWallet(extraEntity.Id); if (currency == null) { SpilLogging.Error("Currency does not exist!"); return; } currency.currentBalance = currency.currentBalance + extraEntity.Amount; currency.delta = currency.delta + extraEntity.Amount; UpdateCurrency(currency); PlayerCurrencyData temp = null; foreach (PlayerCurrencyData playerCurrency in updatedData.currencies) { if (playerCurrency.id == extraEntity.Id) { temp = playerCurrency; } } if (temp != null) { updatedData.currencies.Remove(temp); } updatedData.currencies.Add(currency); } else if (extraEntity.Type.Equals("ITEM") || extraEntity.Type.Equals("GACHA")) { SpilItemData gameItem = GetItemFromObjects(extraEntity.Id); if (gameItem == null) { SpilLogging.Error("Item does not exist!"); return; } ; PlayerItemData item = new PlayerItemData(); item.id = gameItem.id; item.name = gameItem.name; item.type = gameItem.type; item.displayName = gameItem.displayName; item.displayDescription = gameItem.displayDescription; item.isGacha = gameItem.isGacha; item.content = gameItem.content; PlayerItemData inventoryItem = GetItemFromInventory(extraEntity.Id); int inventoryItemAmount; if (inventoryItem != null) { inventoryItemAmount = inventoryItem.amount; inventoryItemAmount = inventoryItemAmount + extraEntity.Amount; inventoryItem.delta = extraEntity.Amount; inventoryItem.amount = inventoryItemAmount; UpdateItem(inventoryItem); PlayerItemData temp = null; foreach (PlayerItemData playerItem in updatedData.items) { if (playerItem.id == extraEntity.Id) { temp = playerItem; } } if (temp != null) { updatedData.items.Remove(temp); } updatedData.items.Add(inventoryItem); } else { inventoryItemAmount = extraEntity.Amount; item.delta = inventoryItemAmount; item.amount = inventoryItemAmount; Inventory.items.Add(item); updatedData.items.Add(item); } } } } UserDataManager.UpdateUserDataVersions(); UserDataManager.UpdateUserDataMeta(); updatedData.reason = reason; SpilUnityImplementationBase.firePlayerDataUpdated(JsonHelper.getJSONFromObject(updatedData)); if (isPromotionValid) { PromotionsManager.PromotionData.First(a => a.id == promotion.Id).amountPurchased++; PromotionsManager.SendBoughtPromotion(promotion.Id); } SendUpdatePlayerDataEvent(bundle, reason, reasonDetails, location, transactionId); }
private void HandleBodyChanged(PlayerItemData data) { SetImage(bodyRenderer, data.Image); }
public TClubUpgradeTemporary() { PClub = new PlayerItemData(); }
public void Save(PlayerItemData data) { wrapper.SetBool(data.Id, UnlockedKey, data.Unlocked); }
public void InventoryOperation(string action, int itemId, int amount, string reason) { SpilItemData gameItem = GetItemFromObjects(itemId); if(gameItem == null || itemId <= 0 || action == null || reason == null){ Debug.Log("Error updating item to player inventory!"); return; } PlayerItemData item = new PlayerItemData(); item.id = gameItem.id; item.name = gameItem.name; item.type = gameItem.type; item.amount = amount; item.delta = amount; PlayerItemData inventoryItem = GetItemFromInventory(itemId); if(inventoryItem != null){ int inventoryItemAmount = inventoryItem.amount; if(action.Equals("add")){ inventoryItemAmount = inventoryItemAmount + amount; } else if(action.Equals("subtract")){ inventoryItemAmount = inventoryItemAmount - amount; if(inventoryItemAmount < 0){ Debug.Log("Could not remove item as amount is too low!"); return; } } inventoryItem.delta = amount; inventoryItem.amount = inventoryItemAmount; UpdateItem(inventoryItem); } else { if(action.Equals("add")){ Inventory.items.Add(item); } else if (action.Equals("subtract")){ Debug.Log("Could not remove item as amount is too low!"); } } PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData(); updatedData.items.Add(item); updatedData.reason = reason; SpilUnityImplementationBase.firePlayerDataUpdated (JsonHelper.getJSONFromObject (updatedData)); SendUpdatePlayerDataEvent(item, reason); }
public static void ProcessPlayerDataResponse(ResponseEvent response) { WalletData receivedWallet = null; InventoryData receivedInventory = null; if (response.data.HasField("wallet")) { JSONObject walletJSON = response.data.GetField("wallet"); receivedWallet = new WalletData(); if (walletJSON.HasField("currencies")) { receivedWallet.currencies = new List <PlayerCurrencyData>(); JSONObject currenciesJSON = walletJSON.GetField("currencies"); for (int i = 0; i < currenciesJSON.Count; i++) { PlayerCurrencyData currency = new PlayerCurrencyData(); currency.id = (int)currenciesJSON.list[i].GetField("id").n; currency.currentBalance = (int)currenciesJSON.list[i].GetField("currentBalance").n; currency.delta = (int)currenciesJSON.list[i].GetField("delta").n; receivedWallet.currencies.Add(currency); } } receivedWallet.offset = (long)walletJSON.GetField("offset").n; receivedWallet.logic = walletJSON.GetField("logic").str; } if (response.data.HasField("inventory")) { JSONObject inventoryJSON = response.data.GetField("inventory"); receivedInventory = new InventoryData(); if (inventoryJSON.HasField("items")) { receivedInventory.items = new List <PlayerItemData>(); JSONObject itemsJSON = inventoryJSON.GetField("items"); for (int i = 0; i < itemsJSON.Count; i++) { PlayerItemData item = new PlayerItemData(); item.id = (int)itemsJSON.list[i].GetField("id").n; item.amount = (int)itemsJSON.list[i].GetField("amount").n; item.delta = (int)itemsJSON.list[i].GetField("delta").n; receivedInventory.items.Add(item); } } receivedInventory.offset = (long)inventoryJSON.GetField("offset").n; receivedInventory.logic = inventoryJSON.GetField("logic").str; } if (response.action.ToLower().Trim().Equals("update")) { SpilUnityEditorImplementation.pData.CalculatePlayerDataResponse(receivedWallet, receivedInventory, false); } else if (response.action.ToLower().Trim().Equals("syncerror")) { UserDataManager.ProcessSyncError(); } else if (response.action.ToLower().Trim().Equals("dropped")) { UserDataManager.ProcessDroppedResponse("Event dropped!"); } else if (response.action.ToLower().Trim().Equals("lockerror")) { UserDataManager.ProcessLockError(); } }
public AddData AddItemToDB(AddItem ItemAddData) { Object TPlayerItemData; PlayerTransactionData Tran; AddData Result; Result = new AddData() { Status = false }; var _db = new PangyaEntities(); var additem = _db.ProcAddItem((int)UID, (int)ItemAddData.ItemIffId, (int)ItemAddData.Quantity, IfCompare <byte>(IffEntry.IsSelfDesign(ItemAddData.ItemIffId), 1, 0), IffEntry.GetItemTimeFlag(ItemAddData.ItemIffId, ItemAddData.Day), (int)ItemAddData.Day).ToList(); if (additem.Count > 0) { var dbdata = additem.FirstOrDefault(); Tran = new PlayerTransactionData() { Types = 2, Index = (uint)dbdata.IDX, TypeID = (uint)dbdata.iffTypeId, PreviousQuan = 0, NewQuan = (uint)dbdata.Quantity, UCC = dbdata.UCC_KEY }; ItemTransaction.Add(Tran); try { switch ((TITEMGROUP)GetPartGroup(ItemAddData.ItemIffId)) { case TITEMGROUP.ITEM_TYPE_CHARACTER: { TPlayerItemData = new PlayerCharacterData(); ((PlayerCharacterData)(TPlayerItemData)).Index = (uint)dbdata.IDX; ((PlayerCharacterData)(TPlayerItemData)).TypeID = (uint)dbdata.iffTypeId; ((PlayerCharacterData)(TPlayerItemData)).HairColour = 0; ((PlayerCharacterData)(TPlayerItemData)).GiftFlag = 0; ItemCharacter.CharacterAdd((PlayerCharacterData)(TPlayerItemData)); CharacterIndex = (uint)dbdata.IDX; Result = new AddData() { Status = true, ItemIndex = ((PlayerCharacterData)(TPlayerItemData)).Index, ItemTypeID = ((PlayerCharacterData)(TPlayerItemData)).TypeID, ItemOldQty = 1, ItemNewQty = 1, ItemUCCKey = string.Empty, ItemFlag = 0, ItemEndDate = DateTime.MinValue, }; } break; case TITEMGROUP.ITEM_TYPE_AUX: case TITEMGROUP.ITEM_TYPE_PART: case TITEMGROUP.ITEM_TYPE_CLUB: case TITEMGROUP.ITEM_TYPE_BALL: case TITEMGROUP.ITEM_TYPE_USE: { TPlayerItemData = new PlayerItemData(); ((PlayerItemData)(TPlayerItemData)).ItemIndex = (uint)dbdata.IDX; ((PlayerItemData)(TPlayerItemData)).ItemTypeID = (uint)dbdata.iffTypeId; ((PlayerItemData)(TPlayerItemData)).ItemC0 = (ushort)dbdata.Quantity; ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique = dbdata.UCC_KEY; ((PlayerItemData)(TPlayerItemData)).CreateNewItem(); // Add to inventory list ItemWarehouse.ItemAdd((PlayerItemData)(TPlayerItemData)); // Set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerItemData)(TPlayerItemData)).ItemIndex, ItemTypeID = ((PlayerItemData)(TPlayerItemData)).ItemTypeID, ItemOldQty = 0, ItemNewQty = ItemAddData.Quantity, ItemUCCKey = ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique, ItemFlag = 0, ItemEndDate = null, }; } break; case TITEMGROUP.ITEM_TYPE_CADDIE: { TPlayerItemData = new PlayerCaddieData(); ((PlayerCaddieData)(TPlayerItemData)).CaddieIdx = (uint)dbdata.IDX; ((PlayerCaddieData)(TPlayerItemData)).CaddieTypeId = (uint)dbdata.iffTypeId; ((PlayerCaddieData)(TPlayerItemData)).CaddieDateEnd = (DateTime)dbdata.END_DATE; ((PlayerCaddieData)(TPlayerItemData)).CaddieAutoPay = 0; ((PlayerCaddieData)(TPlayerItemData)).CaddieType = (byte)dbdata.Flag; // Add caddie to inventory list ItemCaddie.CadieAdd((PlayerCaddieData)(TPlayerItemData)); // set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerCaddieData)(TPlayerItemData)).CaddieIdx, ItemTypeID = ((PlayerCaddieData)(TPlayerItemData)).CaddieTypeId, ItemOldQty = 0, ItemNewQty = 1, ItemUCCKey = string.Empty, ItemFlag = ((PlayerCaddieData)(TPlayerItemData)).CaddieType, ItemEndDate = null, }; } break; case TITEMGROUP.ITEM_TYPE_SKIN: { TPlayerItemData = new PlayerItemData(); ((PlayerItemData)(TPlayerItemData)).ItemIndex = (uint)dbdata.IDX; ((PlayerItemData)(TPlayerItemData)).ItemTypeID = (uint)dbdata.iffTypeId; ((PlayerItemData)(TPlayerItemData)).ItemC0 = (ushort)ItemAddData.Quantity; ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique = dbdata.UCC_KEY; ((PlayerItemData)(TPlayerItemData)).ItemFlag = (byte)dbdata.Flag; ((PlayerItemData)(TPlayerItemData)).ItemEndDate = dbdata.END_DATE; ((PlayerItemData)(TPlayerItemData)).ItemIsValid = 1; // Add to inventory list ItemWarehouse.ItemAdd((PlayerItemData)(TPlayerItemData)); // Set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerItemData)(TPlayerItemData)).ItemIndex, ItemTypeID = ((PlayerItemData)(TPlayerItemData)).ItemTypeID, ItemOldQty = 0, ItemNewQty = ItemAddData.Quantity, ItemUCCKey = ((PlayerItemData)(TPlayerItemData)).ItemUCCUnique, ItemFlag = (byte)((PlayerItemData)(TPlayerItemData)).ItemFlag, ItemEndDate = ((PlayerItemData)(TPlayerItemData)).ItemEndDate, }; } break; case TITEMGROUP.ITEM_TYPE_CARD: { TPlayerItemData = new PlayerCardData(); ((PlayerCardData)(TPlayerItemData)).CardIndex = (uint)dbdata.IDX; ((PlayerCardData)(TPlayerItemData)).CardTypeID = (uint)dbdata.iffTypeId; ((PlayerCardData)(TPlayerItemData)).CardQuantity = ItemAddData.Quantity; ((PlayerCardData)(TPlayerItemData)).CardIsValid = 1; ((PlayerCardData)(TPlayerItemData)).CardNeedUpdate = false; // ## add to card ItemCard.CardAdd((PlayerCardData)(TPlayerItemData)); // set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerCardData)(TPlayerItemData)).CardIndex, ItemTypeID = ((PlayerCardData)(TPlayerItemData)).CardTypeID, ItemOldQty = 0, ItemNewQty = ((PlayerCardData)(TPlayerItemData)).CardQuantity, ItemUCCKey = string.Empty, ItemFlag = 0, ItemEndDate = null, }; } break; case TITEMGROUP.ITEM_TYPE_MASCOT: { TPlayerItemData = new PlayerMascotData(); ((PlayerMascotData)(TPlayerItemData)).MascotIndex = (uint)dbdata.IDX; ((PlayerMascotData)(TPlayerItemData)).MascotTypeID = (uint)dbdata.iffTypeId; ((PlayerMascotData)(TPlayerItemData)).MascotMessage = "Pangya !"; ((PlayerMascotData)(TPlayerItemData)).MascotIsValid = 1; ((PlayerMascotData)(TPlayerItemData)).MascotNeedUpdate = false; ((PlayerMascotData)(TPlayerItemData)).MascotEndDate = (DateTime)dbdata.END_DATE; ((PlayerMascotData)(TPlayerItemData)).MascotDayToEnd = (ushort)(DaysBetween(dbdata.END_DATE, DateTime.Now)); // ## add to card ItemMascot.MascotAdd((PlayerMascotData)(TPlayerItemData)); // set the result data Result = new AddData() { Status = true, ItemIndex = ((PlayerMascotData)(TPlayerItemData)).MascotIndex, ItemTypeID = ((PlayerMascotData)(TPlayerItemData)).MascotTypeID, ItemOldQty = 0, ItemNewQty = 1, ItemUCCKey = string.Empty, ItemFlag = 4, ItemEndDate = DateTime.Now.AddDays(ItemAddData.Day + 1), }; } break; } } catch { var player = (GPlayer)MainServer.Program._server.GetPlayerByUID(UID); if (player != null) { player.Close(); } } } // ## resulted return(Result); }
public void UseItem(PlayerItemData item) { item.Equipped = true; if (Contains(playerLookData.Bodies, item)) { ClearItems(playerLookData.Bodies); item.Equipped = true; playerLookData.CurrentBodyId = item.Id; playerLookLoader.Save(playerLookData); if (OnBodyChanged != null) { OnBodyChanged(item); } return; } if (Contains(playerLookData.Bags, item)) { ClearItems(playerLookData.Bags); item.Equipped = true; playerLookData.CurrentBagId = item.Id; playerLookLoader.Save(playerLookData); if (OnBagChanged != null) { OnBagChanged(item); } return; } if (Contains(playerLookData.Sticks, item)) { ClearItems(playerLookData.Sticks); item.Equipped = true; playerLookData.CurrentStickId = item.Id; playerLookLoader.Save(playerLookData); if (OnStickChanged != null) { OnStickChanged(item); } return; } if (Contains(playerLookData.Glasses, item)) { ClearItems(playerLookData.Glasses); item.Equipped = true; playerLookData.CurrentGlassesId = item.Id; playerLookLoader.Save(playerLookData); if (OnGlassesChanged != null) { OnGlassesChanged(item); } return; } if (Contains(playerLookData.Beards, item)) { ClearItems(playerLookData.Beards); item.Equipped = true; playerLookData.CurrentBeardId = item.Id; playerLookLoader.Save(playerLookData); if (OnBeardChanged != null) { OnBeardChanged(item); } return; } }
public void PlayerTalkItemLocker(GPlayer player, Packet packet) { PlayerItemData Item; var count = packet.ReadByte(); //count item var Index = packet.ReadInt32(); //id do item var _db = new PangyaEntities(); var invent = _db.USP_INVEN_POP((int)player.GetUID, Index).First(); if (invent.ERROR == null || invent.ERROR != 0) { player.SendResponse(new byte[] { 0x6f, 0x01, 0x6B, 0x00, 0x00, 0x00 }); return; } else { Item = new PlayerItemData(); Item.CreateNewItem(); Item.ItemIndex = (uint)invent.ITEM_ID; Item.ItemTypeID = (uint)invent.TYPEID; Item.ItemC0 = (ushort)invent.C0; Item.ItemC1 = (ushort)invent.C1; Item.ItemC2 = (ushort)invent.C2; Item.ItemC3 = (ushort)invent.C3; Item.ItemC4 = (ushort)invent.C4; Item.ItemEndDate = invent.DateEnd; Item.ItemFlag = invent.FLAG; Item.ItemUCCUnique = invent.UCC_UNIQE; Item.ItemUCCStatus = invent.UCC_STATUS; Item.ItemUCCName = invent.UCC_NAME; Item.ItemUCCDrawerUID = (uint?)invent.UCC_DRAWER_UID; Item.ItemUCCDrawer = invent.UCC_DRAWER_NICKNAME; Item.ItemUCCCopyCount = (ushort?)invent.UCC_COPY_COUNT; // Add to inventory player.Inventory.ItemWarehouse.Add(Item); player.Response.Write(new byte[] { 0xEC, 0x00 }); player.Response.Write((byte)1); player.Response.Write(0); player.Response.Write(player.GetPang); player.Response.WriteZero(8); player.Response.Write(Item.ItemTypeID); player.Response.Write(Item.ItemIndex); player.Response.Write(player.GetUID);//quantity player.Response.WriteZero(27); player.Response.WriteStr(Item.ItemUCCUnique, 9); player.Response.Write(Item.ItemUCCCopyCount ?? 0); player.Response.Write(Item.ItemUCCStatus ?? 0); player.Response.WriteZero(54); player.Response.WriteStr(Item.ItemUCCName, 16); player.Response.WriteZero(25); player.Response.WriteStr(Item.ItemUCCDrawer, 16); player.Response.WriteZero(6); player.Response.Write((byte)3); player.Response.Write(player.GetUID); player.Response.Write(Item.ItemTypeID); player.Response.Write(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF }); player.Response.Write(1); player.Response.WriteZero(6); player.Response.Write(1); player.Response.WriteZero(0x0E); player.Response.Write((byte)2); player.Response.WriteStr(Item.ItemUCCName, 16); player.Response.WriteZero(25); player.Response.WriteStr(Item.ItemUCCUnique, 9); player.Response.Write(Item.ItemUCCStatus ?? 0); player.Response.Write(Item.ItemUCCCopyCount ?? 0); player.Response.WriteStr(Item.ItemUCCDrawer, 16); player.Response.WriteZero(0x4E); player.Response.Write(0); player.Response.Write(0); player.SendResponse(); player.Response.Write(new byte[] { 0x6F, 0x01 }); player.Response.Write(0); player.Response.Write(Index); player.Response.Write(0); player.Response.Write(Item.ItemIndex); player.Response.Write(player.GetUID);//quantity player.Response.Write(Item.ItemTypeID); player.Response.WriteZero(27); player.Response.WriteStr(Item.ItemUCCUnique, 9); player.Response.Write(Item.ItemUCCCopyCount ?? 0); player.Response.Write(Item.ItemUCCStatus ?? 0); player.Response.WriteZero(54); player.Response.WriteStr(Item.ItemUCCName, 16); player.Response.WriteZero(25); player.Response.WriteStr(Item.ItemUCCDrawer, 22); player.SendResponse(); } }
public void ConsumeBundle(int bundleId, string reason) { PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData(); SpilBundleData bundle = GetBundleFromObjects(bundleId); if(bundle == null || reason == null){ Debug.Log("Error adding bundle to player inventory!"); return; } SpilShopPromotionData promotion = GetPromotionFromObjects(bundleId); bool isPromotionValid = false; if(promotion != null){ isPromotionValid = IsPromotionValid(promotion); } List<SpilBundlePriceData> bundlePrices; if(isPromotionValid){ bundlePrices = promotion.prices; } else { bundlePrices = bundle.prices; } for(int i = 0; i < bundlePrices.Count; i++){ PlayerCurrencyData currency = GetCurrencyFromWallet(bundlePrices[i].currencyId); if(currency == null){ Debug.Log("Currency does not exist!"); return; } int currentBalance = currency.currentBalance; int updatedBalance = currentBalance - bundlePrices[i].value; if(updatedBalance < 0){ Debug.Log("Not enough balance for currency!"); return; } int updatedDelta = - bundlePrices[i].value + currency.delta; if(updatedDelta == 0){ updatedDelta = - bundlePrices[i].value; } currency.delta = updatedDelta; currency.currentBalance = updatedBalance; UpdateCurrency(currency); updatedData.currencies.Add(currency); } for(int i = 0; i < bundle.items.Count; i++){ SpilItemData gameItem = GetItemFromObjects(bundle.items[i].id); if(gameItem != null){ PlayerItemData item = new PlayerItemData(); item.id = gameItem.id; item.name = gameItem.name; item.type = gameItem.type; PlayerItemData inventoryItem = GetItemFromInventory(bundle.items[i].id); int inventoryItemAmount; if(inventoryItem != null){ inventoryItemAmount = inventoryItem.amount; int promoAmount = 1; if(isPromotionValid){ promoAmount = promotion.amount; } inventoryItemAmount = inventoryItemAmount + bundle.items[i].amount * promoAmount; inventoryItem.delta = bundle.items[i].amount; inventoryItem.amount = inventoryItemAmount; UpdateItem(inventoryItem); updatedData.items.Add(inventoryItem); } else { inventoryItemAmount = bundle.items[i].amount; if(isPromotionValid){ inventoryItemAmount = inventoryItemAmount * promotion.amount; } item.delta = inventoryItemAmount; item.amount = inventoryItemAmount; Inventory.items.Add(item); updatedData.items.Add(inventoryItem); } } } updatedData.reason = reason; SpilUnityImplementationBase.firePlayerDataUpdated (JsonHelper.getJSONFromObject (updatedData)); SendUpdatePlayerDataEvent(bundle, reason); }
private void HandleGlassesChanged(PlayerItemData data) { SetImage(glassesRenderer, data.Image); }
private void SendUpdatePlayerDataEvent(PlayerItemData item, string reason) { SpilEvent spilEvent = Spil.MonoInstance.gameObject.AddComponent<SpilEvent> (); spilEvent.eventName = "updatePlayerData"; JSONObject walletJSON = new JSONObject(); walletJSON.AddField("offset", Wallet.offset); spilEvent.customData.AddField("wallet", walletJSON); JSONObject inventoryJSON = new JSONObject(); JSONObject itemsJSON = new JSONObject(JsonHelper.getJSONFromObject(Inventory.items)); inventoryJSON.AddField("items", itemsJSON); inventoryJSON.AddField("offset", Inventory.offset); spilEvent.customData.AddField("inventory", inventoryJSON); spilEvent.customData.AddField("item", new JSONObject(JsonHelper.getJSONFromObject(item))); spilEvent.customData.AddField("reason", reason); spilEvent.Send(); }
public void PlayerAfterUploaded(GPlayer player, Packet packet) { var db = new PangyaEntities(); byte Option; byte Cases; uint TypeId; uint UCC_IDX; string UCC_UNIQUE; string UCC_NAME; PlayerItemData Item = null; TSaveUCC UCC_SAVE = new TSaveUCC(); Option = packet.ReadByte(); switch (Option) { // Save Permanently case 0: { TypeId = packet.ReadUInt32(); UCC_UNIQUE = packet.ReadPStr(); //key? UCC_NAME = packet.ReadPStr(); Item = player.Inventory.ItemWarehouse.GetUCC(TypeId, UCC_UNIQUE); if (Item == null) { Item = player.Inventory.ItemWarehouse.GetUCC(TypeId, UCC_UNIQUE); return; } if (!(Item == null)) { Item.ItemUCCStatus = 1; Item.ItemUCCName = UCC_NAME; Item.ItemUCCDrawerUID = (uint)player.GetUID; Item.ItemNeedUpdate = false; UCC_SAVE.UID = (uint)player.GetUID; UCC_SAVE.UCCIndex = Item.ItemIndex; UCC_SAVE.UCCName = UCC_NAME; UCC_SAVE.UCCStatus = (byte)Item.ItemUCCStatus; UCC_SAVE.UccDrawerUID = (uint)player.GetUID; // SAVE TO DATABASE SaveUCC(UCC_SAVE); } player.Response.Write(new byte[] { 0x2E, 0x01, 0x00, 0x01 }); player.Response.WriteUInt32(Item.ItemIndex); player.Response.WriteUInt32(Item.ItemTypeID); player.Response.WritePStr(Item.ItemUCCUnique); player.Response.WritePStr(UCC_NAME); player.SendResponse(); break; } // UCC INFO case 1: { UCC_IDX = packet.ReadUInt32(); Cases = packet.ReadByte(); if ((UCC_IDX == 0)) { player.SendResponse(new byte[] { 0x2E, 0x01, 0x04 }); return; } try { var data = db.ProcGetUCCData((int)UCC_IDX).ToList(); if (data.Count <= 0) { return; } player.Response.Write(new byte[] { 0x2E, 0x01, 0x01 }); foreach (var Query in data) { player.Response.WriteInt32(Query.TYPEID); player.Response.WritePStr(Query.UCC_UNIQE); player.Response.WriteByte(1); player.Response.WriteInt32(Query.item_id); player.Response.WriteInt32(Query.TYPEID); player.Response.WriteZero(0xF); player.Response.WriteByte(1); player.Response.WriteZero(0x10); player.Response.WriteByte(2); player.Response.WriteStr(Query.UCC_NAME, 0x10); player.Response.WriteZero(0x19); player.Response.WriteStr(Query.UCC_UNIQE, 0x9); player.Response.WriteByte((byte)Query.UCC_STATUS); player.Response.WriteUInt16((ushort)Query.UCC_COPY_COUNT); player.Response.WriteStr(Query.Nickname, 0x10); player.Response.WriteZero(0x56); } player.SendResponse(); } finally { db = null; } break; } // COPY UCC case 2: { TypeId = packet.ReadUInt32(); UCC_UNIQUE = packet.ReadPStr(); packet.Skip(2); UCC_IDX = packet.ReadUInt32(); // IDX TO COPY Item = player.Inventory.ItemWarehouse.GetUCC(TypeId, UCC_UNIQUE, true); if (Item == null) { return; } db = new PangyaEntities(); try { //ProcSaveUCCCopy var Query = db.ProcSaveUCCCopy((int)player.GetUID, (int)TypeId, UCC_UNIQUE, (int)UCC_IDX).First(); if (Query.Code == 0) { return; } player.Response.Write(new byte[] { 0x2E, 0x01, 0x02 }); player.Response.WriteUInt32(TypeId); player.Response.WritePStr(UCC_UNIQUE); player.Response.Write(new byte[] { 0x01, 0x00 }); // UNKNOWN YET player.Response.WriteUInt32(UCC_IDX); player.Response.WriteInt32(Query.ITEM_ID); player.Response.WriteInt32(Query.TYPEID); player.Response.WritePStr(Query.UCC_UNIQE); player.Response.Write((ushort)Query.UCC_COPY_COUNT); player.Response.Write((byte)1); player.SendResponse(); } finally { db = null; } break; } // SAVE TEMPARARILY case 3: { TypeId = packet.ReadUInt32(); UCC_UNIQUE = packet.ReadPStr(); player.Response.Write(new byte[] { 0x2E, 0x01 }); player.Response.Write(Option); player.Response.WriteUInt32(TypeId); player.Response.WritePStr(UCC_UNIQUE); Item = player.Inventory.ItemWarehouse.GetUCC(TypeId, UCC_UNIQUE); if (Item == null) { player.Response.Write((byte)0); } if (!(Item == null)) { Item.ItemUCCStatus = 2; Item.ItemNeedUpdate = true; player.Response.Write((byte)1); } player.SendResponse(); break; } } }
private void HandleStickChanged(PlayerItemData data) { SetImage(stickRenderer, data.Image); }
// TClubUpgradeTemporary public void Clear() { PClub = null; UpgradeType = -1; }
private void HandleBagChanged(PlayerItemData data) { SetImage(bagRenderer, data.Image); }
public void ProcessPlayerDataResponse(ResponseEvent response) { WalletData receivedWallet = null; InventoryData receivedInventory = null; if (response.data.HasField ("wallet")) { JSONObject walletJSON = response.data.GetField ("wallet"); receivedWallet = new WalletData (); if (walletJSON.HasField ("currencies")) { receivedWallet.currencies = new List<PlayerCurrencyData> (); JSONObject currenciesJSON = walletJSON.GetField ("currencies"); for (int i = 0; i < currenciesJSON.Count; i++) { PlayerCurrencyData currency = new PlayerCurrencyData (); currency.id = (int)currenciesJSON.list [i].GetField ("id").n; currency.currentBalance = (int)currenciesJSON.list [i].GetField ("currentBalance").n; currency.delta = (int)currenciesJSON.list [i].GetField ("delta").n; receivedWallet.currencies.Add (currency); } } receivedWallet.offset = (int)walletJSON.GetField ("offset").n; receivedWallet.logic = walletJSON.GetField ("logic").str; } if (response.data.HasField ("inventory")) { JSONObject inventoryJSON = response.data.GetField ("inventory"); receivedInventory = new InventoryData (); if (inventoryJSON.HasField ("items")) { receivedInventory.items = new List<PlayerItemData> (); JSONObject itemsJSON = inventoryJSON.GetField ("items"); for (int i = 0; i < itemsJSON.Count; i++) { PlayerItemData item = new PlayerItemData (); item.id = (int)itemsJSON.list [i].GetField ("id").n; item.amount = (int)itemsJSON.list [i].GetField ("amount").n; item.delta = (int)itemsJSON.list [i].GetField ("delta").n; receivedInventory.items.Add (item); } } receivedInventory.offset = (int)inventoryJSON.GetField ("offset").n; receivedInventory.logic = inventoryJSON.GetField ("logic").str; } CalculatePlayerDataResponse (receivedWallet, receivedInventory); }
public void CalculatePlayerDataResponse(WalletData receivedWallet, InventoryData receivedInventory, bool fromInit) { bool updated = false; PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData(); if (receivedWallet != null) { foreach (PlayerCurrencyData playerCurrency in Wallet.currencies) { playerCurrency.delta = 0; } if (Wallet.offset < receivedWallet.offset && receivedWallet.currencies.Count > 0) { foreach (PlayerCurrencyData playerCurrency in receivedWallet.currencies) { if (receivedWallet.logic.Equals("CLIENT")) { PlayerCurrencyData currency = Wallet.currencies.FirstOrDefault(a => a.id == playerCurrency.id); if (currency == null) { continue; } if (Wallet.offset == 0 && receivedWallet.offset != 0) { currency.currentBalance = playerCurrency.currentBalance; } else { if (playerCurrency.delta != 0) { int updatedBalance = currency.currentBalance + playerCurrency.delta; if (updatedBalance < 0) { updatedBalance = 0; } currency.currentBalance = updatedBalance; } } updated = true; updatedData.currencies.Add(currency); } else if (receivedWallet.logic.Equals("SERVER")) { } } } Wallet.offset = receivedWallet.offset; Wallet.logic = receivedWallet.logic; } if (receivedInventory != null) { foreach (PlayerItemData playerItem in Inventory.items) { playerItem.delta = 0; } if (Inventory.offset < receivedInventory.offset && receivedInventory.items.Count > 0) { List <PlayerItemData> itemsToBeAdded = new List <PlayerItemData>(); foreach (PlayerItemData playerItem in receivedInventory.items) { if (receivedInventory.logic.Equals("CLIENT")) { PlayerItemData item = Inventory.items.FirstOrDefault(a => a.id == playerItem.id); if (item != null && playerItem.delta != 0) { item.amount = item.amount + playerItem.delta; } else { itemsToBeAdded.Add(playerItem); } updated = true; } else if (receivedInventory.logic.Equals("SERVER")) { } updatedData.items.Add(playerItem); } foreach (PlayerItemData itemToAdd in itemsToBeAdded) { SpilItemData item = GetItemFromObjects(itemToAdd.id); if (item != null && itemToAdd.amount > 0) { PlayerItemData playerItem = new PlayerItemData(); playerItem.id = item.id; playerItem.name = item.name; playerItem.type = item.type; playerItem.amount = itemToAdd.amount; playerItem.value = itemToAdd.value; playerItem.delta = 0; playerItem.displayName = item.displayName; playerItem.displayDescription = item.displayDescription; playerItem.isGacha = item.isGacha; playerItem.content = item.content; Inventory.items.Add(playerItem); updated = true; } } } Inventory.offset = receivedInventory.offset; Inventory.logic = receivedInventory.logic; } if (updated) { UserDataManager.UpdateUserDataVersions(); updatedData.reason = PlayerDataUpdateReasons.ServerUpdate; SpilUnityImplementationBase.firePlayerDataUpdated(JsonHelper.getJSONFromObject(updatedData)); } if (!fromInit) { SpilUnityImplementationBase.fireUserDataAvailable(); } }
private void CalculatePlayerDataResponse(WalletData receivedWallet, InventoryData receivedInventory) { bool updated = false; PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData (); if (receivedWallet != null) { for (int i = 0; i < Wallet.currencies.Count; i++) { Wallet.currencies[i].delta = 0; } if (Wallet.offset < receivedWallet.offset && receivedWallet.currencies.Count > 0) { for (int i = 0; i < receivedWallet.currencies.Count; i++) { for (int j = 0; j < Wallet.currencies.Count; j++) { if (receivedWallet.logic.Equals ("CLIENT")) { if (Wallet.currencies [j].id == receivedWallet.currencies [i].id && receivedWallet.currencies [i].delta != 0) { int updatedBalance = 0; if (Wallet.offset == 0 && receivedWallet.offset != 0) { updatedBalance = receivedWallet.currencies [i].currentBalance; } else { updatedBalance = Wallet.currencies [j].currentBalance + receivedWallet.currencies [i].delta; if (updatedBalance < 0) { updatedBalance = 0; } } Wallet.currencies [j].currentBalance = updatedBalance; updated = true; updatedData.currencies.Add (Wallet.currencies [j]); } } else if (receivedWallet.logic.Equals ("SERVER")) { } } } } Wallet.offset = receivedWallet.offset; Wallet.logic = receivedWallet.logic; } if (receivedInventory != null) { for (int i = 0; i < Inventory.items.Count; i++) { Inventory.items[i].delta = 0; } if(Inventory.offset < receivedInventory.offset && receivedInventory.items.Count > 0){ List<PlayerItemData> itemsToBeAdded = new List<PlayerItemData>(); for(int i = 0; i < receivedInventory.items.Count; i++){ for(int j = 0; j < Inventory.items.Count; j++){ if(receivedInventory.logic.Equals("CLIENT")){ if(Inventory.items[j].id == receivedInventory.items[i].id && receivedInventory.items[i].delta != 0){ int updatedAmount = Inventory.items[j].amount + receivedInventory.items[i].delta; Inventory.items[j].amount = updatedAmount; } else { itemsToBeAdded.Add(receivedInventory.items[i]); } updated = true; } else if(receivedInventory.logic.Equals("SERVER")){ } } updatedData.items.Add(receivedInventory.items[i]); } for(int i = 0; i < itemsToBeAdded.Count; i++){ SpilItemData item = GetItemFromObjects(itemsToBeAdded[i].id); if(item != null && itemsToBeAdded[i].amount > 0){ PlayerItemData playerItem = new PlayerItemData(); playerItem.id = item.id; playerItem.name = item.name; playerItem.type = item.type; playerItem.amount = itemsToBeAdded[i].amount; playerItem.value = itemsToBeAdded[i].value; playerItem.delta = 0; Inventory.items.Add(playerItem); updated = true; } } } Inventory.offset = receivedInventory.offset; Inventory.logic = receivedInventory.logic; } if (updated) { updatedData.reason = PlayerDataUpdateReasons.ServerUpdate; SpilUnityImplementationBase.firePlayerDataUpdated (JsonHelper.getJSONFromObject (updatedData)); } }
public void InventoryOperation(string action, int itemId, int amount, string reason, string reasonDetails, string location, string transactionId) { SpilItemData gameItem = GetItemFromObjects(itemId); if (gameItem == null || itemId <= 0 || action == null || reason == null) { SpilLogging.Error("Error updating item to player inventory!"); return; } PlayerItemData item = new PlayerItemData(); item.id = gameItem.id; item.name = gameItem.name; item.type = gameItem.type; item.displayName = gameItem.displayName; item.displayDescription = gameItem.displayDescription; item.isGacha = gameItem.isGacha; item.content = gameItem.content; item.amount = amount; item.delta = amount; PlayerItemData inventoryItem = GetItemFromInventory(itemId); if (inventoryItem != null) { int inventoryItemAmount = inventoryItem.amount; if (action.Equals("add")) { inventoryItemAmount = inventoryItemAmount + amount; } else if (action.Equals("subtract")) { inventoryItemAmount = inventoryItemAmount - amount; if (inventoryItemAmount < 0) { SpilLogging.Error("Could not remove item as amount is too low!"); return; } } inventoryItem.delta = amount; inventoryItem.amount = inventoryItemAmount; UpdateItem(inventoryItem); } else { if (action.Equals("add")) { Inventory.items.Add(item); } else if (action.Equals("subtract")) { SpilLogging.Error("Could not remove item as amount is too low!"); } } UserDataManager.UpdateUserDataVersions(); UserDataManager.UpdateUserDataMeta(); PlayerDataUpdatedData updatedData = new PlayerDataUpdatedData(); updatedData.items.Add(item); updatedData.reason = reason; SpilUnityImplementationBase.firePlayerDataUpdated(JsonHelper.getJSONFromObject(updatedData)); SendUpdatePlayerDataEvent(null, reason, reasonDetails, location, transactionId); }
private void UpdateItem(PlayerItemData item) { for (int i = 0; i < Inventory.items.Count; i++) { if (Inventory.items[i].id == item.id) { Inventory.items[i].amount = item.amount; Inventory.items[i].delta = item.delta; } } }
public static void ProcessUserDataResponse(ResponseEvent responseEvent) { WalletData receivedWallet = null; InventoryData receivedInventory = null; string gameStateData = null; List <UserDataVersion> userDataVersions = null; UserDataMeta userDataMeta = null; bool externalChange = false; if (responseEvent.data.HasField("playerData")) { JSONObject playerDataJSON = responseEvent.data.GetField("playerData"); if (playerDataJSON.HasField("wallet")) { JSONObject walletJSON = playerDataJSON.GetField("wallet"); receivedWallet = new WalletData(); if (walletJSON.HasField("currencies")) { receivedWallet.currencies = new List <PlayerCurrencyData>(); JSONObject currenciesJSON = walletJSON.GetField("currencies"); for (int i = 0; i < currenciesJSON.Count; i++) { PlayerCurrencyData currency = new PlayerCurrencyData(); currency.id = (int)currenciesJSON.list[i].GetField("id").n; currency.currentBalance = (int)currenciesJSON.list[i].GetField("currentBalance").n; currency.delta = (int)currenciesJSON.list[i].GetField("delta").n; receivedWallet.currencies.Add(currency); } } receivedWallet.offset = (long)walletJSON.GetField("offset").n; receivedWallet.logic = walletJSON.GetField("logic").str; } if (playerDataJSON.HasField("inventory")) { JSONObject inventoryJSON = playerDataJSON.GetField("inventory"); receivedInventory = new InventoryData(); if (inventoryJSON.HasField("items")) { receivedInventory.items = new List <PlayerItemData>(); JSONObject itemsJSON = inventoryJSON.GetField("items"); for (int i = 0; i < itemsJSON.Count; i++) { PlayerItemData item = new PlayerItemData(); item.id = (int)itemsJSON.list[i].GetField("id").n; item.amount = (int)itemsJSON.list[i].GetField("amount").n; item.delta = (int)itemsJSON.list[i].GetField("delta").n; receivedInventory.items.Add(item); } } receivedInventory.offset = (long)inventoryJSON.GetField("offset").n; receivedInventory.logic = inventoryJSON.GetField("logic").str; } } if (responseEvent.data.HasField("gameState")) { gameStateData = responseEvent.data.GetField("gameState").Print(); } if (responseEvent.data.HasField("externalChange")) { externalChange = responseEvent.data.GetField("externalChange").b; } if (responseEvent.data.HasField("deviceVersions")) { JSONObject deviceVersionsJSON = responseEvent.data.GetField("deviceVersions"); userDataVersions = new List <UserDataVersion>(); if (deviceVersionsJSON.Count > 0) { for (int i = 0; i < deviceVersionsJSON.Count; i++) { UserDataVersion userDataVersion = new UserDataVersion(); userDataVersion.deviceId = deviceVersionsJSON.keys[i]; userDataVersion.version = (int)deviceVersionsJSON.list[i].i; userDataVersions.Add(userDataVersion); } } } if (responseEvent.data.HasField("metaData")) { JSONObject metaDataJSON = responseEvent.data.GetField("metaData"); userDataMeta = new UserDataMeta(); if (metaDataJSON.HasField("serverTime")) { userDataMeta.serverTime = metaDataJSON.GetField("serverTime").i; } if (metaDataJSON.HasField("clientTime")) { userDataMeta.clientTime = metaDataJSON.GetField("clientTime").i; } if (metaDataJSON.HasField("timezoneOffset")) { userDataMeta.timezoneOffset = (int)metaDataJSON.GetField("timezoneOffset").i; } if (metaDataJSON.HasField("deviceModel")) { userDataMeta.deviceModel = metaDataJSON.GetField("deviceModel").str; } if (metaDataJSON.HasField("appVersion")) { userDataMeta.appVersion = metaDataJSON.GetField("appVersion").str; } } if (responseEvent.action.ToLower().Trim().Equals("request")) { UserDataManager.ProcessRequestUserData(receivedWallet, receivedInventory, externalChange, gameStateData, userDataVersions, userDataMeta); } else if (responseEvent.action.ToLower().Trim().Equals("mergeconflict")) { UserDataManager.ProcessMergeConflict(receivedWallet, receivedInventory, gameStateData, userDataVersions, userDataMeta); } else if (responseEvent.action.ToLower().Trim().Equals("merge")) { UserDataManager.ProcessMergeUserData(userDataVersions); } else if (responseEvent.action.ToLower().Trim().Equals("lockerror")) { UserDataManager.ProcessLockError(); } else if (responseEvent.action.ToLower().Trim().Equals("syncerror")) { UserDataManager.ProcessSyncError(); } }