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); }
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); }
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); }
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); } }
public override void Deserialize(NetworkReader reader) { base.Deserialize(reader); Response = JsonConvert.DeserializeObject <ItemsChangingResponse>(reader.ReadString()); }
public AppChangingItemsAnswerMessage(ItemsChangingResponse response) { Response = response; }