예제 #1
0
        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);
            }
        }
예제 #2
0
        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;
        }
예제 #3
0
        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();
        }
예제 #4
0
        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);
        }
예제 #6
0
        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);
        }