Beispiel #1
0
        /// <summary>
        /// Finds all available game info in the SGF game tree
        /// </summary>
        /// <param name="tree">Tree</param>
        /// <returns>Game info</returns>
        private GameInfo FindGameInfo(SgfGameTree tree)
        {
            var gameInfoSearcher = new SgfGameInfoSearcher(tree);
            var sgfGameInfo      = gameInfoSearcher.GetGameInfo();

            return(sgfGameInfo.ToGameInfo());
        }
Beispiel #2
0
        /// <summary>
        /// Creates a library item
        /// </summary>
        /// <param name="fileInfo">File info</param>
        /// <param name="sgfCollection">Sgf collection</param>
        /// <returns></returns>
        private LibraryItem CreateLibraryItem(FileInfo fileInfo, SgfCollection sgfCollection)
        {
            List <LibraryItemGame> games = new List <LibraryItemGame>(sgfCollection.Count());

            foreach (var tree in sgfCollection.GameTrees)
            {
                SgfGameInfoSearcher searcher = new SgfGameInfoSearcher(tree);
                var sgfGameInfo = searcher.GetGameInfo();
                var comment     = sgfGameInfo.GameComment?.Value <string>() ?? "";
                if (comment == "")
                {
                    //try to find a comment in first node
                    var firstNode = tree.Sequence.FirstOrDefault();
                    if (firstNode != null)
                    {
                        comment = firstNode["C"]?.Value <string>() ?? "";
                    }
                }
                var gameName        = sgfGameInfo.GameName?.Value <string>() ?? "";
                var blackName       = sgfGameInfo.PlayerBlack?.Value <string>() ?? "";
                var blackRank       = sgfGameInfo.BlackRank?.Value <string>() ?? "";
                var whiteName       = sgfGameInfo.PlayerWhite?.Value <string>() ?? "";
                var whiteRank       = sgfGameInfo.WhiteRank?.Value <string>() ?? "";
                var date            = sgfGameInfo.Date?.Value <string>() ?? "";
                var moves           = CountPrimaryLineMoves(tree);
                var libraryItemGame = new LibraryItemGame(gameName, moves, date, blackName, blackRank, whiteName, whiteRank, comment);
                games.Add(libraryItemGame);
            }

            return(new LibraryItem(fileInfo.Name, games.ToArray(), fileInfo.Size, fileInfo.LastModified));
        }