def startHoliday(self, holidayId, configId=0, time=0, manual=False):
        if self.isHolidayActive(holidayId) or not self.wantHolidays:
            return

        if not holidayId in HolidayGlobals.getAllHolidayIds(
        ) and configId == 0:
            self.notify.warning(
                "Failed to start holiday. %s is an invalid holiday Id" %
                holidayId)
            return

        if configId != 0:
            holidayId = HolidayGlobals.getHolidayId(holidayId, configId)

        canStart = True
        if self.isInvasionHoliday(holidayId):
            canStart = self.startInvasionHoliday(holidayId)

        if self.isFleetHoliday(holidayId):
            canStart = self.startFleetHoliday(holidayId)

        if holidayId == HolidayGlobals.QUEENANNES:
            canStart = self.startQueenAnne()

        if canStart:
            self.activeHolidays[holidayId] = (time, manual)
            self.air.newsManager.addHoliday(holidayId, time)

            self.notify.info('Starting holiday %s (%d)' %
                             ((HolidayGlobals.getHolidayName(holidayId)
                               or holidayId), holidayId))
            messenger.send('holidayActivated', [holidayId])
            messenger.send('holidayListChanged')
예제 #2
0
    def delete(self):
        for holidayId in HolidayGlobals.getAllHolidayIds():
            taskMgr.remove('showHolidayMessage-holidayId:' + str(holidayId))

        if localAvatar and localAvatar.guiMgr and localAvatar.guiMgr.mapPage:
            for waypointId in self.noteablePathList:
                localAvatar.guiMgr.mapPage.removePath(waypointId)

        self.cr.newsManager = None
        DistributedObject.DistributedObject.delete(self)
    def __checkHolidays(self, task=None):
        holidays = HolidayGlobals.getAllHolidayIds()

        for holidayId in holidays:
            date = HolidayGlobals.getHolidayDates(holidayId)
            currentTime = time.time()

            if date is None:
                continue

            if isinstance(date, dict):
                continue

            for index in range(len(date.startDates)):
                start = date.getStartTime(index)
                end = date.getEndTime(index)

                if currentTime >= start and currentTime <= end:
                    remaining = end - currentTime
                    self.startHoliday(holidayId, time=remaining)

        return Task.again