public ClientInitializationView(GameStartMode startMode)
        {
            InitializeComponent();

              this.startMode = startMode;
              pnlDeck.Visible = startMode == GameStartMode.NewGame;

              btnBrowseDecks.Click += new EventHandler(btnBrowseDecks_Click);
              btnOk.Click += new EventHandler(btnOk_Click);
              btnCancel.Click += new EventHandler(btnCancel_Click);

              Localize();
        }
Ejemplo n.º 2
0
        public static void Start(GameStartMode mode)
        {
            switch (mode)
            {
            case GameStartMode.SinglePlayer:
                MSGBox.ShowMSGBox("New singleplayer game", "Size:", MSGBoxType.SizeInput, new EventHandler <string>(delegate(object s, string inp)
                {
                    int input = int.Parse(inp);
                    if (input > 5)
                    {
                        GameRenderer.Panel.CreateGraphics().FillRectangle(new SolidBrush(Color.Black), new Rectangle(new Point(), GameRenderer.Panel.Size));
                        //int xy = GameRenderer.Panel.Size.Width / input;
                        //GameSize = new Point(xy, xy);
                        if (GameRenderer.Panel.Size.Width / input < 3 || GameRenderer.Panel.Size.Height / input < 3)
                        {
                            Game.Paused = true;
                            return;
                        }
                        GameSize = new Point(GameRenderer.Panel.Size.Width / input, GameRenderer.Panel.Size.Height / input);
                        Game.Reset();
                        Form1.TimerEnabled = true;
                    }
                    else
                    {
                        Game.Paused = true;
                    }
                }));
                break;

            case GameStartMode.MultiPlayer:
                if (Game.Player.Name == "Player")
                {
                    MSGBox.ShowMSGBox("Please change your username from default.", "", MSGBoxType.Text);
                    break;
                }
                MSGBox.ShowMSGBox("New multiplayer game", "Name:\nMax. players:", MSGBoxType.MultipleInput, new EventHandler <string>(delegate(object s, string input)
                {
                    string[] strs = input.Split('\n');
                    int num       = 0;
                    if (int.TryParse(strs[1], out num))
                    {
                        var match = new NetMatch {
                            Name = strs[0], MaxPlayers = num, OwnerIP = Network.GetIPs(), OwnerName = Player.Name
                        };
                        match.Players.Add(Game.Player);
                        Game.Reset();
                        Network.CreateGame(match);
                    }
                    else
                    {
                        Game.Paused = true;
                    }
                }));
                break;

            case GameStartMode.Connect:
                if (Game.Player.Name == "Player")
                {
                    MSGBox.ShowMSGBox("Please change your username from default.", "", MSGBoxType.Text);
                    break;
                }

                //string matches = Network.Matches.Combine<NetMatch, string>((match, combiner) => combiner += match.Name + "    " + match.Players.Count + "/" + match.MaxPlayers + "    " + match.OwnerName + "\n");
                string inputs = "IP:";
                MSGBox.ShowMSGBox("Connect to game", inputs, MSGBoxType.MultipleInput, new EventHandler <string>(delegate(object s, string input)
                {
                    IPAddress address;
                    if (IPAddress.TryParse(input.Replace("\n", ""), out address))
                    {
                        Game.Reset();
                        Network.Connect(new NetMatch {
                            OwnerIP = new IPAddress[] { address }
                        });
                        //Game.Reset(false); - On successfull connect event
                    }
                    else
                    {
                        Game.Paused = true;
                    }
                }));
                break;

            default:
                throw new ArgumentException();
            }
        }
 public IClientInitializationView CreateClientInitializationView(GameStartMode startMode)
 {
     return new ClientInitializationView(startMode);
 }
Ejemplo n.º 4
0
 private void btnExercise_ClickAnimationFinished(object sender)
 {
     GameMode = GameStartMode.exercise;
     SwitchScreen(screenGameSettings);
 }
Ejemplo n.º 5
0
 private void btnStartBattle_ClickAnimationFinished(object sender)
 {
     GameMode = GameStartMode.battle;
     SwitchScreen(screenGameSettings);
 }
Ejemplo n.º 6
0
        public void StartServerGame(GameStartMode startMode)
        {
            PlayerInfo thisPlayer = CreateLocalPlayerInfo();
              // ---------------------------------------------------------------
              // choose game parameters or pick a saved game and start to listen
              // ---------------------------------------------------------------
              ServerStartNewGameModel newGameData = null;
              ServerStartSavedGameModel savedGameData = null;
              ServerListener listener = new ServerListener(thisPlayer, servicesProvider, SettingsManager.Settings.ListenPort);
              try
              {
            bool proceed = false;
            switch(startMode)
            {
              case GameStartMode.NewGame:
            {
              var initView = viewFactory.CreateServerStartNewGameView();
              var initModel = new ServerStartNewGameModel();
              var initController = new ServerStartNewGameController(initModel, initView, listener, servicesProvider);
              initController.DeckRoomRequest += new Func<DeckItem>(initController_DeckRoomRequest);
              if(initView.ShowModal() == ViewResult.Ok)
              {
                proceed = true;
                initModel.Deck.MainCards.Shuffle();
                newGameData = initModel;
              }
            }
            break;
              case GameStartMode.SavedGame:
            {
              var initView = viewFactory.CreateServerStartSavedGameView();
              var initModel = new ServerStartSavedGameModel();
              var initController = new ServerStartSavedGameController(initModel, initView, listener, servicesProvider);
              if(initView.ShowModal() == ViewResult.Ok)
              {
                proceed = true;
                savedGameData = initModel;
              }
            }
            break;
            }
            if(proceed)
            {
              // ---------------------------------------------------------------------------------
              // open room, wait other players and chat (obtain clients channels and players list)
              // ---------------------------------------------------------------------------------
              var serverStarterModel = new ServerStarterModel(thisPlayer);
              var serverStarterView = viewFactory.CreateServerStarterView();

              proceed = false;
              using(NetCommandHandler<IGameStarterModel> commandHandler = new NetCommandHandler<IGameStarterModel>(serverStarterModel, thisPlayer.NickName))
              {
            var serverStarterController = new ServerStarterController(commandHandler, serverStarterModel, listener,
              serverStarterView, thisPlayer, servicesProvider, startMode, newGameData, savedGameData);
            listener.Console = serverStarterModel.Console;
            proceed = serverStarterView.ShowModal() == ViewResult.Ok;
              }
              if(proceed)
              {
            // ----------
            // start game
            // ----------
            listener.Console = null;
            listener.GameIsRunning = true;
            switch(startMode)
            {
              case GameStartMode.NewGame:
                {
                  var players = CreatePlayerAccounts(thisPlayer.NickName, serverStarterModel.Players.ToList());
                  for(int i = 0; i < listener.PlayerConnections.Count; i++)
                    players[i+1].Channel = listener.PlayerConnections[i].NetClient;
                  StartGame(players, null, GameType.Host);
                }
                break;
              case GameStartMode.SavedGame:
                {
                  var players = CreatePlayerAccounts(thisPlayer.NickName, serverStarterModel.SavedGame);
                  for(int i = 0; i < listener.PlayerConnections.Count; i++)
                    players[i+1].Channel = listener.PlayerConnections[i].NetClient;
                  StartGame(players, serverStarterModel.SavedGame, GameType.Host);
                }
                break;
            }
              }
            }
              }
              finally
              {
            if(listener.IsStarted)
              listener.Stop();
              }
        }
Ejemplo n.º 7
0
        public void StartClientGame(GameStartMode startMode)
        {
            PlayerInfo thisPlayer = CreateLocalPlayerInfo();

              // ----------------------------------------------------------
              // choose game parameters and connect (obtain server channel)
              // ----------------------------------------------------------
              ClientConnector connector = new ClientConnector(thisPlayer, servicesProvider);
              try
              {
            var initView = viewFactory.CreateClientInitializationView(startMode);
            var initModel = new ClientInitializationModel();
            var initController = new ClientInitializationController(initModel, initView, thisPlayer, connector, servicesProvider);
            initController.DeckRoomRequest += new Func<DeckItem>(initController_DeckRoomRequest);
            if(initView.ShowModal() == ViewResult.Ok)
            {
              // ------------------------------------------------------------
              // open room, wait other players and chat (obtain players list)
              // ------------------------------------------------------------
              var clientStarterModel = new ClientStarterModel(thisPlayer, initModel.Deck, servicesProvider);
              var clientStarterView = viewFactory.CreateClientStarterView();
              bool proceed = false;
              using(var commandHandler = new NetCommandHandler<IGameStarterModel>(clientStarterModel, thisPlayer.NickName))
              {
            commandHandler.AddChannel(initModel.ServerData.Channel, initModel.ServerData.Player.NickName);
            var clientStarterController = new ClientStarterController(commandHandler, clientStarterModel, connector, clientStarterView, servicesProvider, initModel);
            proceed = clientStarterView.ShowModal() == ViewResult.Ok;
              }
              if(proceed)
              {
            // ----------
            // start game
            // ----------
            switch(startMode)
            {
              case GameStartMode.NewGame:
                {
                  var players = CreatePlayerAccounts(thisPlayer.NickName, clientStarterModel.Players.ToList());
                  players.Single(e => e.Info.NickName == initModel.ServerData.Player.NickName).Channel = initModel.ServerData.Channel;
                  StartGame(players, null, GameType.Client);
                }
                break;
              case GameStartMode.SavedGame:
                {
                  var players = CreatePlayerAccounts(thisPlayer.NickName, clientStarterModel.SavedGame);
                  players.Single(e => e.Info.NickName == initModel.ServerData.Player.NickName).Channel = initModel.ServerData.Channel;
                  StartGame(players, clientStarterModel.SavedGame, GameType.Client);
                }
                break;
            }
              }
            }
              }
              finally
              {
            if(connector.IsConnected)
              connector.Disconnect();
              }
        }
Ejemplo n.º 8
0
 public void Start(bool passwordRequired, DeckItem deck, GameStartMode startMode)
 {
     this.startMode = startMode;
       this.passwordRequired = passwordRequired;
       this.deck = deck;
       netMessageService.ClientConnected += new Action<object, ServiceNetClient>(netMessageService_ClientConnected);
       netMessageService.Start();
 }
Ejemplo n.º 9
0
 public bool Connect(IPAddress address, int port, string password, GameStartMode startMode, DeckItem deck, 
     out string errorMessage, out ServerData opponentData)
 {
     bool confirmed = false;
       errorMessage = string.Empty;
       opponentData = null;
       ServiceNetClient client = new ServiceNetClient(address, port);
       client.Disconnected += new EventHandler(client_Disconnected);
       connectionMessagesHandler = new ClientConnectionMessagesHandler(client);
       try
       {
     client.Subscribe();
     Version clientVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
     HandshakeRequest handshake = new HandshakeRequest()
     {
       PlayerInfo = playerInfo,
       Deck = new DeckDataContract(deck),
       StartMode = startMode,
       GameDatabaseCRC = servicesProvider.GameDatabaseCrc,
       CardDatabaseCRC = servicesProvider.CardDatabaseCrc,
       ClientVersion = clientVersion.ToString(),
       Password = password,
     };
     Thread.Sleep(100);
     client.SendMessage(handshake);
     if(!WaitForHandshakeResponse())
       throw new Exception("Opponent handshake not received!");
     if(connectionMessagesHandler.Handshake.ConnectionResult != ConnectionResult.Accepted)
     {
       switch(connectionMessagesHandler.Handshake.ConnectionResult)
       {
     case ConnectionResult.VersionMismatch:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_VERSIONMISMATCH");
       break;
     case ConnectionResult.GameIsRunning:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_GAMEISRUNNING");
       break;
     case ConnectionResult.InvalidStartMode:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_INVALIDSTARTMODE");
       break;
     case ConnectionResult.NicknameDuplicated:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_NICKNAMEDUPLICATED");
       break;
     case ConnectionResult.GameDatabaseMismatch:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_GAMEDATAMISMATCH");
       break;
     case ConnectionResult.CardDatabaseMismatch:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_CARDDATAMISMATCH");
       break;
     case ConnectionResult.PasswordRequired:
       errorMessage = servicesProvider.SystemStringsService.GetString("NEW_SERVER_GAME_DIALOG", "MSG_CONNECTIONREFUSED_PASSWORDREQUIRED");
       break;
       }
     }
     else
     {
       Thread.Sleep(100);
       client.SendMessage(new ConfirmMessage());
       opponentData = new ServerData()
       {
     Channel = client,
     Player = connectionMessagesHandler.Handshake.PlayerInfo,
     Deck = new DeckItem(connectionMessagesHandler.Handshake.Deck)
       };
       confirmed = true;
     }
       }
       catch(Exception ex)
       {
     errorMessage = ex.Message;
       }
       finally
       {
     connectionMessagesHandler.Dispose();
       }
       return confirmed;
 }