コード例 #1
0
        public static CourseFileModel Load(CourseFile courseFile)
        {
            var courseFileModel = new CourseFileModel();

            courseFileModel.Header = courseFile;
            courseFileModel.Folder = new FolderModel
            {
                Name    = "Root",
                Folders = LoadFolders(courseFile),
                Courses = LoadCourses(courseFile, 0)
            };
            courseFileModel.Folder.Courses.ForEach(course => course.Folder = courseFileModel.Folder);

            courseFileModel.Courses = courseFileModel.Folder
                                      .Courses
                                      .Concat(courseFileModel.Folder
                                              .Folders
                                              .SelectRecursive(folder => folder.Folders, folder => folder.Courses)
                                              .SelectMany(v => v)
                                              .ToList())
                                      .ToList();

            courseFileModel.Folder.IsChecked = true;

            return(courseFileModel);
        }
コード例 #2
0
        private static List <Course> SaveCourses(CourseFileModel courseFileModel, Dictionary <FolderModel, int> indexFolder)
        {
            var index = 0;

            return(courseFileModel.Courses.Select(v => new Course
            {
                Id = ++index,
                Name = v.Name,
                Parent = indexFolder.ContainsKey(v.Folder) ? indexFolder[v.Folder] : 0,
                Waypoints = SaveWaypoints(v.Waypoints)
            }).ToList());
        }
コード例 #3
0
        private static CourseFile Save(CourseFileModel courseFileModel)
        {
            var courseFile = new CourseFile
            {
                CourseplayHud       = courseFileModel.Header.CourseplayHud,
                Course2D            = courseFileModel.Header.Course2D,
                CourseManagement    = courseFileModel.Header.CourseManagement,
                CourseplayFields    = courseFileModel.Header.CourseplayFields,
                CourseplayInGameMap = courseFileModel.Header.CourseplayInGameMap,
                CourseplayWages     = courseFileModel.Header.CourseplayWages,
            };

            Dictionary <FolderModel, int> indexFolder;

            courseFile.Folders = SaveFolders(courseFileModel, out indexFolder);
            courseFile.Courses = SaveCourses(courseFileModel, indexFolder);
            return(courseFile);
        }
コード例 #4
0
        private static List <Folder> SaveFolders(CourseFileModel courseFileModel, out Dictionary <FolderModel, int> dictionary)
        {
            var index      = 0;
            var foldersDic = courseFileModel.Folder.Folders.SelectRecursive(v => v.Folders, v => v).ToDictionary(k => k, v => new Folder
            {
                Id   = ++index,
                Name = v.Name,
            });

            foldersDic.ForEach(v =>
            {
                var folder     = foldersDic.Where(v2 => v2.Key.Folders.Contains(v.Key)).Select(v3 => v3.Value).SingleOrDefault();
                v.Value.Parent = folder == null ? 0 : folder.Id;
            });

            dictionary = foldersDic.ToDictionary(k => k.Key, v => v.Value.Id);

            return(foldersDic.Select(v => v.Value).ToList());
        }