public override void LoadReference() { if(Sprite == null) Sprite = ReferenceHelper.GetReferenceObject(this, _reference) as XmlSprite; if (string.IsNullOrEmpty(_reference)) _reference = ReferenceHelper.GetReferenceString(this); }
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)); }
/*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); }