public IElement ToGlueIElement(ArrowElementSave arrowElement) { List <string> referencedFiles = new List <string>(); IElement glueElement; if (arrowElement.ElementType == ElementType.Screen) { glueElement = new ScreenSave(); glueElement.Name = "Screens/" + arrowElement.Name; } else { glueElement = new EntitySave(); glueElement.Name = "Entities/" + arrowElement.Name; } AddSpritesToElement(arrowElement, glueElement, referencedFiles); AddCirclesToElement(arrowElement, glueElement); AddRectanglesToElement(arrowElement, glueElement); AddElementInstancesToElement(arrowElement, glueElement); AddReferencedFileSaves(referencedFiles, glueElement); AddCustomVariables(glueElement); return(glueElement); }
private void AddRequirementForComponent(ArrowElementSave element, ArrowIntentComponentSave component) { switch (component.GlueItemType) { case GlueItemType.Entity: break; case GlueItemType.File: AddFileForComponent(element, component); break; case GlueItemType.NamedObject: break; case GlueItemType.Screen: break; case GlueItemType.Undefined: break; } }
public object InstanceForElementRuntime(ElementRuntime elementRuntime) { if (elementRuntime == null) { return(null); } if (elementRuntime.AssociatedNamedObjectSave == null) { throw new Exception("The ElementRuntime does not have an associated NamedObject and it should"); } string nameToFind = elementRuntime.AssociatedNamedObjectSave.InstanceName; IElement containerIElement = ObjectFinder.Self.GetElementContaining(elementRuntime.AssociatedNamedObjectSave); string containerNameStripped = null; if (containerIElement is EntitySave) { containerNameStripped = containerIElement.Name.Substring("Entities/".Length); } else //Implied: if (containerIElement is ScreenSave) { containerNameStripped = containerIElement.Name.Substring("Screens/".Length); } ArrowElementSave container = ArrowState.Self.CurrentArrowProject.Elements.FirstOrDefault( item => item.Name == containerNameStripped); return(container.AllInstances.FirstOrDefault(item => LateBinder.GetInstance(item.GetType()).GetValue(item, "Name") as string == nameToFind)); }
public void AddRequirementsForIntent(ArrowElementSave element, ArrowIntentSave intent) { foreach (var component in intent.Components) { AddRequirementForComponent(element, component); } }
private void AddCirclesToElement(ArrowElementSave arrowElement, IElement glueElemement) { foreach (var circle in arrowElement.Circles) { NamedObjectSave nos = mCircleSaveConverter.CircleSaveToNamedObjectSave(circle); glueElemement.NamedObjects.Add(nos); } }
private void AddElementInstancesToElement(ArrowElementSave arrowElement, IElement glueElement) { foreach (var instance in arrowElement.ElementInstances) { NamedObjectSave nosToAdd = mArrowElementInstanceConverter.ArrowElementInstanceToNos(instance); glueElement.NamedObjects.Add(nosToAdd); } }
private void AddRectanglesToElement(ArrowElementSave arrowElement, IElement glueElemement) { foreach (var rectangle in arrowElement.Rectangles) { NamedObjectSave nos = mRectangleSaveConverter.RectangleSaveToNamedObjectSave(rectangle); glueElemement.NamedObjects.Add(nos); } }
private void AfterAddLogic(ArrowElementSave arrowElement, object newObject) { MakeNewObjectUnique(arrowElement, newObject); ArrowCommands.Self.File.SaveProject(); ArrowCommands.Self.File.GenerateGlux(); ArrowState.Self.CurrentArrowElementVm.Refresh(); ArrowCommands.Self.UpdateToSelectedElement(); //ArrowCommands.Self.GuiCommands.RefreshSingleElementTreeView(); }
private void AddSpritesToElement(ArrowElementSave arrowElement, IElement glueElemement, List <string> referencedFiles) { foreach (var sprite in arrowElement.Sprites) { NamedObjectSave nos = mSpriteSaveConverter.SpriteSaveToNamedObjectSave(sprite); glueElemement.NamedObjects.Add(nos); sprite.GetReferencedFiles(referencedFiles); } }
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); } }
private void HandleAddInstanceClick(object sender, RoutedEventArgs e) { object dataContext = ((System.Windows.Controls.Control)sender).DataContext; if (dataContext is ArrowElementOrIntentVm) { ArrowElementVm aevm = ((ArrowElementOrIntentVm)dataContext).ElementVm; ArrowElementSave arrowElementSave = aevm.Model; var newInstance = ArrowCommands.Self.Add.ElementInstance(arrowElementSave.Name + "Instance", arrowElementSave); ArrowCommands.Self.Add.MakeNewObjectUnique(ArrowState.Self.CurrentArrowElementSave, newInstance); } }
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 ArrowElementInstance ElementInstance(string name, ArrowElementSave typeToAdd) { ArrowElementInstance instance = new ArrowElementInstance(); instance.Name = name; instance.Type = typeToAdd.Name; ArrowState.Self.CurrentArrowElementSave.ElementInstances.Add(instance); ArrowCommands.Self.File.SaveProject(); ArrowCommands.Self.File.GenerateGlux(); ArrowCommands.Self.UpdateToSelectedElement(); ArrowState.Self.CurrentInstance = instance; return(instance); }
internal void ElementInstance() { if (ArrowState.Self.CurrentArrowElementSave != null) { //Show a text input window for the name, but add a combo box so the user can select the type TextInputWindow tiw = new TextInputWindow(); TreeView treeView = new TreeView(); treeView.HorizontalAlignment = HorizontalAlignment.Stretch; treeView.VerticalAlignment = VerticalAlignment.Top; treeView.Height = 80; treeView.Margin = new Thickness(3); List <ArrowElementSave> toAddToTreeView = new List <ArrowElementSave>(); foreach (var elementSave in ArrowState.Self.CurrentArrowProject.Elements) { if (elementSave != null && elementSave != ArrowState.Self.CurrentArrowElementSave) { toAddToTreeView.Add(elementSave); } } treeView.ItemsSource = toAddToTreeView; tiw.AddControl(treeView); bool?result = tiw.ShowDialog(); if (result.HasValue && result.Value) { ArrowElementSave typeToAdd = treeView.SelectedItem as ArrowElementSave; string name = tiw.Result; ElementInstance(name, typeToAdd); } //tiw.AddControl } }
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 bool IsInstanceNameValid(string name, out string whyIsntValid, object instanceSave, ArrowElementSave container) { whyIsntValid = null; foreach (var instanceObject in container.AllInstances) { if (instanceObject != instanceSave && LateBinder.GetValueStatic(instanceObject, "Name") as string == name) { whyIsntValid = "The name " + name + " is already being used by another object"; break; } } if (string.IsNullOrEmpty(whyIsntValid)) { IsInstanceNameValid(name, out whyIsntValid); } return(string.IsNullOrEmpty(whyIsntValid)); }
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); }
private void AddFileForComponent(ArrowElementSave element, ArrowIntentComponentSave component) { }