class TutorialBuildingAI:
    def __init__(self, air, exteriorZone, interiorZone, blockNumber, tutorialNpcId):
        self.air = air
        self.exteriorZone = exteriorZone
        self.interiorZone = interiorZone
        self.blockNumber = blockNumber
        self.tutorialNpcId = tutorialNpcId

        self.interior = DistributedTutorialInteriorAI(
            self.air, self.blockNumber, self.interiorZone, self.tutorialNpcId)
        self.interior.generateWithRequired(self.interiorZone)

        self.door = DistributedDoorAI.DistributedDoorAI(
            self.air, blockNumber, DoorTypes.EXT_STANDARD)
        self.insideDoor = DistributedDoorAI.DistributedDoorAI(
            self.air, blockNumber, DoorTypes.INT_STANDARD)
        self.door.setOtherDoor(self.insideDoor)
        self.insideDoor.setOtherDoor(self.door)
        self.door.zoneId = self.exteriorZone
        self.insideDoor.zoneId = self.interiorZone
        self.door.generateWithRequired(self.exteriorZone)
        self.insideDoor.generateWithRequired(self.interiorZone)

    def cleanup(self):
        self.door.requestDelete()
        del self.door
        self.insideDoor.requestDelete()
        del self.insideDoor
        self.interior.requestDelete()
        del self.interior
class ToontorialBuildingAI:
    def __init__(self, air, street, interior, npcId):

        self.air = air

        self.interior = DistributedTutorialInteriorAI(self.air, interior,
                                                      npcId)

        self.interior.generateWithRequired(interior)
        self.door0 = DistributedDoorAI.DistributedDoorAI(
            self.air, 2, DoorTypes.EXT_STANDARD, doorIndex=0)
        self.insideDoor0 = DistributedDoorAI.DistributedDoorAI(
            self.air, 0, DoorTypes.INT_STANDARD, doorIndex=0)
        self.door0.setOtherDoor(self.insideDoor0)
        self.insideDoor0.setOtherDoor(self.door0)
        self.door0.zoneId = street
        self.insideDoor0.zoneId = interior
        self.door0.generateWithRequired(street)
        self.door0.sendUpdate('setDoorIndex', [self.door0.getDoorIndex()])
        self.insideDoor0.generateWithRequired(interior)
        self.insideDoor0.sendUpdate('setDoorIndex',
                                    [self.insideDoor0.getDoorIndex()])

    def cleanup(self):
        self.door0.requestDelete()
        self.insideDoor0.requestDelete()
        self.interior.requestDelete()
class ToontorialBuildingAI:

    def __init__(self, air, street, interior, npcId):
        self.air = air
        self.interior = DistributedTutorialInteriorAI(self.air, interior, npcId)
        self.interior.generateWithRequired(interior)
        self.door0 = DistributedDoorAI.DistributedDoorAI(self.air, 2, DoorTypes.EXT_STANDARD, doorIndex=0)
        self.insideDoor0 = DistributedDoorAI.DistributedDoorAI(self.air, 0, DoorTypes.INT_STANDARD, doorIndex=0)
        self.door0.setOtherDoor(self.insideDoor0)
        self.insideDoor0.setOtherDoor(self.door0)
        self.door0.zoneId = street
        self.insideDoor0.zoneId = interior
        self.door0.generateWithRequired(street)
        self.door0.sendUpdate('setDoorIndex', [self.door0.getDoorIndex()])
        self.insideDoor0.generateWithRequired(interior)
        self.insideDoor0.sendUpdate('setDoorIndex', [self.insideDoor0.getDoorIndex()])

    def cleanup(self):
        self.door0.requestDelete()
        self.insideDoor0.requestDelete()
        self.interior.requestDelete()