Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #9
0
        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;
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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();
 }