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')
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