private void OnItemBuyMsg(AppChangingItemsMessage message) { PlayerInfo playerInfo = GetPlayer(message.ConnectionId); PlayerItemInfo itemInfo = playerInfo.Inventory.GetItem(message.WorldId); GameItemType itemType = itemInfo.ItemType;; int price = GetPrice(itemType); ItemsChangingResponse response; if (playerInfo.Inventory.Coins >= price) { PlayerItemInfo newItemInfo = new PlayerItemInfo(itemType, Storage.GetUniqueWorldId()); playerInfo.Inventory.AddItem(newItemInfo); playerInfo.Inventory.Coins -= price; Storage.Change(playerInfo); response = new ItemsChangingResponse(true); } else { response = new ItemsChangingResponse(false, "Not enough coins"); } AppChangingItemsAnswerMessage answer = new AppChangingItemsAnswerMessage(); SendAnswer(answer, message); }
private void OnRegistrationReceived(RegistrationMessage message) { var answer = new RegistrationAnswerMessage(); NetworkMessageErrorType errorType; if (ValidateRegistrationMessage(message, out errorType)) { PlayerInfo playerData = new PlayerInfo { AuthInfo = new PlayerAuthInfo(message.UserName, message.Password) }; PlayerItemInfo defaultSkinItem = new PlayerItemInfo(GameItemType.SkinGreen, Storage.GetUniqueWorldId()); PlayerItemInfo defaultHelmetItem = new PlayerItemInfo(GameItemType.HelmetPropCap, Storage.GetUniqueWorldId()); playerData.Inventory.Items.Add(defaultSkinItem); playerData.Inventory.EquipItem(defaultSkinItem); playerData.Inventory.Items.Add(defaultHelmetItem); playerData.Inventory.EquipItem(defaultHelmetItem); Storage.Add(playerData); } else { answer.Error = errorType; } SendMessageToClient(answer, message.ConnectionId); }
private void OnRegistrMsg(RegistrationMessage message) { var answer = new RegistrationAnswerMessage(); if (message.UserName == string.Empty) { answer.Error = NetMsgErrorType.UserNameCannotBeEmpty; } else if (Storage.IsExist(message.UserName)) { answer.Error = NetMsgErrorType.UserNameBusy; } else if (message.Password == string.Empty) { answer.Error = NetMsgErrorType.UserPasswordCannotBeEmpty; } if (!answer.HasError) { PlayerInfo playerData = new PlayerInfo { Autorziation = new PlayerAutorizationInfo(message.UserName, message.Password) }; PlayerItemInfo defaultSkinItem = new PlayerItemInfo(GameItemType.SkinGreen, Storage.GetUniqueWorldId()); PlayerItemInfo defaultHelmetItem = new PlayerItemInfo(GameItemType.HelmetPropCap, Storage.GetUniqueWorldId()); playerData.Inventory.Items.Add(defaultSkinItem); playerData.Inventory.EquipItem(defaultSkinItem); playerData.Inventory.Items.Add(defaultHelmetItem); playerData.Inventory.EquipItem(defaultHelmetItem); Storage.Add(playerData); } SendAnswer(answer, message); }
private void OnItemFromMarketMsg(AppChangingItemsMessage message) { if (!IsCanMakeDMarketOperation(message)) { return; } var assetId = _dMarketConverter.GetAssetId(message.WorldId); DMarketApi.FromMarket(Model.MarketToken, assetId, (responce, request) => { var inventory = GetInventory(message.ConnectionId); var item = inventory.GetItem(message.WorldId); if (item == null) { item = new PlayerItemInfo(message.ItemType, message.WorldId); inventory.AddItem(item); } item.IsInMarket = false; OnAfterSuccesDMarketOperation(message); }, error => { OnItemOperationError(message, error); }); }
private void OnItemBuyMsg(AppChangingItemsMessage message) { PlayerInfo playerInfo = GetPlayer(message.ConnectionId); var response = new ItemsChangingResponse(); for (var i = 0; i < message.ItemsCount; i++) { var worldId = message.GetWorldId(i); PlayerItemInfo itemInfo = playerInfo.Inventory.GetItem(worldId); GameItemType itemType = itemInfo.ItemType; int price = GetPrice(itemType); if (playerInfo.Inventory.Coins >= price) { PlayerItemInfo newItemInfo = new PlayerItemInfo(itemType, Storage.GetUniqueWorldId()); playerInfo.Inventory.AddItem(newItemInfo); playerInfo.Inventory.Coins -= price; } else { response.ErrorText = "Not enough coins"; break; } } Storage.Change(playerInfo); AppChangingItemsAnswerMessage answer = new AppChangingItemsAnswerMessage(response); SendMessageToClient(answer, message.ConnectionId); }
private void AddNewItem(PlayerItemInfo currentItem) { var itemModel = GetInventoryItemModel(currentItem); var newItem = CreateItem(); _inventoryItems.Add(newItem); newItem.ApplyModel(itemModel); newItem.Show(); }
private InventoryItemModel GetInventoryItemModel(PlayerItemInfo currentItem) { var icon = SpriteCatalog.GetInventoryItemSprite(currentItem.ItemType); var itemModel = new InventoryItemModel(currentItem.ItemType, icon, currentItem.WorldId); var itemInfo = InfoCatalog.GetInfo(currentItem.ItemType); itemModel.Name = itemInfo.Name; itemModel.Description = itemInfo.Description; UpdateModel(currentItem, itemModel); return(itemModel); }
private void OnItemDevTestAdd(AppChangingItemsMessage message) { var playerData = GetPlayer(message.ConnectionId); var itemType = message.GetItemType(0); var newItem = new PlayerItemInfo(itemType, Storage.GetUniqueWorldId()); playerData.Inventory.Items.Add(newItem); Storage.Change(playerData); var answer = new AppChangingItemsAnswerMessage(new ItemsChangingResponse()); SendMessageToClient(answer, message.ConnectionId); }
private void OnItemEquipMsg(AppChangingItemsMessage message) { PlayerInfo playerInfo = GetPlayer(message.ConnectionId); PlayerItemInfo item = playerInfo.Inventory.GetItem(message.WorldId); playerInfo.Inventory.EquipItem(item); Storage.Change(playerInfo); var answer = new AppChangingItemsAnswerMessage { Response = new ItemsChangingResponse(true) }; SendAnswer(answer, message); }
private void OnSuccessMarketOperation(AsyncOperationRequest.Response.ItemsAsset asset, MoveAssetTransactionInfo transaction) { DMarketTransactionOperationType operationType = _apiResponseAdapter.GetTransactionOperationType(asset.operation); var inventory = GetInventory(transaction.Sender.ConnectionId); var worldId = transaction.GetWorldId(asset.operationId); var item = inventory.GetItem(worldId); if (item == null) { item = new PlayerItemInfo(transaction.GetItemType(asset.operationId), worldId); inventory.AddItem(item); } item.IsInMarket = operationType == DMarketTransactionOperationType.ToMarket; }
private void OnPickUpItem(PickUpGameItemMsg message) { var item = message.DropInfo; Model.RemoveItem(item.WorldId); string userName = Model.GetUserNameByConnectionId(message.ClientId); PlayerInfo playerData = Storage.Get(userName); PlayerItemInfo itemInfo = new PlayerItemInfo(item.CatalogId, item.WorldId); playerData.Inventory.AddItem(itemInfo); Storage.Change(playerData); Server.SendToAllExcept(message, message.ClientId); }
private void OnLoadDMarketDataMsg(AppLoadDMarketDataMessage message) { int connectionId = message.ConnectionId; if (!IsCanMakeDMarketOperation(connectionId)) { return; } DMarketApi.GetInMarketInventory(Model.GetPlayerMarketAccessToken(connectionId), (response, request) => { PlayerInfo playerInfo = GetPlayer(connectionId); PlayerInventoryInfo inventory = GetInventory(connectionId); playerInfo.Inventory = inventory; inventory.RemoveAllDMarketItems(); foreach (var item in response.Items) { GameItemType itemType = DMarketConverter.GetItemType(item.classId); long worldId = DMarketConverter.GetWorldId(item.assetId); PlayerItemInfo dmarketItem = new PlayerItemInfo(itemType, worldId, true); inventory.AddItem(dmarketItem); } Storage.Change(playerInfo); SendDmarketDataUpdateAnswer(connectionId); }, error => { if (error.ErrorCode == ErrorCode.DMarketTokenExpired) { RefreshMarketToken(connectionId, () => OnLoadDMarketDataMsg(message), errorParam => SendLoadDMarketLoadDataError(connectionId, errorParam)); return; } SendLoadDMarketLoadDataError(connectionId, error.ErrorCode); }); }
//Gets all the items that player completed public static void GetAllCharacterItems() { var request = new GetCharacterInventoryRequest() { CharacterId = PlayFabDataStore.characterId }; PlayFabClientAPI.GetCharacterInventory(request, (result) => { foreach (var item in result.Inventory) { if (item.ItemClass == "Item") { List<PlayerItemInfo> itemInfoList = new List<PlayerItemInfo>(); if (item.CustomData == null) { PlayerItemInfo itemInfo = new PlayerItemInfo(item.ItemId, item.ItemInstanceId, "0"); PlayFabDataStore.playerInventory.Add(item.ItemId); if(PlayFabDataStore.playerInventoryInfo.ContainsKey(item.ItemId)) { PlayFabDataStore.playerInventoryInfo[item.ItemId].Add(itemInfo); } else { PlayFabDataStore.playerInventoryInfo.Add(item.ItemId, itemInfoList); PlayFabDataStore.playerInventoryInfo[item.ItemId].Add(itemInfo); } } else { PlayerItemInfo itemInfo = new PlayerItemInfo(item.ItemId, item.ItemInstanceId, item.CustomData["IsEquipped"].ToString()); if (PlayFabDataStore.playerInventoryInfo.ContainsKey(item.ItemId)) { PlayFabDataStore.playerInventoryInfo[item.ItemId].Add(itemInfo); } else { PlayFabDataStore.playerInventoryInfo.Add(item.ItemId, itemInfoList); PlayFabDataStore.playerInventoryInfo[item.ItemId].Add(itemInfo); } if (item.CustomData["IsEquipped"] == "1") { Debug.Log("Equipped item added to the equipped dictionary"); PlayFabDataStore.playerEquippedItems.Add(PlayFabDataStore.catalogItems[item.ItemId].itemType, itemInfo); } else { PlayFabDataStore.playerInventory.Add(item.ItemId); } } } } Debug.Log("Character Items are retrieved"); }, (error) => { Debug.Log("Character Items can't retrieved!"); Debug.Log(error.ErrorMessage); Debug.Log(error.ErrorDetails); }); }
//Grant character the items in the array public static void GrantItemsToCharacter(string[] items, string customDataTitle, string itemClass) { var request = new RunCloudScriptRequest() { ActionId = "grantItemsToCharacter", Params = new { playFabId = PlayFabDataStore.playFabId, characterId = PlayFabDataStore.characterId, items = items } }; PlayFabClientAPI.RunCloudScript(request, (result) => { string[] splitResult = result.ResultsEncoded.Split('"'); //19th element is the itemInstanceId //Debug.Log("Split Result " + splitResult[59]); // 63th element is the itemId of the item granted from the drop table //Debug.Log("Split Result " + splitResult[63]); // 63th element is the itemInstanceId of the item granted from the drop table //Debug.Log("Split Result " + splitResult[67]); // 67st element is the item class if (itemClass == "Quest") { foreach (var quest in items) { if (PlayFabDataStore.catalogQuests[quest].currencies != null) { foreach (var currency in PlayFabDataStore.catalogQuests[quest].currencies) { AddUserCurrency(int.Parse(currency.Value.ToString())); } } } if (splitResult[67] == "Skill" || splitResult[67] == "Modifier") { if (!PlayFabDataStore.playerAllRunes.ContainsKey(splitResult[59])) { Debug.Log("Quest 1"); PlayFabDataStore.playerAllRunes.Add(splitResult[59], new PlayerRune(splitResult[59], splitResult[63], splitResult[67], PlayFabDataStore.catalogRunes[splitResult[59]].displayName, "0")); Debug.Log("Quest 2"); SetCustomDataOnItem("Active", "0", splitResult[63]); Debug.Log("Quest 3"); RuneWindow.SortAllRunes(); Debug.Log("Quest 4"); } } else if(splitResult[67] == "Item") { List<PlayerItemInfo> itemInfoList = new List<PlayerItemInfo>(); SetCustomDataOnItem("IsEquipped", "0", splitResult[63]); PlayFabDataStore.playerInventory.Add(splitResult[59]); PlayerItemInfo itemInfo = new PlayerItemInfo(splitResult[59], splitResult[63], "0"); if (PlayFabDataStore.playerInventoryInfo.ContainsKey(splitResult[59])) { PlayFabDataStore.playerInventoryInfo[splitResult[59]].Add(itemInfo); } else { PlayFabDataStore.playerInventoryInfo.Add(splitResult[59], itemInfoList); PlayFabDataStore.playerInventoryInfo[splitResult[59]].Add(itemInfo); } } } if (itemClass == "Skill" || itemClass == "Modifier") { SetCustomDataOnItem(customDataTitle, "0", splitResult[19]); foreach (var item in items) { if (!PlayFabDataStore.playerAllRunes.ContainsKey(item)) { PlayFabDataStore.playerAllRunes.Add(item, new PlayerRune(item, splitResult[19], itemClass, PlayFabDataStore.catalogRunes[item].displayName, "0")); } } RuneWindow.SortAllRunes(); } if (itemClass == "Item") { List<PlayerItemInfo> itemInfoList = new List<PlayerItemInfo>(); SetCustomDataOnItem(customDataTitle, "0", splitResult[19]); Debug.Log("Item 1"); foreach (var item in items) { Debug.Log("Item 2"); Debug.Log("Item " + item); PlayFabDataStore.playerInventory.Add(item); PlayerItemInfo itemInfo = new PlayerItemInfo(item, splitResult[19], "0"); Debug.Log("Item 3"); if (PlayFabDataStore.playerInventoryInfo.ContainsKey(item)) { PlayFabDataStore.playerInventoryInfo[item].Add(itemInfo); } else { PlayFabDataStore.playerInventoryInfo.Add(item, itemInfoList); PlayFabDataStore.playerInventoryInfo[item].Add(itemInfo); } Debug.Log("Item 4"); foreach (var slot in UIItemSlot_Assign.inventorySlots) { if (slot.assignItem == PlayFabDataStore.playerInventory.Count) { slot.SetItemToSlotInstant(); } } } } }, (error) => { Debug.Log("Item not Granted!"); Debug.Log(error.ErrorMessage); Debug.Log(error.ErrorDetails); }); }
private void UpdateModel(PlayerItemInfo itemInfo, InventoryItemModel itemModel) { itemModel.IsInMarket = itemInfo.IsInMarket; itemModel.IsEquipped = Model.IsEquipped(itemInfo.WorldId); itemModel.SetChanges(); }