コード例 #1
0
ファイル: ContentParser.cs プロジェクト: Riva3000/FlatRedBall
        static object GetValueForPropertyOnObject(AxisAlignedRectangleSave rectangle, string fieldOrProperty)
        {
            if (fieldOrProperty == "Color")
            {
                // See if there are any matches
                Dictionary <string, Color> allColors = GetAllDefaultColors();
                int alphaAsInt = MathFunctions.RoundToInt(rectangle.Alpha * 255);
                int redAsInt   = MathFunctions.RoundToInt(rectangle.Red * 255);
                int greenAsInt = MathFunctions.RoundToInt(rectangle.Green * 255);
                int blueAsInt  = MathFunctions.RoundToInt(rectangle.Blue * 255);

                foreach (KeyValuePair <string, Color> kvp in allColors)
                {
                    Color color = kvp.Value;

                    if (color.A == alphaAsInt &&
                        color.R == redAsInt &&
                        color.G == greenAsInt &&
                        color.B == blueAsInt)
                    {
                        return(kvp.Key);
                    }
                }

                return(null);
            }

            return(GetValueForPropertyOnObject <AxisAlignedRectangleSave>(rectangle, fieldOrProperty));
        }
コード例 #2
0
        internal void Rectangle()
        {
            if (ArrowState.Self.CurrentArrowElementSave != null)
            {
                TextInputWindow tiw = new TextInputWindow();

                tiw.Text   = "Enter new Rectangle name:";
                tiw.Result = "Rectangle";
                var result = tiw.ShowDialog();

                if (result.HasValue && result.Value)
                {
                    bool isInvalid = CheckAndShowMessageIfInvalid(tiw.Result);

                    if (!isInvalid)
                    {
                        AxisAlignedRectangleSave rectangleSave = new AxisAlignedRectangleSave();
                        rectangleSave.ScaleX = 16;
                        rectangleSave.ScaleY = 16;
                        rectangleSave.Name   = tiw.Result;

                        ArrowState.Self.CurrentArrowElementSave.Rectangles.Add(rectangleSave);

                        AfterAddLogic(ArrowState.Self.CurrentArrowElementSave, rectangleSave);
                    }
                }
            }
        }
コード例 #3
0
        private static object CreateAndAddInstanceFromClipboard(string instanceType, DataTypes.ArrowElementSave currentArrowElement, string xmlSerializedString)
        {
            object newObject = null;

            if (instanceType == typeof(AxisAlignedRectangleSave).Name)
            {
                AxisAlignedRectangleSave aars = FileManager.XmlDeserializeFromString <AxisAlignedRectangleSave>(
                    xmlSerializedString);

                currentArrowElement.Rectangles.Add(aars);
                newObject = aars;
            }
            else if (instanceType == typeof(CircleSave).Name)
            {
                CircleSave circleSave = FileManager.XmlDeserializeFromString <CircleSave>(
                    xmlSerializedString);

                currentArrowElement.Circles.Add(circleSave);
                newObject = circleSave;
            }
            else if (instanceType == typeof(SpriteSave).Name)
            {
                SpriteSave spriteSave = FileManager.XmlDeserializeFromString <SpriteSave>(
                    xmlSerializedString);

                currentArrowElement.Sprites.Add(spriteSave);
                newObject = spriteSave;
            }

            return(newObject);
        }
コード例 #4
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);
        }
コード例 #5
0
        public NamedObjectSave RectangleSaveToNamedObjectSave(AxisAlignedRectangleSave rectangle)
        {
            NamedObjectSave toReturn = new NamedObjectSave();

            toReturn.SourceType      = SourceType.FlatRedBallType;
            toReturn.SourceClassType = "AxisAlignedRectangle";
            toReturn.InstanceName    = rectangle.Name;

            AddVariablesForAllProperties(rectangle, toReturn);

            return(toReturn);
        }