public void SaveProject(ProjectDocument project)
        {
            var projectWriter = _writerProvider.GetProjectWriter();
            projectWriter.Save(project.Project);
            project.Dirty = false;

            foreach (var stageName in project.StageNames)
            {
                var stage = project.StageByName(stageName);
                SaveStage(stage);
            }

            var allEntities = project.Entities.Concat(project.UnloadedEntities).ToList();

            foreach (var entity in allEntities)
            {
                if (entity.StoragePath == null)
                    entity.StoragePath = project.FileStructure.CreateEntityPath(entity.Name);
            }

            var entityFileGroups = allEntities
                .GroupBy(e => e.StoragePath.Absolute);

            foreach (var group in entityFileGroups)
            {
                SaveEntities(group, group.Key);
            }
        }
        public ProjectSettingsViewModel(ProjectDocument project)
        {
            SetProject(project);
            ViewModelMediator.Current.GetEvent<ProjectOpenedEventArgs>().Subscribe((s, e) => SetProject(e.Project));

            AddIncludeFolderCommand = new RelayCommand(AddIncludeFolder, o => _project != null);
            AddIncludeFileCommand = new RelayCommand(AddIncludeFile, o => _project != null);
            RemoveIncludeCommand = new RelayCommand(RemoveInclude, o => SelectedFile != null);
        }
Esempio n. 3
0
        public void AddRecentProject(ProjectDocument project)
        {
            var path = project.Project.GameFile.Absolute;
            var existing = RecentProjects.FirstOrDefault(p => p.AbsolutePath == path);

            if (existing != null)
            {
                RecentProjects.Remove(existing);
                RecentProjects.Insert(0, existing);
            }
            else
            {
                RecentProjects.Insert(0, new RecentProject() { Name = project.Name, AbsolutePath = path });
            }
        }
        public StageDocument(ProjectDocument project, StageInfo info, StageLinkInfo linkInfo)
        {
            Project = project;
            History = new History();
            _map = info;
            Tileset = new TilesetDocument(_map.Tileset);
            LinkName = linkInfo.Name;

            // wrap all map screens in screendocuments
            // this should be the only time MegaMan.Screen's are touched directly
            foreach (var pair in _map.Screens)
            {
                WrapScreen(pair.Value);
            }
        }
Esempio n. 5
0
        public StageDocument(ProjectDocument project, StageLinkInfo linkInfo)
        {
            Project = project;
            History = new History();
            var stageReader = new StageXmlReader();
            map = stageReader.LoadStageXml(linkInfo.StagePath);
            Tileset = new TilesetDocument(map.Tileset);
            LinkName = linkInfo.Name;

            // wrap all map screens in screendocuments
            // this should be the only time MegaMan.Screen's are touched directly
            foreach (var pair in map.Screens)
            {
                WrapScreen(pair.Value);
            }
        }
Esempio n. 6
0
 private void SetupProjectDependencies(ProjectDocument project)
 {
     _openProject = project;
     ProjectViewModel.Project = project;
     WindowTitle = project.Name + " - " + ApplicationName;
 }
Esempio n. 7
0
 public void CloseProject()
 {
     if (_openProject != null)
     {
         DestroyProjectDependencies();
         _openProject = null;
     }
 }
Esempio n. 8
0
 public StageDocument(ProjectDocument project)
 {
     Project = project;
     map = new StageInfo();
     History = new History();
 }
 private void ProjectOpened(object sender, ProjectOpenedEventArgs e)
 {
     _project = e.Project;
 }
 public void SetProject(ProjectDocument projectDocument)
 {
     _project = projectDocument;
 }
Esempio n. 11
0
 public StageDocument(ProjectDocument project)
 {
     Project = project;
     map     = new StageInfo();
     History = new History();
 }
Esempio n. 12
0
        public static SpriteModel ForEntity(EntityInfo entity, ProjectDocument project)
        {
            var hasSprites = entity.SpriteComponent != null && entity.SpriteComponent.Sprites.Any();

            if (!hasSprites)
            {
                var allEffectParts = entity.StateComponent.States.SelectMany(s => s.Initializer.Parts.Concat(s.Logic.Parts).Concat(s.Triggers.SelectMany(t => t.Effect.Parts)));
                var spawn = allEffectParts.OfType<SpawnEffectPartInfo>().Select(s => s.Name).FirstOrDefault();
                if (spawn != null)
                {
                    var spawnEntity = project.EntityByName(spawn);
                    return new OverlaySpriteModel(spawnEntity.DefaultSprite, "spawn.png");
                }
            }

            return new SpriteModel(entity.DefaultSprite);
        }
        private void ProjectOpened(object sender, ProjectOpenedEventArgs e)
        {
            _currentProject = e.Project;

            Entities = e.Project.Entities
                .Where(x => x.EditorData == null || !x.EditorData.HideFromPlacement)
                .Select(x => new EntityViewModel(x, e.Project));

            OnPropertyChanged("Entities");
        }
        private bool CheckProjectForDuplicateIncludes(ProjectDocument project)
        {
            if (project == null)
                return true;

            var duplicates = project.Entities.GroupBy(e => e.Name)
                .Where(g => g.Count() > 1);

            foreach (var dupe in duplicates)
            {
                var dialogModel = new DuplicateObjectsDialogViewModel(dupe.Key, dupe.AsEnumerable());
                var dialog = new DuplicateObjectsDialog();
                dialog.DataContext = dialogModel;
                dialog.ShowDialog();

                if (dialog.DialogResult.HasValue && dialog.DialogResult.Value)
                {
                    var toRemove = dupe.Where(e => e.StoragePath.Relative != dialogModel.SelectedFile).ToList();
                    foreach (var entity in toRemove)
                    {
                        if (dialogModel.DeleteDuplicates)
                            project.RemoveEntity(entity);
                        else
                            project.UnloadEntity(entity);
                    }
                }
                else
                {
                    return false;
                }
            }

            return true;
        }
 public EntityViewModel(EntityInfo entity, ProjectDocument project)
 {
     _entity = entity;
     _project = project;
 }