Пример #1
0
        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);
            }));
        }
Пример #2
0
        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);
        }
Пример #3
0
 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);
     }));
 }
Пример #4
0
        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);
        }
Пример #5
0
 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);
     }));
 }
Пример #6
0
        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);
            }));
        }
Пример #7
0
        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;
            }
        }
Пример #8
0
        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());
        }
Пример #9
0
        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);
        }