void CreatePuzzle(bool addInitialElements = false) { Puzzle puzzle = new Puzzle(); if (puzzleFront) { Destroy(puzzleFront.gameObject); } puzzleFront = Instantiate(puzzleFrontPrefab) as PuzzleFront; puzzleFront.CreatePuzzle(puzzle); puzzle.addEdge += e => DirtyPuzzle(); puzzle.removeEdge += e => DirtyPuzzle(); puzzle.addElement += e => DirtyPuzzle(); puzzle.removeElement += e => DirtyPuzzle(); puzzle.addItem += e => DirtyPuzzle(); puzzle.removeItem += e => DirtyPuzzle(); puzzle.addNode += e => DirtyPuzzle(); puzzle.removeNode += e => DirtyPuzzle(); puzzle.addReceiver += (e, f) => DirtyPuzzle(); puzzle.removeReceiver += (e, f) => DirtyPuzzle(); if (addInitialElements) { PuzzleNode node = new PuzzleNode(); PuzzlePlayer player = new PuzzlePlayer(); player.defaultNode = node; puzzle.AddNode(node); puzzle.AddItem(player); } RefreshData(); }
public static void Deserialize(Puzzle emptyPuzzle, TextReader reader) { SerializationTool tool = new SerializationTool(emptyPuzzle); emptyPuzzle.name = reader.ReadLine(); while (reader.Peek() != -1) { string line = reader.ReadLine(); PuzzleSerializable obj = tool.DeserializePartly(line); if (obj is PuzzleNode) { emptyPuzzle.AddNode(obj as PuzzleNode); } else if (obj is PuzzleEdge) { emptyPuzzle.AddEdge(obj as PuzzleEdge); } else if (obj is PuzzleElement) { emptyPuzzle.AddElement(obj as PuzzleElement); } else if (obj is PuzzleItem) { emptyPuzzle.AddItem(obj as PuzzleItem); } } tool.Final(); }