示例#1
0
        private void createServer()
        {
            if (serverThread == null)
            {
                CreateServerThreadArguments args = new CreateServerThreadArguments();

                CanCreate = false;

                BaseEngine    server       = null;
                WcfEngineHost binaryHelper = new WcfEngineHost();
                waitHandle = new ManualResetEvent(false);
                switch (SelectedGame)
                {
                case ServerGame.FiveCardDraw: server = new FiveGameDrawServer(binaryHelper); break;

                case ServerGame.TexasHoldem: server = new TexasHoldemServer(binaryHelper); break;

                case ServerGame.SevenCardStud: server = new SevenCardStudServer(binaryHelper); break;

                case ServerGame.OmahaHoldem: server = new OmahaHoldemServer(binaryHelper); break;
                }
                binaryHelper.Initialize(server, SelectedGame, Port, waitHandle);
                if (multiplayer.IsChecked.Value)
                {
                    server.GameStarted += new DataEventHandler <IEnumerable <Player> >(server_GameStarted);
                }
                playerLimit = server.MaximalPlayersLimit;

                args.game = server;

                NewServerConfiguration config = ConfigurationAccess.Current.NewServerConfiguration;
                config.TournamentMode    = server.TournamentMode = TournamentMode;
                config.AcceptsNewPlayers = server.AcceptPlayersAfterGameStart = AcceptsNewPlayers;
                config.Ante            = server.Ante = Ante;
                config.SmallRaise      = server.SmallRaise = SmallRaise;
                config.RaiseLimit      = server.RaiseLimit = RaiseLimit;
                config.StartingMoney   = server.StartingMoney = StartingMoney;
                config.PlayerTimeLimit = server.ActionTimeout = TimeLimit;
                config.AutoRaiseOnHand = server.AutoIncreaseOnHandDivider = AutoRaiseOnHand;
                config.SelectedGame    = args.gameMode = SelectedGame;
                config.BotCount        = args.botCount = BotCount;
                config.Port            = args.port = Port;

                ServerAddress = "localhost";
                ServerPort    = Port;

                waitHandle.Reset();

                serverThread = new Thread(new ParameterizedThreadStart(StartServer));
                serverThread.Start(args);
                serverThread.Name         = "Game Server Thread";
                serverThread.IsBackground = true;

                if (multiplayer.IsChecked.Value)
                {
                    binaryHelper.PlayerConnected += new DataEventHandler <Player>(client_NewUserConnected);
                }
            }
        }
示例#2
0
 private void StartServer(object threadArguments)
 {
     try
     {
         CreateServerThreadArguments args = (CreateServerThreadArguments)threadArguments;
         BaseEngine server = args.game;
         server.Initialize();
         Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(serverInitialized));
         if (args.botCount > 0)
         {
             spawBots(args.botCount, args.gameMode, args.port);
         }
         Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(serverIsUp));
         server.Run();
     }
     catch
     {
     }
     finally
     {
         serverThread = null;
     }
 }