Пример #1
0
        protected internal void LaunchGame()
        {
            if (!_clients.All(c => c.IsReady) || _clients.Count != 2)
            {
                return;
            }
            Console.WriteLine("All players are ready, let's start!");
            var launcher = new Launcher(_clients.Select(c => c.Id).ToList());

            launcher.ProvideRolesForPlayers();
            launcher.ProvideHandCardsForPlayers();
            foreach (var client in _clients)
            {
                var player      = launcher.Players.First(pl => pl.Id == client.Id);
                var gameMessage = new UpdateTableMessage();
                gameMessage.IsBroadcast = false;
                gameMessage.RoleCard    = player.Role;
                gameMessage.Hand        = player.Hand;
                gameMessage.IsMyTurn    = player.Role.Role == RoleType.Green;
                SendMessage(gameMessage, client.Id);

                var initializeTableMessage = new InitializeTableMessage();
                initializeTableMessage.GoldCards  = launcher.GoldCardsForGame;
                initializeTableMessage.StartCards = launcher.StartCards;
                initializeTableMessage.Players    = Table.Players;
                SendMessage(initializeTableMessage, client.Id);
            }

            MessageManager.Players.Enqueue(_clients.First(c => c.Id != launcher.Players.First(pl => pl.Role.Role == RoleType.Green).Id));
            MessageManager.Players.Enqueue(_clients.First(c => c.Id == launcher.Players.First(pl => pl.Role.Role == RoleType.Green).Id));


            MessageManager.AbstractPlayers = launcher.Players;
            MessageManager.HandCards       = launcher.ShuffledHandCards;
        }
Пример #2
0
        private void HandleInitializeTableMessage(InitializeTableMessage message)
        {
            Application.Current.Dispatcher.Invoke(delegate
            {
                foreach (var goldCard in message.GoldCards)
                {
                    Map[goldCard.Coordinates.Coordinate_Y][goldCard.Coordinates.Coordinate_X] = goldCard;
                }

                foreach (var startCard in message.StartCards)
                {
                    Map[startCard.Coordinates.Coordinate_Y][startCard.Coordinates.Coordinate_X] = startCard;
                }

                Players = message.Players;
            });
            OnPropertyChanged(nameof(Map));
            EnemyHand = new PlayerHandViewModel(false, Players.First(pl => pl.Id != CurrentPlayer.Id));
            OnPropertyChanged(nameof(EnemyHand));
        }