public void Move(Board board, string position) { var move = new ChessDotNet.Move(board.SelectedCell.Position, position, board.Side, 'Q'); foreach (var item in board.Cells) { item.ValidCell = "Hidden"; } if (board.ChessLogic.IsValidMove(move)) { var moveType = board.ChessLogic.MakeMove(move, true); board.UpdateSourceIfPromotion(moveType, position, board.Side); board.SelectedCell.Source = null; board.State = new PieceDroped(); board.UpdateSourceIfEnPassant(moveType, position, board.Side); board.UpdateSourceIfCastling(moveType, position); TcpChessClient.getInstance().Move(move.OriginalPosition.ToString(), move.NewPosition.ToString()); } else { board.State = new PieceDroped(); board.State.Move(board, position); } }
private void Disconnect() { bool isWhitePlayer = WhitePlayerName == TcpChessClient.getInstance().Username ? true : false; if (State == "Playing") { if (isWhitePlayer) { TcpChessClient.getInstance().Rating = TcpChessClient.getInstance().Rating + WhitePlayerRatingForLose.Value; } else { TcpChessClient.getInstance().Rating = TcpChessClient.getInstance().Rating + BlackPlayerRatingForLose.Value; } } else { if (isWhitePlayer) { TcpChessClient.getInstance().Rating = WhitePlayerRating.Value; } else { TcpChessClient.getInstance().Rating = BlackPlayerRating.Value; } } TcpChessClient.getInstance().DisconnectFromTheGame(); _manager.RequestNavigate("MainRegion", "FindGame"); }
public MenuViewModel(IRegionManager manager) { _manager = manager; GoToFindGameCommand = new DelegateCommand(() => { TcpChessClient.getInstance().GetGames(); _manager.RequestNavigate("MainRegion", "FindGame"); }); GoToProfileCommand = new DelegateCommand(() => { var parameters = new NavigationParameters(); parameters.Add("Rating", TcpChessClient.getInstance().Rating); _manager.RequestNavigate("LeftRegion", "Profile", parameters); }); GoToSignupCommand = new DelegateCommand(() => _manager.RequestNavigate("LeftRegion", "Signup")); GoToLoginCommand = new DelegateCommand(() => _manager.RequestNavigate("LeftRegion", "Login")); ExitCommand = new DelegateCommand(SetNotAuthentificatedState); TcpChessClient.getInstance().Authentificated += () => { SetAuthentificatedState(); _manager.RequestNavigate("LeftRegion", "Menu"); }; SetNotAuthentificatedState(); }
private void CreateNewGame() { TcpChessClient.getInstance().CreateNewGame( GameName = string.IsNullOrWhiteSpace(GameName) ? "Unnamed" : GameName, WhiteSide == true ? ChessDotNet.Player.White : ChessDotNet.Player.Black, Password); ClearFields(); }
private void SendMessage() { if (!string.IsNullOrWhiteSpace(Message)) { TcpChessClient.getInstance().SendMessage(Message); string newMessage = "Вы : " + Message + "\n"; Messages += newMessage; Message = null; } }
public ChessBoardViewModel(IEventAggregator ea) { _ea = ea; _ea.GetEvent <GameDescriptionSentEvent>().Subscribe(InitializeBoard); TcpChessClient.getInstance().PlayerMoved += (origPos, newPos) => { Board.EnemyMoved(origPos, newPos); }; TcpChessClient.getInstance().GameStateChanged += (gameDesc) => { _state = gameDesc.StateDerscription; }; }
public DescriptionViewModel(IEventAggregator ea, IRegionManager manager) { _manager = manager; _ea = ea; DisconnectCommand = new DelegateCommand(Disconnect); _ea.GetEvent <GameDescriptionSentEvent>().Subscribe(InitializeGameDescription); TcpChessClient.getInstance().GameStateChanged += (gameDesc) => { InitializeGameDescription(new GameDesc(gameDesc)); }; }
public ChatViewModel(IEventAggregator ea) { _ea = ea; SendMessageCommand = new DelegateCommand(SendMessage); _ea.GetEvent <GameDescriptionSentEvent>().Subscribe((desc) => { Message = null; Messages = null; }); TcpChessClient.getInstance().MessageRecieved += (username, message) => { string newMessage = username + " : " + message + "\n"; Messages += newMessage; }; }
public ProfileViewModel(IRegionManager manager) { _manager = manager; Username = TcpChessClient.getInstance().Username; TcpChessClient.getInstance().UsernameChanged += () => Username = TcpChessClient.getInstance().Username; BackToMenuCommand = new DelegateCommand(() => { ClearFields(); _manager.RequestNavigate("LeftRegion", "Menu"); }); ChangeUsernameCommand = new DelegateCommand(ChangeUsername); }
private void InitializeBoard(GameDesc desc) { _state = desc.State; ChessDotNet.Player side = TcpChessClient.getInstance().Username == desc.WhiteUsername ? ChessDotNet.Player.White : ChessDotNet.Player.Black; Board = new Board(side); Cells = Board.Cells; HorizontalIndexes = Board.HorizontalIndexes; VerticalIndexes = Board.VerticalIndexes; MoveCommand = new DelegateCommand <string>((move) => { if (_state == "Playing") { Board.MakeMove(move); } }); }
private void ChangeUsername() { if (!string.IsNullOrWhiteSpace(NewUsername) && !string.IsNullOrWhiteSpace(Password)) { string usernamePattern = "^([А-ЯЁа-яё0-9a-zA-Z_]{4,23})$"; string passwordPattern = "^([А-ЯЁа-яё0-9a-zA-Z_!*#&?%^]{4,23})$"; if (Regex.IsMatch(NewUsername, usernamePattern) && Regex.IsMatch(Password, passwordPattern)) { TcpChessClient.getInstance().ChangeUsername(NewUsername, Password); ClearFields(); } else { string message = "Данные должны содержать от 4 до 23 символов, не содержать пробелов и запрещенных символов"; TcpChessClient.getInstance().ShowInfo(message); } } }
public FindGameViewModel(IRegionManager manager, IEventAggregator ea) { _ea = ea; _manager = manager; FilteredGames = new BindingList <GameDesc>(); _games = new List <GameDesc>(); _ea.GetEvent <PasswordSentEvent>().Subscribe((password) => { ConnectToTheGame(IdLockedGame, password); }); BackToMainMenuCommand = new DelegateCommand(() => { SearchField = ""; _manager.RequestNavigate("MainRegion", "MainMenu"); }); GoToCreateGameCommand = new DelegateCommand(() => { SearchField = ""; _manager.RequestNavigate("MainRegion", "CreateGame"); }); UpdateCommand = new DelegateCommand(() => { SearchField = ""; TcpChessClient.getInstance().GetGames(); }); ConnectCommand = new DelegateCommand(Connect); TcpChessClient.getInstance().GamesRecieved += (games) => { var newGames = new List <GameDesc>(); foreach (var game in games) { newGames.Add(new GameDesc(game)); } _games = new List <GameDesc>(newGames); FilteredGames = new BindingList <GameDesc>(_games); }; }
public CreateGameViewModel(IRegionManager manager) { _manager = manager; BackToFindGameCommand = new DelegateCommand(() => { ClearFields(); _manager.RequestNavigate("MainRegion", "FindGame"); }); CreateNewGameCommand = new DelegateCommand(CreateNewGame); TcpChessClient.getInstance().ConnectedToTheGame += (gameDescription) => { var parameters = new NavigationParameters(); parameters.Add("CurrentGame", new GameDesc(gameDescription)); _manager.RequestNavigate("MainRegion", "Game", parameters); }; }
public MainWindowViewModel(IEventAggregator ea) { _ea = ea; PasswordPopupVisibility = "Hidden"; CallbackPopupVisibility = "Hidden"; LoadingPopupVisibility = "Hidden"; ClosePopupCommand = new DelegateCommand(() => { CallbackPopupVisibility = "Hidden"; PasswordPopupVisibility = "Hidden"; }); SendPasswordCommand = new DelegateCommand(() => { if (!string.IsNullOrWhiteSpace(Password)) { PasswordPopupVisibility = "Hidden"; _ea.GetEvent <PasswordSentEvent>().Publish(Password); } }); _ea.GetEvent <GameLockedEvent>().Subscribe(() => { Password = ""; PasswordPopupVisibility = "Visible"; }); TcpChessClient.getInstance().CallbackInfoRecieved += (result) => { CallbackPopupMessage = result.Message; CallbackPopupVisibility = "Visible"; }; TcpChessClient.getInstance().CommandExecutionStarted += () => LoadingPopupVisibility = "Visible"; TcpChessClient.getInstance().CommandExecutionStoped += () => LoadingPopupVisibility = "Hidden"; }
private void ConnectToTheGame(int gameId, string gamePassword) { SearchField = ""; TcpChessClient.getInstance().ConnectToTheGame(gameId, gamePassword); }