Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 public SpawnPuzzle(Area myArea)
     : base(new List<BuildingBlock>())
 {
     _myArea = myArea;
 }
Exemplo n.º 3
0
 public DoorUnlockPuzzle(BuildingBlock keyInput, Area connectingArea) : base(new List <BuildingBlock>() { keyInput })
 {
     _keyInput       = keyInput;
     _connectingArea = connectingArea;
 }
Exemplo n.º 4
0
 public DoorUnlockPuzzle(BuildingBlock keyInput, Area connectingArea)
     : base(new List<BuildingBlock>() { keyInput })
 {
     _keyInput = keyInput;
     _connectingArea = connectingArea;
 }