public void OfferSelected(User user, ReceivedMessage message) { var splitted = message.Text.Split(' '); if (splitted.Length < 2) { goto SomethingWrong; } var action = splitted[0]; var itemName = string.Join(" ", splitted.Skip(1)); var itemManger = RoomBase.GetAllItems(); var item = itemManger.Keys() .Select(id => itemManger.Get(id)) .SingleOrDefault(i => i != null && i.Name == itemName); if (item == null) { goto SomethingWrong; } var offers = Offers.Load(); if (!offers.TryGetValue(item.Identifier, out var offer)) { goto SomethingWrong; } var state = new BuySellState { SelectedItemId = item.Identifier }; switch (action) { case "Продать": { state.Selling = true; break; } case "Купить": { state.Selling = false; break; } default: goto SomethingWrong; } Room.GetRoomVariables(user).Set("state", StateContainer.Serialize(state)); Room.SwitchAction <AuctionRoom.ItemOffersAction>(user); Room.GetAction <AuctionRoom.ItemOffersAction>().Enter(user); return; SomethingWrong: Enter(user); }
private (List <Offer>, string) GetOffers(Offers offers, BuySellState state) { var item = RoomBase.GetAllItems().Get(state.SelectedItemId); if (item == null) { return(null, null); } if (!offers.TryGetValue(item.Identifier, out var itemOffer)) { return(null, item.Name); } return(state.Selling ? itemOffer.BuyOffers : itemOffer.SellOffers, item.Name); }