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++; } }
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++; } }
/* //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++; } }