Exemple #1
0
        /// <summary>
        /// Saves the project and writes all changes to files.
        /// </summary>
        public void Save()
        {
            // Save project descriptor file
            ProjectModel.Serialize(Path.Combine(ProjectDirectory, PROJECT_FILE), Model);

            // TODO Save Everything Else
        }
Exemple #2
0
        /// <summary>
        /// Factory Method.
        /// Creates a project in the specified empty directory and initializes it.
        /// </summary>
        /// <param name="dir">Directory, where to create the new project.</param>
        /// <returns></returns>
        public static void Create(String dir, String name)
        {
            // Create directory name from project name
            String dirName = name;

            foreach (var c in Path.GetInvalidPathChars())
            {
                dirName = dirName.Replace(c, '_');
            }
            foreach (var c in Path.GetInvalidFileNameChars())
            {
                dirName = dirName.Replace(c, '_');
            }
            dirName = dirName.Replace(' ', '-');

            // Combine both names
            dir = Path.Combine(dir, dirName);

            // Create dir if it does not exist
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            // Check if it is empty
            if (Directory.GetFiles(dir).Length != 0 || Directory.GetDirectories(dir).Length != 0)
            {
                throw new Exception("New projects can only be created in an empty directory!");
            }

            // Initialize Subdirectories
            Directory.CreateDirectory(Path.Combine(dir, RESOURCE_DIR));  // Create Resources Folder
            Directory.CreateDirectory(Path.Combine(dir, FRAMES_DIR));    // Create Frames Folder
            Directory.CreateDirectory(Path.Combine(dir, SEQUENCES_DIR)); // Create Sequences Folder
            Directory.CreateDirectory(Path.Combine(dir, EVENTS_DIR));    // Create Events Folder

            // Create Project Descriptor File
            // TODO Serialize instead of writing
            //File.WriteAllText(Path.Combine(dir, PROJECT_FILE), String.Format(Resources.DefaultProjectDescriptor, name));
            var model = new ProjectModel()
            {
                FPS           = 10,
                Name          = name,
                Resources     = { },
                FrameFiles    = { "\\frames\\default.bxframe" },
                SequenceFiles = { "\\sequences\\default.bxseq" },
                EventFiles    = { "\\events\\default.bxevent" }
            };

            ProjectModel.Serialize(Path.Combine(dir, PROJECT_FILE), model);

            // Create Default Files
            File.WriteAllText(Path.Combine(dir, FRAMES_DIR, "default.bxframe"), "{ }");
            File.WriteAllText(Path.Combine(dir, SEQUENCES_DIR, "default.bxseq"), "{ }");
            File.WriteAllText(Path.Combine(dir, EVENTS_DIR, "default.bxevent"), "{ }");

            // Load Default Project
            instance = new AnimatProject(Path.Combine(dir, PROJECT_FILE));
        }