示例#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);
        }
        private bool IsCanMakeDMarketOperation(AppChangingItemsMessage message)
        {
            if (string.IsNullOrEmpty(Model.GetPlayerMarketAccessToken(message.ConnectionId)))
            {
                var response = new ItemsChangingResponse(ErrorCode.EmptyDMarketAccessToken);
                var answer   = new AppChangingItemsAnswerMessage(response)
                {
                    Error = NetworkMessageErrorType.DMarketError
                };
                SendMessageToClient(answer, message.ConnectionId);
                return(false);
            }

            if (message.ActionType == ItemActionType.ToMarket)
            {
                for (var i = 0; i < message.ItemsCount; i++)
                {
                    var worldId = message.GetWorldId(i);
                    var item    = GetInventory(message.ConnectionId).GetItem(worldId);
                    if (item == null)
                    {
                        var error = new Error
                        {
                            ErrorCode    = ErrorCode.AssetNotFound,
                            ErrorMessage = string.Format("Cannot find item with id {0} for player {1}. Need reload game",
                                                         worldId, Model.GetUserNameByConnectionId(message.ConnectionId))
                        };
                        OnItemOperationError(message, error);
                        return(false);
                    }
                }
            }
            return(true);
        }
        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);
        }
示例#4
0
        private string GetErrorText(ItemsChangingResponse messageResponse)
        {
            if (messageResponse.IsSuccess)
            {
                return(string.Empty);
            }

            if (messageResponse.MarketError != ErrorCode.None)
            {
                return(Controller.Widget.GetErrorMessage(messageResponse.MarketError));
            }

            return(messageResponse.ErrorText);
        }
示例#5
0
        protected virtual void OnItemMoveCallback(ItemsChangingResponse parameters)
        {
            View.WaitingForm.Hide();
            if (parameters.IsSuccess)
            {
                return;
            }

            var error = string.IsNullOrEmpty(parameters.ErrorText)
                ? Widget.GetErrorMessage(parameters.MarketError)
                : parameters.ErrorText;

            MessageBox.Show("Error", error);
        }
示例#6
0
 protected virtual void OnServerCallback(ItemsChangingResponse parameters)
 {
     View.WaitingForm.Hide();
     if (parameters.IsSuccess)
     {
         //TODO change to notification
         DevLogger.Warning("Add notification here");
         //FormView.ShowSuccesOperation();
     }
     else
     {
         MessageBox.Show("Error", parameters.ErrorText);
     }
 }
示例#7
0
 public override void Deserialize(NetworkReader reader)
 {
     base.Deserialize(reader);
     Response = JsonConvert.DeserializeObject <ItemsChangingResponse>(reader.ReadString());
 }
示例#8
0
 public AppChangingItemsAnswerMessage(ItemsChangingResponse response)
 {
     Response = response;
 }