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); }
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); } }
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); } }
private void SetupProjectDependencies(ProjectDocument project) { _openProject = project; ProjectViewModel.Project = project; WindowTitle = project.Name + " - " + ApplicationName; }
public void CloseProject() { if (_openProject != null) { DestroyProjectDependencies(); _openProject = null; } }
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; }
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; }