public ArrowElementSave Element() { TextInputWindow tiw = new TextInputWindow(); tiw.Text = "Enter new element name:"; List <string> intentNames = new List <string>(); const string noIntent = "<NO INTENT>"; intentNames.Add(noIntent); foreach (var item in ArrowState.Self.CurrentArrowProject.Intents) { intentNames.Add(item.Name); } var treeView = tiw.AddTreeView(intentNames); var result = tiw.ShowDialog(); if (result.HasValue && result.Value) { ArrowElementSave toReturn = new ArrowElementSave(); toReturn.Name = tiw.Result; ArrowProjectSave projectToAddTo = ArrowState.Self.CurrentArrowProject; if (treeView.SelectedItem as string != noIntent) { toReturn.Intent = treeView.SelectedItem as string; ArrowIntentSave intent = new ArrowIntentSave(); IntentManager.Self.AddRequirementsForIntent(toReturn, intent); } projectToAddTo.Elements.Add(toReturn); ArrowCommands.Self.File.SaveProject(); ArrowCommands.Self.File.GenerateGlux(); ArrowState.Self.CurrentArrowProjectVm.Refresh(); return(toReturn); } else { return(null); } }
public void LoadProject(string fileName) { string extension = FileManager.GetExtension(fileName); // better be a .arox ArrowProjectSave arrowProject = FileManager.XmlDeserialize <ArrowProjectSave>(fileName); ArrowState.Self.CurrentArrowProject = arrowProject; ArrowProjectToGlueProjectConverter converter = new ArrowProjectToGlueProjectConverter(); GlueProjectSave glueProjectSave = converter.ToGlueProjectSave(ArrowState.Self.CurrentArrowProject); ArrowState.Self.CurrentGlueProjectSave = glueProjectSave; ArrowState.Self.CurrentGluxFileLocation = fileName; }
public void DeleteCurrentInstance() { ArrowProjectSave arrowProject = ArrowState.Self.CurrentArrowProject; ArrowElementSave element = ArrowState.Self.CurrentArrowElementSave; object instance = ArrowState.Self.CurrentInstance; ///////////////////Early Out/////////////////////// if (arrowProject == null || instance == null) { return; } /////////////////End Early Out///////////////////// if (instance is SpriteSave) { element.Sprites.Remove(instance as SpriteSave); } else if (instance is CircleSave) { element.Circles.Remove(instance as CircleSave); } else if (instance is AxisAlignedRectangleSave) { element.Rectangles.Remove(instance as AxisAlignedRectangleSave); } else if (instance is SpriteFrameSave) { element.SpriteFrameSaves.Remove(instance as SpriteFrameSave); } else if (instance is ArrowElementInstance) { element.ElementInstances.Remove(instance as ArrowElementInstance); } else { throw new NotImplementedException("Removal of the type " + instance.GetType().Name + " needs to be implemented"); } ArrowCommands.Self.File.GenerateGlux(); ArrowCommands.Self.File.SaveProject(); ArrowCommands.Self.UpdateToSelectedElement(); }
public void DeleteCurrentElement() { ArrowProjectSave arrowProject = ArrowState.Self.CurrentArrowProject; ArrowElementSave element = ArrowState.Self.CurrentArrowElementSave; ///////////////////Early Out/////////////////////// if (arrowProject == null || element == null) { return; } /////////////////End Early Out///////////////////// arrowProject.Elements.Remove(element); ArrowCommands.Self.File.GenerateGlux(); ArrowCommands.Self.File.SaveProject(); //ArrowCommands.Self.GuiCommands.RefreshSingleElementTreeView(); ArrowCommands.Self.View.RefreshToCurrentElement(); ArrowState.Self.CurrentArrowProjectVm.Refresh(); }
public GlueProjectSave ToGlueProjectSave(ArrowProjectSave arrowProject) { GlueProjectSave toReturn = new GlueProjectSave(); ArrowElementToGlueConverter elementToElementConverter = new ArrowElementToGlueConverter(); foreach (var element in arrowProject.Elements) { IElement glueElement = elementToElementConverter.ToGlueIElement(element); if (glueElement is ScreenSave) { toReturn.Screens.Add(glueElement as ScreenSave); } else { toReturn.Entities.Add(glueElement as EntitySave); } } return(toReturn); }
public void TestConversion() { ArrowProjectSave project = new ArrowProjectSave(); SpriteSave spriteSave = new SpriteSave(); spriteSave.X = 3; spriteSave.Y = 4; spriteSave.Name = "SpriteInstance"; spriteSave.Texture = "Entities/FirstElement/redball.BMP"; ArrowElementSave element = new ArrowElementSave(); element.Name = "FirstElement"; element.Sprites.Add(spriteSave); project.Elements.Add(element); element = new ArrowElementSave(); element.Name = "ContainerOfFirstElement"; element.Sprites.Add(spriteSave); project.Elements.Add(element); ArrowElementInstance instance = new ArrowElementInstance(); instance.Name = "FirstElementInstance"; instance.Type = "FirstElement"; instance.SetVariable("X", 4); instance.SetVariable("Y", 5); element.ElementInstances.Add(instance); ArrowProjectToGlueProjectConverter converter = new ArrowProjectToGlueProjectConverter(); GlueProjectSave gps = converter.ToGlueProjectSave(project); EntitySave firstElementEntity = gps.Entities.FirstOrDefault(item => item.Name == "Entities/FirstElement"); EntitySave containerOfFirstElement = gps.Entities.FirstOrDefault(item => item.Name == "Entities/ContainerOfFirstElement"); if (firstElementEntity.Name.StartsWith("Entities/") == false) { throw new Exception("Entity names must start with \"Entities/\""); } if (firstElementEntity.ReferencedFiles.Count == 0) { throw new Exception("The Entity should automatically contain a ReferencedFile for the redball file"); } if (containerOfFirstElement.NamedObjects.FirstOrDefault(item => item.InstanceName == "FirstElementInstance") == null) { throw new Exception("The entity should contain a NOS for another element, but it doesn't"); } string gluxString; FileManager.XmlSerialize(gps, out gluxString); string aroxString; FileManager.XmlSerialize(project, out aroxString); }