public bool Remove(DataObject item) { if (item is DataObject) { Remove((object)item); return true; } return false; }
public void AddScriptBrick(DataObject scriptBrick, int firstViewIndex, int lastViewIndex) { //if (this.Count == lastViewIndex + 1 && GetAtIndex(lastViewIndex) is Script && ) //{ // lastViewIndex++; //} if (scriptBrick is Brick) // Add brick at last visible end of a script { Brick brick = scriptBrick as Brick; int scriptEndIndex = -1; int scriptBeginIndex = 0; Script lastFullScript = null; foreach (Script script in scripts) { scriptBeginIndex = scriptEndIndex + 1; scriptEndIndex += script.Bricks.Bricks.Count + 1; if (scriptEndIndex > lastViewIndex && scriptBeginIndex >= firstViewIndex) break; lastFullScript = script; } if (lastFullScript == null) { StartScript startScript = new StartScript(selectedSprite); scripts.Add(startScript); lastFullScript = startScript; OnScriptAdded(startScript, IndexOf(startScript)); } lastFullScript.Bricks.Bricks.Add(brick); //OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); // TODO: make faster and use method below instead OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, scriptBrick, IndexOf(scriptBrick))); } else if (scriptBrick is Script) // Add script at end of all { Script script = scriptBrick as Script; scripts.Add(script); //OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); // TODO: make faster and use method below instead OnScriptAdded((Script)scriptBrick, IndexOf(scriptBrick)); } // }
public static string getReference(DataObject dataObject, Sprite spriteContainingDataObject) { string reference = ""; int pos = 0; bool found = false; if (dataObject is Sound) { reference = "../../../../../soundList/Sound"; foreach (Sound Sound in spriteContainingDataObject.Sounds.Sounds) { pos++; if (Sound == dataObject) { found = true; break; } } if (pos > 1) reference += "[" + pos + "]"; } else if (dataObject is Costume) { reference = "../../../../../costumeDataList/costumeData"; foreach (Costume costume in spriteContainingDataObject.Costumes.Costumes) { pos++; if (costume == dataObject) { found = true; break; } } if (pos > 1) reference += "[" + pos + "]"; } else if (dataObject is Sprite) { reference = "../../../../../../sprite"; foreach (Sprite pointedSprite in spriteContainingDataObject.Project.SpriteList.Sprites) { pos++; if (pointedSprite == dataObject) { found = true; break; } } if (pos > 1) reference += "[" + pos + "]"; } else if (dataObject is ForeverBrick) { reference = "../../foreverBrick"; foreach (Script script in spriteContainingDataObject.Scripts.Scripts) { pos = 0; foreach (DataObject brick in script.Bricks.Bricks) { if (brick is ForeverBrick) { pos++; if (brick == dataObject) { found = true; break; } } } if (found) break; } if (pos > 1) reference += "[" + pos + "]"; } else if (dataObject is RepeatBrick) { reference = "../../repeatBrick"; foreach (Script script in spriteContainingDataObject.Scripts.Scripts) { pos = 0; foreach (DataObject brick in script.Bricks.Bricks) { if (brick is RepeatBrick) { pos++; if (brick == dataObject) { found = true; break; } } } if (found) break; } if (pos > 1) reference += "[" + pos + "]"; } else if (dataObject is LoopEndBrick) { reference = "../../loopEndBrick"; foreach (Script script in spriteContainingDataObject.Scripts.Scripts) { pos = 0; foreach (DataObject brick in script.Bricks.Bricks) { if (brick is LoopEndBrick) { pos++; if (brick == dataObject) { found = true; break; } } } if (found) break; } if (pos > 1) reference += "[" + pos + "]"; } if (!found) return ""; return reference; }
private void DeleteScriptBrickAction(DataObject scriptBrick) { if (scriptBrick != null) ScriptBricks.Remove(scriptBrick); }
private void CopyScriptBrickAction(DataObject scriptBrick) { if (scriptBrick != null) { if (scriptBrick is Script) { DataObject copy = (scriptBrick as Script).Copy((scriptBrick as Script).Sprite); ScriptBricks.Insert(ScriptBricks.ScriptIndexOf((Script)scriptBrick), copy); } if (scriptBrick is Brick) { DataObject copy = (scriptBrick as Brick).Copy((scriptBrick as Brick).Sprite); ScriptBricks.Insert(ScriptBricks.IndexOf(scriptBrick), copy); } } }
private void AddBroadcastMessageAction(DataObject broadcastObject) { // TODO: change this this.broadcastObject = broadcastObject; if (OnAddedBroadcastMessage != null) OnAddedBroadcastMessage.Invoke(); }