protected static Area findAndParseAreaBlock(string blockName, XmlDocument xmlDoc) { if (blockName == "" || blockName == null) return null; if (_spawnedAreas.ContainsKey(blockName)) return _spawnedAreas[blockName]; foreach (XmlElement elem in xmlDoc.GetElementsByTagName("area")) { if (elem.GetAttribute("name") == blockName) { // We have our area now. List<IAreaConnector> areaInputs = new List<IAreaConnector>(); // If it's the start area if (bool.Parse(elem.GetAttribute("startArea"))) areaInputs.Add(new StartAreaBlock()); // Go through all of the input areas foreach (XmlElement inputAreaElem in elem.GetElementsByTagName("inputArea")) { Area inputArea = findAndParseAreaBlock(inputAreaElem.GetAttribute("name"), xmlDoc); if (inputArea != null) areaInputs.Add(inputArea); } // Go through all of the locked doors foreach (XmlElement lockedDoorElem in elem.GetElementsByTagName("lockedDoor")) { DoorUnlockPuzzle lockedDoor = findAndParsePuzzleBlock(lockedDoorElem.GetAttribute("name"), xmlDoc) as DoorUnlockPuzzle; if (lockedDoor != null) areaInputs.Add(lockedDoor); } // If we don't have any inputs, it's not valid if (areaInputs.Count == 0) { if (verbose) Debug.Log(string.Format("Failed to load area {0} because none of its inputs loaded", blockName)); return null; } else { Area newArea = new Area(blockName, areaInputs); _spawnedAreas[blockName] = newArea; return newArea; } } } return null; }
public SpawnPuzzle(Area myArea) : base(new List<BuildingBlock>()) { _myArea = myArea; }
public DoorUnlockPuzzle(BuildingBlock keyInput, Area connectingArea) : base(new List <BuildingBlock>() { keyInput }) { _keyInput = keyInput; _connectingArea = connectingArea; }
public DoorUnlockPuzzle(BuildingBlock keyInput, Area connectingArea) : base(new List<BuildingBlock>() { keyInput }) { _keyInput = keyInput; _connectingArea = connectingArea; }