class CogHoodAI(HoodAI):
    """
    This class is an AI-sided representation of a single cog
    neighborhood in Toontown.

    A sub-class of this class exists for each of the 4 types
    of cog neighborhoods. CogHoodAIs are responsible for
    spawning the Cog Elevators, Cog Doors and the SuitPlanners.
    """

    def __init__(self, air):
        HoodAI.__init__(self, air)
        self.doors = []
        self.elevators = []
        self.suitPlanners = []
        self.lobbyMgr = None

    def createElevator(self, dclass, mgr, extZone, intZone, index=0, minLaff=0, boss=False):
        if boss:
            elevator = dclass(self.air, mgr, intZone, antiShuffle=self.air.config.GetInt('want-anti-shuffle', 0), minLaff=minLaff)
        else:
            elevator = dclass(self.air, mgr, intZone, index, antiShuffle=self.air.config.GetInt('want-anti-shuffle', 0), minLaff=minLaff)
        elevator.generateWithRequired(extZone)
        self.elevators.append(elevator)
        return elevator

    def createDoor(self):
        # Overridable by sub-class.
        pass

    def createBoardingGroup(self, air, elevators, zone, maxSize=4):
        if config.GetBool('want-boarding-groups', True):
            boardingGroup = DistributedBoardingPartyAI.DistributedBoardingPartyAI(air, elevators, maxSize)
            boardingGroup.generateWithRequired(zone)

    def createSuitPlanner(self, zone):
        sp = DistributedSuitPlannerAI(self.air, zone)
        sp.generateWithRequired(zone)
        sp.d_setZoneId(zone)
        sp.initTasks()
        self.air.suitPlanners[zone] = sp
        self.suitPlanners.append(sp)

    def createLobbyManager(self, boss, zone):
        self.lobbyMgr = LobbyManagerAI(self.air, boss)
        self.lobbyMgr.generateWithRequired(zone)
class CogHoodAI(HoodAI):
    """
    This class is an AI-sided representation of a single cog
    neighborhood in Toontown.

    A sub-class of this class exists for each of the 5 types
    of cog neighborhoods. CogHoodAIs are responsible for
    spawning the Cog Elevators, Cog Doors and the SuitPlanners.
    """
    def __init__(self, air, zoneId, canonicalHoodId):
        HoodAI.__init__(self, air, zoneId, canonicalHoodId)
        self.doors = []
        self.elevators = []
        self.suitPlanners = []
        self.lobbyMgr = None

    def createElevator(self,
                       dclass,
                       mgr,
                       extZone,
                       intZone,
                       index=0,
                       minLaff=0,
                       boss=False):
        if boss:
            elevator = dclass(self.air,
                              mgr,
                              intZone,
                              antiShuffle=self.air.config.GetInt(
                                  'want-anti-shuffle', 0),
                              minLaff=minLaff)
        else:
            elevator = dclass(self.air,
                              mgr,
                              intZone,
                              index,
                              antiShuffle=self.air.config.GetInt(
                                  'want-anti-shuffle', 0),
                              minLaff=minLaff)
        elevator.generateWithRequired(extZone)
        self.elevators.append(elevator)
        return elevator

    def createDoor(self):
        # Overridable by sub-class.
        pass

    def createBoardingGroup(self, air, elevators, zone, maxSize=4):
        if config.GetBool('want-boarding-groups', True):
            boardingGroup = DistributedBoardingPartyAI.DistributedBoardingPartyAI(
                air, elevators, maxSize)
            boardingGroup.generateWithRequired(zone)

    def createSuitPlanner(self, zone):
        sp = DistributedSuitPlannerAI(self.air, zone)
        sp.generateWithRequired(zone)
        sp.d_setZoneId(zone)
        sp.initTasks()
        self.air.suitPlanners[zone] = sp
        self.suitPlanners.append(sp)

    def createLobbyManager(self, boss, zone):
        self.lobbyMgr = LobbyManagerAI(self.air, boss)
        self.lobbyMgr.generateWithRequired(zone)
 def createLobbyManager(self, boss, zone):
     self.lobbyMgr = LobbyManagerAI(self.air, boss)
     self.lobbyMgr.generateWithRequired(zone)
 def createLobbyManager(self, boss, zone):
     self.lobbyMgr = LobbyManagerAI(self.air, boss)
     self.lobbyMgr.generateWithRequired(zone)