Пример #1
0
        public object UpdateInstanceValuesFromRuntime(ElementRuntime runtime)
        {
            object instance =
                RelationshipManager.Self.InstanceForElementRuntime(runtime);

            object whatToPullValuesFrom = runtime;

            if (runtime.DirectObjectReference != null)
            {
                whatToPullValuesFrom = runtime.DirectObjectReference;
            }
            PositionedObject whatToPullFromAsPo = whatToPullValuesFrom as PositionedObject;

            if (instance is CircleSave)
            {
                CircleSave save = (instance as CircleSave);
                save.SetFrom(whatToPullValuesFrom as Circle);
                SetSavePositionsFromRelativeValues(whatToPullFromAsPo, save);
            }
            else if (instance is SpriteSave)
            {
                SpriteSave save = (instance as SpriteSave);
                save.SetFrom(whatToPullValuesFrom as Sprite);
                SetSavePositionsFromRelativeValues(whatToPullFromAsPo, save);
            }
            else if (instance is AxisAlignedRectangleSave)
            {
                AxisAlignedRectangleSave save = (instance as AxisAlignedRectangleSave);
                save.SetFrom(whatToPullValuesFrom as AxisAlignedRectangle);
                SetSavePositionsFromRelativeValues(whatToPullFromAsPo, save);
            }
            else if (instance is ArrowElementInstance)
            {
                ArrowElementInstance save = (instance as ArrowElementInstance);

                if (whatToPullFromAsPo != null)
                {
                    if (whatToPullFromAsPo.Parent == null)
                    {
                        save.SetVariable("X", whatToPullFromAsPo.X);
                        save.SetVariable("Y", whatToPullFromAsPo.Y);
                    }
                    else
                    {
                        save.SetVariable("X", whatToPullFromAsPo.RelativeX);
                        save.SetVariable("Y", whatToPullFromAsPo.RelativeY);
                    }
                }

                // We can't do this because this object technically doesn't have X and Y properties
                //SetSavePositionsFromRelativeValues(whatToPullFromAsPo, save);
            }
            else
            {
                throw new Exception("Saving of type " + instance.GetType() + " is not supported");
            }

            return(instance);
        }
        public override void AddVariablesForAllProperties(object saveObject, NamedObjectSave toModify)
        {
            ArrowElementInstance elementInstance = saveObject as ArrowElementInstance;

            toModify.InstructionSaves.Clear();
            foreach (var variable in elementInstance.Variables)
            {
                var toAdd = variable.Clone <CustomVariableInNamedObject>();
                toModify.InstructionSaves.Add(toAdd);
            }
        }
        public NamedObjectSave ArrowElementInstanceToNos(ArrowElementInstance elementInstance)
        {
            NamedObjectSave toReturn = new NamedObjectSave();

            toReturn.InstanceName    = elementInstance.Name;
            toReturn.SourceType      = SourceType.Entity;
            toReturn.SourceClassType = "Entities/" + elementInstance.Type;

            foreach (var sourceVariable in elementInstance.Variables)
            {
                toReturn.InstructionSaves.Add(sourceVariable.Clone <CustomVariableInNamedObject>());
            }

            return(toReturn);
        }
Пример #4
0
        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);
        }
Пример #5
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);
        }