private void HandleClick(TcpRequest request) { var clickCardButtonRequest = JsonConvert.DeserializeObject <ClickCardButtonRequest>(request.Body); _logger.LogMessage($"Handling {clickCardButtonRequest.Click} request"); var cardButton = GetCardButton(clickCardButtonRequest.Deck, clickCardButtonRequest.FromCardSet, clickCardButtonRequest.Index); if (cardButton == null) { SendOkResponse(request.Socket); return; } Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { if (clickCardButtonRequest.Click == ButtonClick.Left) { cardButton.LeftClick(); } else { cardButton.RightClick(); } SendOkResponse(request.Socket); })); }
private void HandleGetButtonImage(TcpRequest request) { _logger.LogMessage("Handling button image request"); var buttonImageRequest = JsonConvert.DeserializeObject <ButtonImageRequest>(request.Body); var cardButton = GetCardButton(buttonImageRequest.Deck, buttonImageRequest.FromCardSet, buttonImageRequest.Index); SendButtonImageResponse(request.Socket, cardButton as ShowCardButton); }
private void HandleToggleActAgendaBar(TcpRequest request) { _logger.LogMessage("Handling toggle act/agenda bar request"); Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { _appData.Game.ScenarioCards.ToggleCardSetVisibility(); SendOkResponse(request.Socket); })); }
private void HandleGetCardInfo(TcpRequest request) { _logger.LogMessage("Handling card info request"); var getCardInfoRequest = JsonConvert.DeserializeObject <GetCardInfoRequest>(request.Body); var cardButton = GetCardButton(getCardInfoRequest.Deck, getCardInfoRequest.FromCardSet, getCardInfoRequest.Index); SendCardInfoResponse(request.Socket, cardButton); }
private void HandleClearAll(TcpRequest request) { _logger.LogMessage("Handling clear all request"); Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { _appData.Game.ClearAllCards(); SendOkResponse(request.Socket); })); }
private void HandleShowDeckList(TcpRequest request) { _logger.LogMessage("Handling show deck list request"); var showDeckListRequest = JsonConvert.DeserializeObject <ShowDeckListRequest>(request.Body); var selectableCards = GetDeck(showDeckListRequest.Deck); Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { selectableCards.ShowDeckList(); SendOkResponse(request.Socket); })); }
public void HandleRequest(TcpRequest request) { _logger.LogMessage($"Handling Request: {request.RequestType.AsString()}"); switch (request.RequestType) { case AoTcpRequest.ClearAll: HandleClearAll(request); break; case AoTcpRequest.ToggleActAgendaBarRequest: HandleToggleActAgendaBar(request); break; case AoTcpRequest.GetCardInfo: HandleGetCardInfo(request); break; case AoTcpRequest.GetButtonImage: HandleGetButtonImage(request); break; case AoTcpRequest.ClickCardButton: HandleClick(request); break; case AoTcpRequest.RegisterForUpdates: HandleRegisterForUpdates(request); break; case AoTcpRequest.ShowDeckList: HandleShowDeckList(request); break; case AoTcpRequest.ChangeStatValue: HandleChangeStatValue(request); break; } }
private void HandleChangeStatValue(TcpRequest request) { var changeStatValueRequest = JsonConvert.DeserializeObject <ChangeStatValueRequest>(request.Body); _logger.LogMessage($"Handling Change Stat Value request"); var player = GetPlayer(changeStatValueRequest.Deck); var stat = GetStat(player, changeStatValueRequest.StatType); if (changeStatValueRequest.Increase) { stat.Increase.Execute(null); } else { stat.Decrease.Execute(null); } var response = new ChangeStatValueResponse { Value = stat.Value }; Send(request.Socket, response.ToString()); }
private void HandleRegisterForUpdates(TcpRequest request) { _logger.LogMessage("Handling register for update request"); var registerForUpdatesRequest = JsonConvert.DeserializeObject <RegisterForUpdatesRequest>(request.Body); if (!_updatePorts.Contains(registerForUpdatesRequest.Port)) { _updatePorts.Add(registerForUpdatesRequest.Port); } lock (_registerLock) { if (!_alreadyRegisteredEvents) { var game = _appData.Game; game.LocationCards.CardSet.Buttons.CollectionChanged += (s, e) => { SendActAgendaBarStatus(game.LocationCards.CardSet.IsDisplayedOnOverlay); }; foreach (var player in game.Players) { player.Health.PropertyChanged += (s, e) => { SendStatInfo(player.Health, GetDeckType(player.SelectableCards), StatType.Health); }; player.Sanity.PropertyChanged += (s, e) => { SendStatInfo(player.Sanity, GetDeckType(player.SelectableCards), StatType.Sanity); }; player.Resources.PropertyChanged += (s, e) => { SendStatInfo(player.Resources, GetDeckType(player.SelectableCards), StatType.Resources); }; player.Clues.PropertyChanged += (s, e) => { SendStatInfo(player.Clues, GetDeckType(player.SelectableCards), StatType.Clues); }; player.PropertyChanged += (s, e) => { if (e.PropertyName == nameof(Player.ButtonImageAsBytes)) { SendInvestigatorImage(player); } }; } foreach (var selectableCards in game.AllSelectableCards) { selectableCards.ButtonChanged += (button) => { if (button is CardInSetButton cardInSetButton) { SendCardInSetInfoUpdate(cardInSetButton, selectableCards); return; } SendButtonInfoUpdate(button, selectableCards); }; selectableCards.CardSet.Buttons.CollectionChanged += (s, e) => { foreach (var button in selectableCards.CardSet.Buttons) { SendCardInSetInfoUpdate(button, selectableCards); } //if an item was removed, we need to send an update to clear the last item if (e.Action == NotifyCollectionChangedAction.Remove) { SendCardInSetInfoUpdate(null, selectableCards); } }; } SendAllStats(); SendAllInvestigatorImages(); _alreadyRegisteredEvents = true; } } SendOkResponse(request.Socket); }