private static CellDto ConvertVMToDto(CellVM cell ) { return(new CellDto ( cell.Id, cell.Row, cell.Column, cell.CellType //cell.Name )); }
public void NewGame(ObservableCollection <ObservableCollection <CellVM> > boardVM) { ObservableCollection <ObservableCollection <Cell> > board; board = Helper.InitBoard(); ObservableCollection <ObservableCollection <CellVM> > result = new ObservableCollection <ObservableCollection <CellVM> >(); for (int i = 0; i < board.Count; i++) { ObservableCollection <CellVM> line = new ObservableCollection <CellVM>(); for (int j = 0; j < board[i].Count; j++) { Cell cell = board[i][j]; CellVM cellVM = new CellVM(cell.X, cell.Y, cell.Color, cell.Piece, new GameBusinessLogic(board)); line.Add(cellVM); } result.Add(line); } boardVM = result; }
private void Model_ChangedStateEvent(object sender, ChangedStateHandlerArgs e) { switch (e.StateName) { case NamesState.RowsCount: RowsCount = (int)e.NewValue; break; case NamesState.ColumnsCount: ColumnsCount = (int)e.NewValue; break; case NamesState.LineLength: LineLength = (int)e.NewValue; break; case NamesState.GameStatus: //int userId = (int)e.NewValue[1]; if (e.NewValue is GameStatuses status) { Statuse = status; } else { object[] args = (object[])e.NewValue; int userId = (int)args[1]; status = (GameStatuses)args[0]; if (status == GameStatuses.Win) { if (FirstGamer.Id == userId) { Winner = FirstGamer; Loser = SecondGamer; } else if (SecondGamer.Id == userId) { Winner = SecondGamer; Loser = FirstGamer; } else { throw new ArgumentException("Не существующий UserId, когда один из игроков сдался/выиграл"); } } else { throw new ArgumentException("Не допустимый статус игры"); } Statuse = status; } break; case NamesState.Gamers: var users = ((IEnumerable <UserDto>)e.NewValue).OrderBy(us => us.Turn); var first = users.First(); var second = users.Skip(1).First(); CopyPropertiesToVM(first, FirstGamer); CopyPropertiesToVM(second, SecondGamer); FirstGamer.Image = PiecesCollection.ElementAt(FirstGamer.ImageIndex); SecondGamer.Image = PiecesCollection.ElementAt(SecondGamer.ImageIndex); break; case NamesState.Types: CellTypes.Clear(); ((ISet <CellTypeDto>)e.NewValue).ToList().ForEach(c => CellTypes.Add(c)); FirstGamer.CellType = CellTypes[1]; SecondGamer.CellType = CellTypes[2]; break; case NamesState.CurrentGamerId: break; case NamesState.CurrentGamerIndex: CurrentUserIndex = (int)e.NewValue; break; case NamesState.CurrentGamer: var user = (UserDto)e.NewValue; if (FirstGamer.UserName == user.UserName) { CurrentUserIndex = 0; } else if (SecondGamer.UserName == user.UserName) { CurrentUserIndex = 1; } else { CurrentUserIndex = -1; } break; case NamesState.IsRevenge: IsRevenge = (bool)e.NewValue; break; case NamesState.CellType: CellDto cell = (CellDto)e.NewValue; cellsMatrix[cell.Row, cell.Column].CellType = cell.CellType; break; case NamesState.ChangeCellsCount: int[] cellsParams = (int[])e.NewValue; RowsCount = cellsParams[0]; ColumnsCount = cellsParams[1]; Cells.Clear(); cellsMatrix = new CellVM[RowsCount, ColumnsCount]; for (int row = 0; row < RowsCount; row++) { for (int col = 0; col < ColumnsCount; col++) { Cells.Add(cellsMatrix[row, col] = new CellVM() { Row = row, Column = col }); } } break; case NamesState.ChangeGamerIsTurn: UserDto newUser = (UserDto)e.NewValue; //UserDto oldUser = (UserDto)e.OldValue; //UserVM newUserVM = FirstGamer, oldUserVM = SecondGamer; if (FirstGamer.UserName == newUser.UserName) { FirstGamer.IsTurn = newUser.IsTurn; } else if (SecondGamer.UserName == newUser.UserName) { SecondGamer.IsTurn = newUser.IsTurn; } else { throw new ArgumentException($"Не существующее имя очередного игрока {newUser.UserName}", nameof(e)); } break; default: break; } }
public SelectTileCommand(CellVM cell) { this.cellVM = cell; }