FlatRedBall.Glue.ProjectManager.SaveProjects C# (CSharp) Method

SaveProjects() public static method

public static SaveProjects ( ) : void
return void
        public static void SaveProjects()
        {
            lock (mProjectBase)
            {
                bool shouldSync = false;
                if (mProjectBase != null && mProjectBase.IsDirty)
                {
                    bool succeeded = true;
                    try
                    {
                        mProjectBase.Save(mProjectBase.FullFileName);
                    }
                    catch (UnauthorizedAccessException)
                    {
                        MessageBox.Show("Could not save the file because the file is in use");
                        succeeded = false;
                    }

                    if (succeeded)
                    {
                        shouldSync = true;
                    }
                }
                if (ContentProject != null && ContentProject.IsDirty && ContentProject != mProjectBase)
                {
                    ContentProject.Save(ContentProject.FullFileName);
                    shouldSync = true;
                }

                //Save projects in case they are dirty
                foreach (var syncedProject in mSyncedProjects)
                {
                    if (syncedProject.IsDirty)
                    {
                        try
                        {
                            syncedProject.Save(syncedProject.FullFileName);
                        }
                        catch(Exception e)
                        {
                            PluginManager.ReceiveError(e.ToString());
                            syncedProject.IsDirty = true;
                        }
                    }
                    if (syncedProject.ContentProject.IsDirty)
                    {
                        syncedProject.ContentProject.Save(syncedProject.ContentProject.FullFileName);
                    }
                }

                //Sync all synced projects
                if (shouldSync || mHaveNewProjectsBeenSyncedSinceSave)
                {
                    foreach (var syncedProject in mSyncedProjects)
                    {
                        ProjectSyncer.SyncProjects(mProjectBase, syncedProject, false);
                    }
                }

                // It may be that only the synced projects have changed, so we have to save those:
                foreach (var syncedProject in mSyncedProjects)
                {
                    syncedProject.Save(syncedProject.FullFileName);
                    syncedProject.ContentProject.Save(syncedProject.ContentProject.FullFileName);
                }

                mHaveNewProjectsBeenSyncedSinceSave = false;
            }
        }