Inheritance: XmlObjectNode, IObject
 public override void LoadReference()
 {
     if(Sprite == null)
         Sprite = ReferenceHelper.GetReferenceObject(this, _reference) as XmlSprite;
     if (string.IsNullOrEmpty(_reference))
         _reference = ReferenceHelper.GetReferenceString(this);
 }
Esempio n. 2
0
 public override void LoadReference()
 {
     if (Sprite == null)
     {
         Sprite = ReferenceHelper.GetReferenceObject(this, _reference) as XmlSprite;
     }
     if (string.IsNullOrEmpty(_reference))
     {
         _reference = ReferenceHelper.GetReferenceString(this);
     }
 }
        private static void UpdateIfLogicEndBrickReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            XmlIfLogicEndBrickReference oldIfLogicBeginBrickReference;
            XmlIfLogicEndBrickReference newIfLogicBeginBrickReference;

            var oldBrick = oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount];
            if (oldBrick is XmlIfLogicBeginBrick)
            {
                oldIfLogicBeginBrickReference = (oldBrick as XmlIfLogicBeginBrick).IfLogicEndBrickReference;
                newIfLogicBeginBrickReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlIfLogicBeginBrick)
                        .IfLogicEndBrickReference;
            }
            else
            {
                oldIfLogicBeginBrickReference = (oldBrick as XmlIfLogicElseBrick).IfLogicEndBrickReference;
                newIfLogicBeginBrickReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlIfLogicElseBrick)
                        .IfLogicEndBrickReference;
            }

            var count = 0;
            foreach (var brick in oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks)
            {
                if (brick == oldIfLogicBeginBrickReference.IfLogicEndBrick)
                {
                    newIfLogicBeginBrickReference.IfLogicEndBrick = newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[count] as XmlIfLogicEndBrick;
                    return;
                }
                count++;
            }
        }
        private static void UpdateLoopEndBrickReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            XmlLoopEndBrickReference oldLoopEndBrickReference;
            XmlLoopEndBrickReference newLoopEndBrickReference;

            var oldBrick = oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount];
            if (oldBrick is XmlForeverBrick)
            {
                //oldLoopEndBrickReference = (oldBrick as XmlForeverBrick).LoopEndBrickReference;
                /*newLoopEndBrickReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlForeverBrick)
                        .LoopEndBrickReference;*/
            }
            else
            {
               //oldLoopEndBrickReference = (oldBrick as XmlRepeatBrick).LoopEndBrickReference;
                /* newLoopEndBrickReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlRepeatBrick)
                        .LoopEndBrickReference;*/
            }

            var count = 0;
            foreach (var brick in oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks)
            {
                count++;
            }
        }
        /* //TODO outdated? private static void UpdateVariableReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            XmlUserVariableReference oldVariableReference;
            XmlUserVariableReference newVariableReference;

            var oldBrick = oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount];
            /*if (oldBrick is XmlChangeVariableBrick)
            {*/
                /*oldVariableReference = (oldBrick as XmlChangeVariableBrick).UserVariableReference;
                newVariableReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlChangeVariableBrick)
                        .UserVariableReference;*/
            /*}
            else
            {
                oldVariableReference = (oldBrick as XmlSetVariableBrick).UserVariableReference;
                newVariableReference =
                    (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlSetVariableBrick)
                        .UserVariableReference;
            }*/

        /*
            var entries = XmlParserTempProjectHelper.Program.VariableList.ObjectVariableList.ObjectVariableEntries;
            foreach (var oldEntry in entries)
                if (oldEntry.Sprite == oldSprite)
                {
                    var variableCount = 0;
                    foreach (var variable in oldEntry.VariableList.UserVariables)
                    {
                        if (variable == oldVariableReference.UserVariable)
                            foreach (var newEntry in entries)
                            {
                                if (newEntry.Sprite == newSprite)
                                {
                                    newVariableReference.UserVariable =
                                        newEntry.VariableList.UserVariables[variableCount];

                                    return;
                                }
                            }
                        variableCount++;
                    }
                }
        }*/

        private static void UpdateLoopBeginBrickReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            //var oldLoopBeginBrickReference = (oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlLoopEndBrick).LoopBeginBrickReference;
            //var newLoopBeginBrickReference = (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlLoopEndBrick).LoopBeginBrickReference;

            var count = 0;
            foreach (var brick in oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks)
            {
                /*if (brick == oldLoopBeginBrickReference.LoopBeginBrick)
                {
                    newLoopBeginBrickReference.LoopBeginBrick = newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[count] as XmlLoopBeginBrick;
                    return;
                }*/
                count++;
            }
        }
        private static void UpdateSoundReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            var oldSoundReference = (oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlPlaySoundBrick).XmlSoundReference;
            var newSoundReference = (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlPlaySoundBrick).XmlSoundReference;

            var soundCount = 0;
            foreach (var sound in oldSprite.Sounds.Sounds)
            {
                if (sound == oldSoundReference.Sound)
                {
                    newSoundReference.Sound = newSprite.Sounds.Sounds[soundCount];
                    return;
                }

                soundCount++;
            }
        }
        private static void UpdateLookReference(XmlSprite oldSprite, XmlSprite newSprite, int scriptCount, int brickCount)
        {
            var oldLookReference = (oldSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlSetLookBrick).XmlLookReference;
            var newLookReference = (newSprite.Scripts.Scripts[scriptCount].Bricks.Bricks[brickCount] as XmlSetLookBrick).XmlLookReference;

            var lookCount = 0;
            foreach (var look in oldSprite.Looks.Looks)
            {
                if (look == oldLookReference.Look)
                {
                    newLookReference.Look = newSprite.Looks.Looks[lookCount];
                    return;
                }

                lookCount++;
            }
        }
        public static void UpdateReferencesAfterCopy(XmlSprite oldSprite, XmlSprite newSprite)
        {
            var scriptCount = 0;
            foreach (var script in oldSprite.Scripts.Scripts)
            {
                var brickCount = 0;
                foreach (var brick in script.Bricks.Bricks)
                {

                    /* //TODO outdated? if (brick is XmlChangeVariableBrick || brick is XmlSetVariableBrick)
                        UpdateVariableReference(oldSprite, newSprite, scriptCount, brickCount);
                    else */
                    if (brick is XmlSetLookBrick)
                        UpdateLookReference(oldSprite, newSprite, scriptCount, brickCount);
                    else if (brick is XmlForeverBrick || brick is XmlRepeatBrick)
                        UpdateLoopEndBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    else if (brick is XmlIfLogicBeginBrick)
                    {
                        UpdateIfLogicElseBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                        UpdateIfLogicEndBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlIfLogicElseBrick)
                    {
                        UpdateIfLogicBeginBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                        UpdateIfLogicEndBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlIfLogicEndBrick)
                    {
                        UpdateIfLogicBeginBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                        UpdateIfLogicElseBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    }
                    else if (brick is XmlLoopEndBrick)
                        UpdateLoopBeginBrickReference(oldSprite, newSprite, scriptCount, brickCount);
                    else if (brick is XmlPlaySoundBrick)
                        UpdateSoundReference(oldSprite, newSprite, scriptCount, brickCount);

                    brickCount++;
                }

                scriptCount++;
            }
        }
        /*public override bool Equals(System.Object obj)
         * {
         *  XmlSprite s = obj as XmlSprite;
         *  if ((object)s == null)
         *  {
         *      return false;
         *  }
         *
         *  return this.Equals(s);
         * }*/

        public bool Equals(XmlSprite s)
        {
            return(this.Name.Equals(s.Name) && this.Variables.Equals(s.Variables) &&
                   this.Looks.Equals(s.Looks) && this.Scripts.Equals(s.Scripts) &&
                   this.Sounds.Equals(s.Sounds));
        }
Esempio n. 10
0
        /*public override bool Equals(System.Object obj)
        {
            XmlSprite s = obj as XmlSprite;
            if ((object)s == null)
            {
                return false;
            }

            return this.Equals(s);
        }*/


        public bool Equals(XmlSprite s)
        {
            return this.Name.Equals(s.Name) && this.Variables.Equals(s.Variables)
                && this.Looks.Equals(s.Looks) && this.Scripts.Equals(s.Scripts)
                && this.Sounds.Equals(s.Sounds);
        }