def __init__(self): QuestAvatarBase.QuestAvatarBase.__init__(self) QuestHolder.QuestHolder.__init__(self) self.lastQuestStepRequest = None self.questStep = None self.oldQuestStep = None self.questIndicator = QuestStepIndicator() self.activeQuestId = '' self.activeQuestIdPending = '' self.popupDialog = None
class DistributedQuestAvatar(QuestAvatarBase.QuestAvatarBase, QuestHolder.QuestHolder): notify = DirectNotifyGlobal.directNotify.newCategory('DistributedQuestAvatar') def __init__(self): QuestAvatarBase.QuestAvatarBase.__init__(self) QuestHolder.QuestHolder.__init__(self) self.lastQuestStepRequest = None self.questStep = None self.oldQuestStep = None self.questIndicator = QuestStepIndicator() self.activeQuestId = '' self.activeQuestIdPending = '' self.popupDialog = None def delete(self): self.activeQuestId = '' self.activeQuestIdPending = '' self.questIndicator.delete() self.questStep = None self.oldQuestStep = None self.lastQuestStepRequest = None def setQuestHistory(self, history): self.questHistory = history def getQuestHistory(self): return self.questHistory def setQuestLadderHistory(self, history): self.questLadderHistory = history def getQuestLadderHistory(self): return self.questLadderHistory def setCurrentQuestChoiceContainers(self, containers): self.currentQuestChoiceContainers = containers def getCurrentQuestChoiceContainers(self): return self.currentQuestChoiceContainers def requestDropQuest(self, questId): DistributedQuestAvatar.notify.debug('requestDropQuest: %s (%s)' % (questId, self.doId)) container = QuestLadderDB.getContainer(questId) parentContainer = QuestLadderDB.getParentContainer(container) if parentContainer and parentContainer.isChoice(): for ctr in parentContainer.getContainers(): self.sendUpdate('requestDropQuest', [ ctr.getQuestId()]) else: self.sendUpdate('requestDropQuest', [ questId]) def requestShareQuest(self, questId): DistributedQuestAvatar.notify.debug('requestShareQuest: %s (%s)' % (questId, self.doId)) self.sendUpdate('requestShareQuest', [ questId]) def handleQuestDropped(self, droppedQuestId): self.questStatus.handleQuestDropped(droppedQuestId) def refreshActiveQuestStep(self, forceClear = False, forceRefresh = False): if self.activeQuestId: if forceRefresh or forceClear: self.lastQuestStepRequest = None if not forceClear: self.b_requestQuestStep(self.activeQuestId) else: self.b_requestQuestStep('') refreshActiveQuestStep = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(refreshActiveQuestStep) def questStepAutoRefresh(self): return True def b_requestQuestStep(self, questId): if questId: stepRequest = (self.getLocation()[0], questId) if stepRequest[0]: if self.lastQuestStepRequest == stepRequest: if self.questStep: self.l_setQuestStep(self.questStep) elif self.oldQuestStep: self.l_setQuestStep(self.oldQuestStep) else: self.d_requestQuestStep(stepRequest) self.l_requestQuestStep(stepRequest) else: self.d_requestQuestStep(stepRequest) self.l_requestQuestStep(stepRequest) else: self.l_requestQuestStep(None) self.l_setQuestStep(None) b_requestQuestStep = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(b_requestQuestStep) def d_requestQuestStep(self, stepRequest): self.sendUpdate('requestQuestStep', [ stepRequest[1]]) d_requestQuestStep = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(d_requestQuestStep) def l_requestQuestStep(self, stepRequest): if stepRequest: self.lastQuestStepRequest = stepRequest self.oldQuestStep = None l_requestQuestStep = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(l_requestQuestStep) def setQuestStep(self, questStepArgs): (originDoId, stepDoId, typeData) = questStepArgs if typeData[0] == 10: typeDict = dict(zip(('stepType', 'posH', 'islandId', 'targetAreaId', 'nodeSizes', 'nearOffset', 'nearVis'), typeData)) questStep = QuestStep(*(originDoId, stepDoId), **(originDoId, stepDoId)) else: questStep = QuestStep(*(originDoId, stepDoId) + typeData) self.l_setQuestStep(questStep) if questStep == QuestStep.getNullStep(): localAvatar.guiMgr.mapPage.worldMap.mapBall.removeDart() return None mapPage = localAvatar.guiMgr.mapPage doId = base.cr.uidMgr.uid2doId.get(questStep.getIsland()) island = base.cr.doId2do.get(doId) if island: pos = island.getPos() if mapPage.worldMap.mapBall.questDartPlaced: localAvatar.guiMgr.mapPage.worldMap.mapBall.updateDart('questStep', pos) else: localAvatar.guiMgr.mapPage.addQuestDart('questStep', pos) else: localAvatar.guiMgr.mapPage.removeQuestDart('questStep') setQuestStep = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(setQuestStep) def l_setQuestStep(self, questStep): if questStep == QuestStep.getNullStep(): self.oldQuestStep = None questStep = None elif not questStep and self.questStep: self.oldQuestStep = self.questStep self.questStep = questStep self.questIndicator.showQuestStep(self.questStep) l_setQuestStep = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(l_setQuestStep) def b_requestActiveQuest(self, questId, localSet = False): if not questId == self.activeQuestId: self.d_requestActiveQuest(questId) if localSet: self.l_setActiveQuest(questId) self.l_requestActiveQuest(questId) b_requestActiveQuest = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(b_requestActiveQuest) def d_requestActiveQuest(self, questId): self.sendUpdate('requestActiveQuest', [ questId]) d_requestActiveQuest = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(d_requestActiveQuest) def l_requestActiveQuest(self, questId): self.b_requestQuestStep(questId) l_requestActiveQuest = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(l_requestActiveQuest) def setActiveQuest(self, questId): self.l_setActiveQuest(questId) setActiveQuest = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(setActiveQuest) def l_setActiveQuest(self, questId): if questId != self.activeQuestId: self.activeQuestId = questId messenger.send('localAvatarActiveQuestId', sentArgs = [ self.activeQuestId]) self.b_requestQuestStep(questId) if self.guiMgr and self.guiMgr.mapPage: questDartName = localAvatar.guiMgr.mapPage.worldMap.mapBall.questDartName if questDartName: localAvatar.guiMgr.mapPage.worldMap.mapBall.updateDartText(questDartName, questId) if self.guiMgr.questPage: self.guiMgr.questPage.titleList.select(questId) l_setActiveQuest = report(types = [ 'frameCount', 'args'], dConfigParam = 'quest-indicator')(l_setActiveQuest) def d_findNewActiveQuest(self, oldQuestId): self.sendUpdate('findNewActiveQuest', [ oldQuestId]) def popupProgressBlocker(self, questId): if questId == 'c3visitJoshamee': localAvatar.guiMgr.showNonPayer(quest = questId, focus = 9) return None elif questId == 'c4.1visitValentina': localAvatar.guiMgr.showStayTuned(quest = questId, focus = 0) return None popupDialogText = PLocalizer.ProgressBlockPopupDialog.get(questId) if popupDialogText: self.popupDialog = PDialog.PDialog(text = popupDialogText, style = OTPDialog.Acknowledge, command = self._DistributedQuestAvatar__cleanupDialog) else: localAvatar.guiMgr.showNonPayer(quest = questId, focus = 9) self.notify.warning('%s: No progressBlock dialog found!' % questId) def _DistributedQuestAvatar__cleanupDialog(self, value = None): if self.popupDialog: self.popupDialog.destroy() del self.popupDialog self.popupDialog = None def d_useDowsingRod(self): self.sendUpdate('useDowsingRod', []) def dowsingRodResult(self, result): if self.isLocal(): if result == QuestConstants.DowsingRodResults.DOWSING_ROD_NOT_AVAILABLE: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodNotAvailable, PiratesGuiGlobals.TextFG6) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_WARMER_FAR: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodWarmerFar, PiratesGuiGlobals.TextFG11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_WARMER: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodWarmer, PiratesGuiGlobals.TextFG11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_WARMER_CLOSE: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodWarmerClose, PiratesGuiGlobals.TextFG11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_COLDER: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodColder, PiratesGuiGlobals.TextFG5) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_COLDER_CLOSE: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodColderClose, PiratesGuiGlobals.TextFG5) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_HOT: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodHot, PiratesGuiGlobals.TextLT11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_SAME: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodSame, PiratesGuiGlobals.TextFG2) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_COMPLETE: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodNotAvailable, PiratesGuiGlobals.TextFG6) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_FIRST_TIME: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodFirstTime, PiratesGuiGlobals.TextFG2)
class DistributedQuestAvatar(QuestAvatarBase.QuestAvatarBase, QuestHolder.QuestHolder): notify = DirectNotifyGlobal.directNotify.newCategory( 'DistributedQuestAvatar') def __init__(self): QuestAvatarBase.QuestAvatarBase.__init__(self) QuestHolder.QuestHolder.__init__(self) self.lastQuestStepRequest = None self.questStep = None self.oldQuestStep = None self.questIndicator = QuestStepIndicator() self.activeQuestId = '' self.activeQuestIdPending = '' self.popupDialog = None return def delete(self): self.activeQuestId = '' self.activeQuestIdPending = '' self.questIndicator.delete() self.questStep = None self.oldQuestStep = None self.lastQuestStepRequest = None return def setQuestHistory(self, history): self.questHistory = history def getQuestHistory(self): return self.questHistory def setQuestLadderHistory(self, history): self.questLadderHistory = history def getQuestLadderHistory(self): return self.questLadderHistory def setCurrentQuestChoiceContainers(self, containers): self.currentQuestChoiceContainers = containers def getCurrentQuestChoiceContainers(self): return self.currentQuestChoiceContainers def requestDropQuest(self, questId): DistributedQuestAvatar.notify.debug('requestDropQuest: %s (%s)' % (questId, self.doId)) container = QuestLadderDB.getContainer(questId) parentContainer = QuestLadderDB.getParentContainer(container) if parentContainer and parentContainer.isChoice(): for ctr in parentContainer.getContainers(): self.sendUpdate('requestDropQuest', [ctr.getQuestId()]) else: self.sendUpdate('requestDropQuest', [questId]) def requestShareQuest(self, questId): DistributedQuestAvatar.notify.debug('requestShareQuest: %s (%s)' % (questId, self.doId)) self.sendUpdate('requestShareQuest', [questId]) def handleQuestDropped(self, droppedQuestId): self.questStatus.handleQuestDropped(droppedQuestId) @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def refreshActiveQuestStep(self, forceClear=False, forceRefresh=False): if self.activeQuestId: if forceRefresh or forceClear: self.lastQuestStepRequest = None if not forceClear: self.b_requestQuestStep(self.activeQuestId) else: self.b_requestQuestStep('') return def questStepAutoRefresh(self): return True @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def b_requestQuestStep(self, questId): if questId: stepRequest = (self.getLocation()[0], questId) if stepRequest[0]: if self.lastQuestStepRequest == stepRequest: if self.questStep: self.l_setQuestStep(self.questStep) elif self.oldQuestStep: self.l_setQuestStep(self.oldQuestStep) else: self.d_requestQuestStep(stepRequest) self.l_requestQuestStep(stepRequest) else: self.d_requestQuestStep(stepRequest) self.l_requestQuestStep(stepRequest) else: self.l_requestQuestStep(None) self.l_setQuestStep(None) return @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def d_requestQuestStep(self, stepRequest): self.sendUpdate('requestQuestStep', [stepRequest[1]]) @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def l_requestQuestStep(self, stepRequest): if stepRequest: self.lastQuestStepRequest = stepRequest self.oldQuestStep = None return @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def setQuestStep(self, questStepArgs): originDoId, stepDoId, typeData = questStepArgs if typeData[0] == 10: typeDict = dict( zip(('stepType', 'posH', 'islandUid', 'targetAreaUid', 'nodeSizes', 'nearOffset', 'nearVis'), typeData)) questStep = QuestStep(*(originDoId, stepDoId), **typeDict) else: questStep = QuestStep(*((originDoId, stepDoId) + typeData)) self.l_setQuestStep(questStep) if questStep == QuestStep.getNullStep(): localAvatar.guiMgr.mapPage.worldMap.mapBall.removeDart() return mapPage = localAvatar.guiMgr.mapPage doId = base.cr.uidMgr.uid2doId.get(questStep.getIsland()) island = base.cr.doId2do.get(doId) if island: pos = island.getPos() if mapPage.worldMap.mapBall.questDartPlaced: localAvatar.guiMgr.mapPage.worldMap.mapBall.updateDart( 'questStep', pos) else: localAvatar.guiMgr.mapPage.addQuestDart('questStep', pos) else: localAvatar.guiMgr.mapPage.removeQuestDart('questStep') @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def l_setQuestStep(self, questStep): if questStep == QuestStep.getNullStep(): self.oldQuestStep = None questStep = None elif not questStep and self.questStep: self.oldQuestStep = self.questStep self.questStep = questStep self.questIndicator.showQuestStep(self.questStep) return @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def b_requestActiveQuest(self, questId, localSet=False): if not questId == self.activeQuestId: self.d_requestActiveQuest(questId) if localSet: self.l_setActiveQuest(questId) self.l_requestActiveQuest(questId) @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def d_requestActiveQuest(self, questId): self.sendUpdate('requestActiveQuest', [questId]) @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def l_requestActiveQuest(self, questId): self.b_requestQuestStep(questId) @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def setActiveQuest(self, questId): self.l_setActiveQuest(questId) @report(types=['frameCount', 'args'], dConfigParam='quest-indicator') def l_setActiveQuest(self, questId): if questId != self.activeQuestId: self.activeQuestId = questId messenger.send('localAvatarActiveQuestId', sentArgs=[self.activeQuestId]) self.b_requestQuestStep(questId) if self.guiMgr and self.guiMgr.mapPage: questDartName = localAvatar.guiMgr.mapPage.worldMap.mapBall.questDartName if questDartName: localAvatar.guiMgr.mapPage.worldMap.mapBall.updateDartText( questDartName, questId) if self.guiMgr.questPage: self.guiMgr.questPage.titleList.select(questId) def d_findNewActiveQuest(self, oldQuestId): self.sendUpdate('findNewActiveQuest', [oldQuestId]) def popupProgressBlocker(self, questId): if questId == 'c3visitJoshamee': localAvatar.guiMgr.showNonPayer(quest=questId, focus=9) return elif questId == 'c4.1visitValentina': localAvatar.guiMgr.showStayTuned(quest=questId, focus=0) return popupDialogText = PLocalizer.ProgressBlockPopupDialog.get(questId) if popupDialogText: self.popupDialog = PDialog.PDialog(text=popupDialogText, style=OTPDialog.Acknowledge, command=self.__cleanupDialog) else: localAvatar.guiMgr.showNonPayer(quest=questId, focus=9) self.notify.warning('%s: No progressBlock dialog found!' % questId) def __cleanupDialog(self, value=None): if self.popupDialog: self.popupDialog.destroy() del self.popupDialog self.popupDialog = None return def d_useDowsingRod(self): self.sendUpdate('useDowsingRod', []) def dowsingRodResult(self, result): if self.isLocal(): if result == QuestConstants.DowsingRodResults.DOWSING_ROD_NOT_AVAILABLE: localAvatar.guiMgr.createWarning( PLocalizer.DowsingRodNotAvailable, PiratesGuiGlobals.TextFG6) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_WARMER_FAR: localAvatar.guiMgr.createWarning( PLocalizer.DowsingRodWarmerFar, PiratesGuiGlobals.TextFG11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_WARMER: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodWarmer, PiratesGuiGlobals.TextFG11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_WARMER_CLOSE: localAvatar.guiMgr.createWarning( PLocalizer.DowsingRodWarmerClose, PiratesGuiGlobals.TextFG11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_COLDER: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodColder, PiratesGuiGlobals.TextFG5) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_COLDER_CLOSE: localAvatar.guiMgr.createWarning( PLocalizer.DowsingRodColderClose, PiratesGuiGlobals.TextFG5) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_HOT: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodHot, PiratesGuiGlobals.TextLT11) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_SAME: localAvatar.guiMgr.createWarning(PLocalizer.DowsingRodSame, PiratesGuiGlobals.TextFG2) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_COMPLETE: localAvatar.guiMgr.createWarning( PLocalizer.DowsingRodNotAvailable, PiratesGuiGlobals.TextFG6) elif result == QuestConstants.DowsingRodResults.DOWSING_ROD_FIRST_TIME: localAvatar.guiMgr.createWarning( PLocalizer.DowsingRodFirstTime, PiratesGuiGlobals.TextFG2)