public override State LoadGame(BoardData boardData) { const string fileName = "savedata.json"; string pathToLoadFrom = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + fileName; if (boardData.GetType().GetProperties().Any(property => property == null)) { throw new SaveDataCorruptedException("Save data in " + pathToLoadFrom + " + is corrupted."); } if (boardData.GridStones.Length != _size * _size || boardData.GridGroups.Length != _size * _size || boardData.ActivePlayer != State.White && boardData.ActivePlayer != State.Black) { throw new SaveDataCorruptedException("Save data in " + pathToLoadFrom + " + is corrupted."); } // Copy the values into this object _gridStones = boardData.GridStones; _gridGroups = boardData.GridGroups; _groups = boardData.Groups; _capWhite = boardData.CapWhite; _capBlack = boardData.CapBlack; _size = boardData.Size; _nextId = boardData.NextId; _borCor = boardData.BorCor; return(boardData.ActivePlayer); }