def update(self, NPCID, count=0, fCallable=0): oldNPCID = self['NPCID'] self['NPCID'] = NPCID if NPCID != oldNPCID: if self.NPCHead: self.NPCHead.detachNode() self.NPCHead.delete() if NPCID is None: self.showBack() return self.front.show() self.back.hide() self.NPCName['text'] = TTLocalizer.NPCToonNames[NPCID] self.NPCHead = self.createNPCToonHead(NPCID, dimension=self.NPCHeadDim) self.NPCHead.reparentTo(self.front) self.NPCHead.setZ(self.NPCHeadPosZ) track, level, hp, rarity = NPCToons.getNPCTrackLevelHpRarity(NPCID) sosText = self.sosTracks[track] if track == ToontownBattleGlobals.NPC_RESTOCK_GAGS: if level == -1: sosText += ' All' else: sosText += ' ' + self.sosTracks[level] # hide secret cards if NPCToons.isSecret(NPCID): sosText = '???' sosText = TextEncoder.upper(sosText) self.sosTypeInfo['text'] = sosText for i in range(self.maxRarity): if i < rarity: self.rarityStars[i].show() else: self.rarityStars[i].hide() if fCallable: self.sosCallButton.show() self.sosCountInfo.setPos(-0.4, 0, self.sosCountInfoPosZ) self.sosCountInfo['text_scale'] = self.sosCountInfoScale self.sosCountInfo['text_align'] = TextNode.ALeft else: self.sosCallButton.hide() self.sosCountInfo.setPos(0, 0, self.sosCountInfo2PosZ) self.sosCountInfo['text_scale'] = self.sosCountInfo2Scale self.sosCountInfo['text_align'] = TextNode.ACenter if count > 0: countText = TTLocalizer.NPCFriendPanelRemaining % count self.sosCallButton['state'] = DGG.NORMAL else: countText = 'Unavailable' self.sosCallButton['state'] = DGG.DISABLED self.sosCountInfo['text'] = countText return
def update(self, NPCID, count = 0, fCallable = 0): oldNPCID = self['NPCID'] self['NPCID'] = NPCID if NPCID != oldNPCID: if self.NPCHead: self.NPCHead.detachNode() self.NPCHead.delete() if NPCID is None: self.showBack() return self.front.show() self.back.hide() self.NPCName['text'] = TTLocalizer.NPCToonNames[NPCID] self.NPCHead = self.createNPCToonHead(NPCID, dimension=self.NPCHeadDim) self.NPCHead.reparentTo(self.front) self.NPCHead.setZ(self.NPCHeadPosZ) track, level, hp, rarity = NPCToons.getNPCTrackLevelHpRarity(NPCID) sosText = self.sosTracks[track] if track == ToontownBattleGlobals.NPC_RESTOCK_GAGS: if level == -1: sosText += ' All' else: sosText += ' ' + self.sosTracks[level] # hide secret cards if NPCToons.isSecret(NPCID): sosText = '???' sosText = TextEncoder.upper(sosText) self.sosTypeInfo['text'] = sosText for i in range(self.maxRarity): if i < rarity: self.rarityStars[i].show() else: self.rarityStars[i].hide() if fCallable: self.sosCallButton.show() self.sosCountInfo.setPos(-0.4, 0, self.sosCountInfoPosZ) self.sosCountInfo['text_scale'] = self.sosCountInfoScale self.sosCountInfo['text_align'] = TextNode.ALeft else: self.sosCallButton.hide() self.sosCountInfo.setPos(0, 0, self.sosCountInfo2PosZ) self.sosCountInfo['text_scale'] = self.sosCountInfo2Scale self.sosCountInfo['text_align'] = TextNode.ACenter if count > 0: countText = TTLocalizer.NPCFriendPanelRemaining % count self.sosCallButton['state'] = DGG.NORMAL else: countText = 'Unavailable' self.sosCallButton['state'] = DGG.DISABLED self.sosCountInfo['text'] = countText return
def __chooseNPCFriend(self): npcId = self['NPCID'] if NPCToons.isSecret(npcId): self.diag = TTDialog.TTGlobalDialog(message = TTLocalizer.SOSCallSecretQuestion, doneEvent = 'event-sos-confirm', style = TTDialog.YesNo) self.acceptOnce('event-sos-confirm', self.__handleDiagDone) else: self.__chooseNPCFriendYes()
def __chooseNPCFriend(self): npcId = self['NPCID'] if NPCToons.isSecret(npcId): self.diag = TTDialog.TTGlobalDialog( message=TTLocalizer.SOSCallSecretQuestion, doneEvent='event-sos-confirm', style=TTDialog.YesNo) self.acceptOnce('event-sos-confirm', self.__handleDiagDone) else: self.__chooseNPCFriendYes()
def createNPCToonHead(self, NPCID, dimension=0.5): NPCInfo = NPCToons.NPCToonDict[NPCID] dnaList = NPCInfo[2] gender = NPCInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(NPCID, gender) dna = ToonDNA.ToonDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui=1) self.fitGeometry(head, fFlip=1, dimension=dimension) return head
def createNpcToonHead(self, toNpcId): npcInfo = NPCToons.NPCToonDict[toNpcId] dnaList = npcInfo[2] gender = npcInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(toNpcId, gender) dna = AvatarDNA.AvatarDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui=1) self.fitGeometry(head, fFlip=1) return head
def createNPCToonHead(NPCID, dimension = 0.5): NPCInfo = NPCToons.NPCToonDict[NPCID] dnaList = NPCInfo[2] gender = NPCInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(NPCID, gender) dna = ToonDNA.ToonDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui=1) fitGeometry(head, fFlip=1, dimension=dimension) return head
def createNpcToonHead(self, toNpcId): npcInfo = NPCToons.NPCToonDict[toNpcId] dnaList = npcInfo[2] gender = npcInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(toNpcId, gender) dna = AvatarDNA.AvatarDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui = 1) self.fitGeometry(head, fFlip = 1) return head
def createNPCToonHead(self, NPCID, dimension = 0.5): NPCInfo = NPCToons.NPCToonDict[NPCID] dnaList = NPCInfo[2] gender = NPCInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(NPCID, gender) dna = ToonDNA.ToonDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui=1) self.fitGeometry(head, fFlip=1, dimension=dimension) if NPCID == 91917: LaughingManGlobals.addHeadEffect(head, book=True) return head
def createNPCToonHead(self, NPCID, dimension = 0.5): # Given an NPC id create a toon head suitable for framing NPCInfo = NPCToons.NPCToonDict[NPCID] dnaList = NPCInfo[2] gender = NPCInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(NPCID, gender) dna = ToonDNA.ToonDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui = 1) # Insert xform with gets head to uniform size self.fitGeometry(head, fFlip = 1, dimension = dimension) return head
def createNPCToonHead(self, NPCID, dimension=0.5): NPCInfo = NPCToons.NPCToonDict[NPCID] dnaList = NPCInfo[2] gender = NPCInfo[3] if dnaList == 'r': dnaList = NPCToons.getRandomDNA(NPCID, gender) dna = ToonDNA.ToonDNA() dna.newToonFromProperties(*dnaList) head = ToonHead.ToonHead() head.setupHead(dna, forGui=1) self.fitGeometry(head, fFlip=1, dimension=dimension) if NPCID == 91917: LaughingManGlobals.addHeadEffect(head, book=True) return head
def update(self): friendList = sorted(self.friendDict.keys(), reverse=True, key=lambda id: NPCToons.getNPCTrackLevelHpRarity(id)[3]) cardNum = 0 for i in xrange(self.pos, self.pos + 16): card = self.cardList[cardNum] if len(friendList) > i: npcId = friendList[i] card.update(npcId, self.friendDict[npcId], self.callable) self.rightArrow.show() else: card.update(None, 0, self.callable) self.rightArrow.hide() cardNum += 1
def update(self): friendList = sorted( self.friendDict.keys(), reverse=True, key=lambda id: NPCToons.getNPCTrackLevelHpRarity(id)[3]) cardNum = 0 for i in xrange(self.pos, self.pos + 16): card = self.cardList[cardNum] if len(friendList) > i: npcId = friendList[i] card.update(npcId, self.friendDict[npcId], self.callable) self.rightArrow.show() else: card.update(None, 0, self.callable) self.rightArrow.hide() cardNum += 1
def updateDNA(self, description): # Create dna if isinstance(description, ToonDNA.ToonDNA): dna = description else: dna = ToonDNA.ToonDNA() if (isinstance(description, types.ListType) or isinstance(description, types.TupleType)): # Assume it is a property list dna.newToonFromProperties(*description) elif isinstance(description, Datagram): # Create dna straight from datagram dna.makeFromNetString(description) elif isinstance(description, types.StringType): # Assume it is a server string description # Convert to datagram then create dna dna.makeFromNetString(self.convertServerDNAString(description)) elif isinstance(description, types.IntType): # Assume it is an NPC id npcInfo = NPCToons.NPCToonDict[description] properties = npcInfo[2] if properties == 'r': gender = npcInfo[3] properties = NPCToons.getRandomDNA(description, gender) dna.newToonFromProperties(*properties) else: if random() < 0.5: gender = 'm' else: gender = 'f' dna.newToonRandom(gender=gender) if not self.style: # New toon, need to initialize style self.setDNA(dna) else: # Just jump straight to the update function self.updateToonDNA(dna, fForce=1)
def update(self, questDesc): questId, fromNpcId, toNpcId, rewardId, toonProgress = questDesc quest = Quests.getQuest(questId) if rewardId == Quests.NA: finalReward = Quests.getFinalRewardId(questId, fAll=1) transformedReward = Quests.transformReward(finalReward, toonbase.localToon) reward = Quests.getReward(transformedReward) else: reward = Quests.getReward(rewardId) if reward: rewardString = reward.getPosterString() else: rewardString = '' self.rewardText['text'] = rewardString self.fitLabel(self.rewardText) questEntry = Quests.QuestDict.get(questId) if questEntry: tier = questEntry[0] fOptional = Quests.isRewardOptional(tier, rewardId) else: fOptional = 0 if fOptional: self.funQuest.show() else: self.funQuest.hide() fComplete = quest.getCompletionStatus(toonbase.localToon, questDesc) == Quests.COMPLETE fromNpcName = NPCToons.getNPCName(fromNpcId) npcZone = NPCToons.getNPCZone(fromNpcId) hoodId = ZoneUtil.getHoodId(npcZone) branchId = ZoneUtil.getBranchZone(npcZone) if fromNpcId == Quests.ToonHQ: locationName = Localizer.QuestPosterHQLocationName buildingName = Localizer.QuestPosterHQBuildingName streetName = Localizer.QuestPosterHQStreetName else: if fromNpcId == Quests.ToonTailor: locationName = Localizer.QuestPosterTailorLocationName buildingName = Localizer.QuestPosterTailorBuildingName streetName = Localizer.QuestPosterTailorStreetName else: locationName = toonbase.tcr.hoodMgr.getFullnameFromId(hoodId) buildingName = NPCToons.getBuildingTitle(npcZone) streetName = ZoneUtil.getStreetName(branchId) if toNpcId == Quests.ToonHQ: toNpcName = Localizer.QuestPosterHQOfficer toNpcBuildingName = Localizer.QuestPosterHQBuildingName toNpcStreetName = Localizer.QuestPosterHQStreetName toNpcLocationName = Localizer.QuestPosterHQLocationName else: if toNpcId == Quests.ToonTailor: toNpcName = Localizer.QuestPosterTailor toNpcBuildingName = Localizer.QuestPosterTailorBuildingName toNpcStreetName = Localizer.QuestPosterTailorStreetName toNpcLocationName = Localizer.QuestPosterTailorLocationName else: toNpcName = NPCToons.getNPCName(toNpcId) toNpcZone = NPCToons.getNPCZone(toNpcId) toNpcHoodId = ZoneUtil.getHoodId(toNpcZone) toNpcLocationName = toonbase.tcr.hoodMgr.getFullnameFromId( toNpcHoodId) toNpcBuildingName = NPCToons.getBuildingTitle(toNpcZone) toNpcBranchId = ZoneUtil.getBranchZone(toNpcZone) toNpcStreetName = ZoneUtil.getStreetName(toNpcBranchId) lPos = Vec3(0, 0, 0.13) lIconGeom = None lIconGeomScale = 1 rIconGeom = None rIconGeomScale = 1 infoText = '' infoZ = -0.0625 auxText = None auxTextPos = Vec3(0, 0, 0.12) headlineString = quest.getHeadlineString() captions = map(string.capwords, quest.getObjectiveStrings()) imageColor = Vec4(*self.colors['white']) if quest.getType() == Quests.DeliverGagQuest or quest.getType( ) == Quests.DeliverItemQuest: frameBgColor = 'red' if quest.getType() == Quests.DeliverGagQuest: invModel = loader.loadModelOnce( 'phase_3.5/models/gui/inventory_icons') track, item = quest.getGagType() lIconGeom = invModel.find('**/' + AvPropsNew[track][item]) invModel.removeNode() else: bookModel = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/package') lIconGeomScale = 0.12 bookModel.removeNode() if not fComplete: captions.append(toNpcName) auxText = Localizer.QuestPosterAuxTo auxTextPos.setZ(0.12) lPos.setX(-0.18) infoText = Localizer.QuestPageDestination % ( toNpcBuildingName, toNpcStreetName, toNpcLocationName) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL else: if quest.getType() == Quests.RecoverItemQuest: frameBgColor = 'green' bookModel = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/package') lIconGeomScale = 0.12 bookModel.removeNode() if not fComplete: rIconGeomScale = IMAGE_SCALE_SMALL holder = quest.getHolder() holderType = quest.getHolderType() if holder == Quests.Any: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') cogIcons.removeNode() lPos.setX(-0.18) auxText = Localizer.QuestPosterAuxFrom else: if holder == Quests.AnyFish: headlineString = 'GO FISHING' auxText = Localizer.QuestPosterAuxFor auxTextPos.setX(-0.18) captions = captions[:1] else: if holderType == 'track': cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons') if holder == 'c': icon = cogIcons.find('**/CorpIcon') else: if holder == 's': icon = cogIcons.find('**/SalesIcon') else: if holder == 'l': icon = cogIcons.find( '**/LegalIcon') else: if holder == 'm': icon = cogIcons.find( '**/MoneyIcon') rIconGeom = icon.copyTo(hidden) rIconGeom.setColor( Suit.Suit.medallionColors[holder]) rIconGeomScale = 0.12 cogIcons.removeNode() else: if holderType == 'level': cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() else: rIconGeom = self.createSuitHead(holder) lPos.setX(-0.18) auxText = Localizer.QuestPosterAuxFrom infoText = string.capwords(quest.getLocationName()) if infoText == '': infoText = Localizer.QuestPosterAnywhere else: if quest.getType() == Quests.VisitQuest: frameBgColor = 'brown' captions[0] = '%s' % toNpcName lIconGeom = self.createNpcToonHead(toNpcId) lIconGeomScale = IMAGE_SCALE_SMALL if not fComplete: infoText = Localizer.QuestPageDestination % ( toNpcBuildingName, toNpcStreetName, toNpcLocationName) else: if quest.getType() == Quests.TrackChoiceQuest: frameBgColor = 'green' invModel = loader.loadModelOnce( 'phase_3.5/models/gui/inventory_icons') track1, track2 = quest.getChoices() lIconGeom = invModel.find('**/' + AvPropsNew[track1][1]) if not fComplete: auxText = Localizer.QuestPosterAuxOr lPos.setX(-0.18) rIconGeom = invModel.find('**/' + AvPropsNew[track2][1]) infoText = Localizer.QuestPageNameAndDestination % ( toNpcName, toNpcBuildingName, toNpcStreetName, toNpcLocationName) infoZ = -0.02 invModel.removeNode() else: if quest.getType() == Quests.BuildingQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_corp' ) else: if track == 'l': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_legal' ) else: if track == 'm': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_money' ) else: if track == 's': lIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_sales' ) else: bookModel = loader.loadModelCopy( 'phase_3.5/models/gui/stickerbook_gui' ) lIconGeom = bookModel.find( '**/COG_building') bookModel.removeNode() if lIconGeom and track != Quests.Any: self.loadElevator(lIconGeom, numFloors) self.fitGeometry(lIconGeom, fFlip=1) lIconGeomScale = IMAGE_SCALE_SMALL else: lIconGeomScale = 0.13 if not fComplete: infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere else: if quest.getType() == Quests.BuildingNewbieQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_corp' ) else: if track == 'l': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_legal' ) else: if track == 'm': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_money' ) else: if track == 's': rIconGeom = loader.loadModelCopy( 'phase_5/models/modules/suit_landmark_sales' ) else: bookModel = loader.loadModelCopy( 'phase_3.5/models/gui/stickerbook_gui' ) rIconGeom = bookModel.find( '**/COG_building') bookModel.removeNode() if rIconGeom and track != Quests.Any: self.loadElevator(rIconGeom, numFloors) self.fitGeometry(rIconGeom, fFlip=1) rIconGeomScale = IMAGE_SCALE_SMALL else: rIconGeomScale = 0.13 if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer.QuestsCogNewbieQuestCaption % quest.getNewbieLevel() ] captions.append( map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX(-0.18) self.laffMeter = self.createLaffMeter( quest.getNewbieLevel()) self.laffMeter.setScale(0.04) lIconGeom = None infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale else: if quest.getType() == Quests.FriendQuest: frameBgColor = 'brown' gui = loader.loadModelOnce( 'phase_3.5/models/gui/friendslist_gui') lIconGeom = gui.find( '**/FriendsBox_Closed') lIconGeomScale = 0.45 gui.removeNode() infoText = Localizer.QuestPosterAnywhere else: if quest.getType( ) == Quests.FriendNewbieQuest: frameBgColor = 'brown' gui = loader.loadModelOnce( 'phase_3.5/models/gui/friendslist_gui' ) lIconGeom = gui.find( '**/FriendsBox_Closed') lIconGeomScale = 0.45 gui.removeNode() infoText = Localizer.QuestPosterAnywhere else: if quest.getType( ) == Quests.TrolleyQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui' ) lIconGeom = gui.find('**/trolley') lIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground else: if quest.getType( ) == Quests.MinigameNewbieQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce( 'phase_3.5/models/gui/stickerbook_gui' ) rIconGeom = gui.find( '**/trolley') rIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground if not fComplete: captions = [ Localizer. QuestsMinigameNewbieQuestCaption % quest.getNewbieLevel() ] captions.append( map( string.capwords, quest. getObjectiveStrings( ))) auxText = Localizer.QuestsMinigameNewbieQuestAux lPos.setX(-0.18) self.laffMeter = self.createLaffMeter( quest.getNewbieLevel()) self.laffMeter.setScale( 0.04) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale else: frameBgColor = 'blue' if quest.getType( ) == Quests.CogTrackQuest: dept = quest.getCogTrack() cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) lIconGeomScale = 0.13 if dept == 'c': icon = cogIcons.find( '**/CorpIcon') else: if dept == 's': icon = cogIcons.find( '**/SalesIcon') else: if dept == 'l': icon = cogIcons.find( '**/LegalIcon' ) else: if dept == 'm': icon = cogIcons.find( '**/MoneyIcon' ) lIconGeom = icon.copyTo( hidden) lIconGeom.setColor( Suit.Suit. medallionColors[dept]) cogIcons.removeNode() else: if quest.getType( ) == Quests.CogQuest: if quest.getCogType( ) != Quests.Any: lIconGeom = self.createSuitHead( quest. getCogType()) lIconGeomScale = IMAGE_SCALE_SMALL else: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) lIconGeom = cogIcons.find( '**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode( ) else: if quest.getType( ) == Quests.CogLevelQuest: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) lIconGeom = cogIcons.find( '**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode( ) else: if quest.getType( ) == Quests.CogNewbieQuest: if quest.getCogType( ) != Quests.Any: rIconGeom = self.createSuitHead( quest. getCogType( )) rIconGeomScale = IMAGE_SCALE_SMALL else: cogIcons = loader.loadModelOnce( 'phase_3/models/gui/cog_icons' ) rIconGeom = cogIcons.find( '**/cog' ) rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode( ) if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer . QuestsCogNewbieQuestCaption % quest. getNewbieLevel( ) ] captions.append( map( string . capwords, quest . getObjectiveStrings( ))) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX( -0.18) self.laffMeter = self.createLaffMeter( quest. getNewbieLevel( )) self.laffMeter.setScale( 0.04) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale if not fComplete: infoText = string.capwords( quest.getLocationName( )) if infoText == '': infoText = Localizer.QuestPosterAnywhere if fComplete: textColor = (0, 0.3, 0, 1) imageColor = Vec4(*self.colors['lightGreen']) lPos.setX(-0.18) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL captions = captions[:1] captions.append(toNpcName) auxText = Localizer.QuestPosterAuxReturnTo headlineString = 'COMPLETE' infoText = Localizer.QuestPageDestination % ( toNpcBuildingName, toNpcStreetName, toNpcLocationName) if self.laffMeter != None: self.laffMeter.reparentTo(hidden) self.laffMeter.destroy() self.laffMeter = None else: textColor = self.normalTextColor self.show() self['image_color'] = imageColor self.headline['text_fg'] = textColor self.headline['text'] = headlineString self.lPictureFrame.show() self.lPictureFrame.setPos(lPos) self.lPictureFrame['text'] = captions[0] self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) if len(captions) > 1: self.rPictureFrame.show() self.rPictureFrame['text'] = captions[1] self.rPictureFrame['image_color'] = Vec4( *self.colors[frameBgColor]) else: self.rPictureFrame.hide() self.lQuestIcon['geom'] = lIconGeom self.lQuestIcon['geom_pos'] = (0, 10, 0) if lIconGeom: self.lQuestIcon['geom_scale'] = lIconGeomScale if self.laffMeter != None: self.laffMeter.reparentTo(self.lQuestIcon) self.rQuestIcon['geom'] = rIconGeom self.rQuestIcon['geom_pos'] = (0, 10, 0) if rIconGeom: self.rQuestIcon['geom_scale'] = rIconGeomScale self.questInfo['text'] = infoText self.questInfo.setZ(infoZ) self.fitLabel(self.questInfo) if auxText: self.auxText.show() self.auxText['text'] = auxText self.auxText.setPos(auxTextPos) else: self.auxText.hide() self.bind(WITHIN, self.mouseEnterPoster) self.bind(WITHOUT, self.mouseExitPoster) numQuestItems = quest.getNumQuestItems() if fComplete or numQuestItems <= 1: self.questProgress.hide() else: self.questProgress.show() self.questProgress['value'] = toonProgress self.questProgress['range'] = numQuestItems self.questProgress['text'] = quest.getProgressString( toonbase.localToon, questDesc) return
def update(self, questDesc): (questId, fromNpcId, toNpcId, rewardId, toonProgress) = questDesc quest = Quests.getQuest(questId) if rewardId == Quests.NA: finalReward = Quests.getFinalRewardId(questId, fAll = 1) transformedReward = Quests.transformReward(finalReward, toonbase.localToon) reward = Quests.getReward(transformedReward) else: reward = Quests.getReward(rewardId) if reward: rewardString = reward.getPosterString() else: rewardString = '' self.rewardText['text'] = rewardString self.fitLabel(self.rewardText) questEntry = Quests.QuestDict.get(questId) if questEntry: tier = questEntry[0] fOptional = Quests.isRewardOptional(tier, rewardId) else: fOptional = 0 if fOptional: self.funQuest.show() else: self.funQuest.hide() fComplete = quest.getCompletionStatus(toonbase.localToon, questDesc) == Quests.COMPLETE fromNpcName = NPCToons.getNPCName(fromNpcId) npcZone = NPCToons.getNPCZone(fromNpcId) hoodId = ZoneUtil.getHoodId(npcZone) branchId = ZoneUtil.getBranchZone(npcZone) if fromNpcId == Quests.ToonHQ: locationName = Localizer.QuestPosterHQLocationName buildingName = Localizer.QuestPosterHQBuildingName streetName = Localizer.QuestPosterHQStreetName elif fromNpcId == Quests.ToonTailor: locationName = Localizer.QuestPosterTailorLocationName buildingName = Localizer.QuestPosterTailorBuildingName streetName = Localizer.QuestPosterTailorStreetName else: locationName = toonbase.tcr.hoodMgr.getFullnameFromId(hoodId) buildingName = NPCToons.getBuildingTitle(npcZone) streetName = ZoneUtil.getStreetName(branchId) if toNpcId == Quests.ToonHQ: toNpcName = Localizer.QuestPosterHQOfficer toNpcBuildingName = Localizer.QuestPosterHQBuildingName toNpcStreetName = Localizer.QuestPosterHQStreetName toNpcLocationName = Localizer.QuestPosterHQLocationName elif toNpcId == Quests.ToonTailor: toNpcName = Localizer.QuestPosterTailor toNpcBuildingName = Localizer.QuestPosterTailorBuildingName toNpcStreetName = Localizer.QuestPosterTailorStreetName toNpcLocationName = Localizer.QuestPosterTailorLocationName else: toNpcName = NPCToons.getNPCName(toNpcId) toNpcZone = NPCToons.getNPCZone(toNpcId) toNpcHoodId = ZoneUtil.getHoodId(toNpcZone) toNpcLocationName = toonbase.tcr.hoodMgr.getFullnameFromId(toNpcHoodId) toNpcBuildingName = NPCToons.getBuildingTitle(toNpcZone) toNpcBranchId = ZoneUtil.getBranchZone(toNpcZone) toNpcStreetName = ZoneUtil.getStreetName(toNpcBranchId) lPos = Vec3(0, 0, 0.13) lIconGeom = None lIconGeomScale = 1 rIconGeom = None rIconGeomScale = 1 infoText = '' infoZ = -0.0625 auxText = None auxTextPos = Vec3(0, 0, 0.12) headlineString = quest.getHeadlineString() captions = map(string.capwords, quest.getObjectiveStrings()) imageColor = Vec4(*self.colors['white']) if quest.getType() == Quests.DeliverGagQuest or quest.getType() == Quests.DeliverItemQuest: frameBgColor = 'red' if quest.getType() == Quests.DeliverGagQuest: invModel = loader.loadModelOnce('phase_3.5/models/gui/inventory_icons') (track, item) = quest.getGagType() lIconGeom = invModel.find('**/' + AvPropsNew[track][item]) invModel.removeNode() else: bookModel = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/package') lIconGeomScale = 0.12 bookModel.removeNode() if not fComplete: captions.append(toNpcName) auxText = Localizer.QuestPosterAuxTo auxTextPos.setZ(0.12) lPos.setX(-0.17999999999999999) infoText = Localizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL elif quest.getType() == Quests.RecoverItemQuest: frameBgColor = 'green' bookModel = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/package') lIconGeomScale = 0.12 bookModel.removeNode() if not fComplete: rIconGeomScale = IMAGE_SCALE_SMALL holder = quest.getHolder() holderType = quest.getHolderType() if holder == Quests.Any: cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') cogIcons.removeNode() lPos.setX(-0.17999999999999999) auxText = Localizer.QuestPosterAuxFrom elif holder == Quests.AnyFish: headlineString = 'GO FISHING' auxText = Localizer.QuestPosterAuxFor auxTextPos.setX(-0.17999999999999999) captions = captions[:1] elif holderType == 'track': cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') if holder == 'c': icon = cogIcons.find('**/CorpIcon') elif holder == 's': icon = cogIcons.find('**/SalesIcon') elif holder == 'l': icon = cogIcons.find('**/LegalIcon') elif holder == 'm': icon = cogIcons.find('**/MoneyIcon') rIconGeom = icon.copyTo(hidden) rIconGeom.setColor(Suit.Suit.medallionColors[holder]) rIconGeomScale = 0.12 cogIcons.removeNode() elif holderType == 'level': cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() else: rIconGeom = self.createSuitHead(holder) lPos.setX(-0.17999999999999999) auxText = Localizer.QuestPosterAuxFrom infoText = string.capwords(quest.getLocationName()) if infoText == '': infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.VisitQuest: frameBgColor = 'brown' captions[0] = '%s' % toNpcName lIconGeom = self.createNpcToonHead(toNpcId) lIconGeomScale = IMAGE_SCALE_SMALL if not fComplete: infoText = Localizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName) elif quest.getType() == Quests.TrackChoiceQuest: frameBgColor = 'green' invModel = loader.loadModelOnce('phase_3.5/models/gui/inventory_icons') (track1, track2) = quest.getChoices() lIconGeom = invModel.find('**/' + AvPropsNew[track1][1]) if not fComplete: auxText = Localizer.QuestPosterAuxOr lPos.setX(-0.17999999999999999) rIconGeom = invModel.find('**/' + AvPropsNew[track2][1]) infoText = Localizer.QuestPageNameAndDestination % (toNpcName, toNpcBuildingName, toNpcStreetName, toNpcLocationName) infoZ = -0.02 invModel.removeNode() elif quest.getType() == Quests.BuildingQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_corp') elif track == 'l': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_legal') elif track == 'm': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_money') elif track == 's': lIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_sales') else: bookModel = loader.loadModelCopy('phase_3.5/models/gui/stickerbook_gui') lIconGeom = bookModel.find('**/COG_building') bookModel.removeNode() if lIconGeom and track != Quests.Any: self.loadElevator(lIconGeom, numFloors) self.fitGeometry(lIconGeom, fFlip = 1) lIconGeomScale = IMAGE_SCALE_SMALL else: lIconGeomScale = 0.13 if not fComplete: infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.BuildingNewbieQuest: frameBgColor = 'blue' track = quest.getBuildingTrack() numFloors = quest.getNumFloors() if track == 'c': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_corp') elif track == 'l': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_legal') elif track == 'm': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_money') elif track == 's': rIconGeom = loader.loadModelCopy('phase_5/models/modules/suit_landmark_sales') else: bookModel = loader.loadModelCopy('phase_3.5/models/gui/stickerbook_gui') rIconGeom = bookModel.find('**/COG_building') bookModel.removeNode() if rIconGeom and track != Quests.Any: self.loadElevator(rIconGeom, numFloors) self.fitGeometry(rIconGeom, fFlip = 1) rIconGeomScale = IMAGE_SCALE_SMALL else: rIconGeomScale = 0.13 if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer.QuestsCogNewbieQuestCaption % quest.getNewbieLevel()] captions.append(map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX(-0.17999999999999999) self.laffMeter = self.createLaffMeter(quest.getNewbieLevel()) self.laffMeter.setScale(0.040000000000000001) lIconGeom = None infoText = quest.getLocationName() if infoText == '': infoText = Localizer.QuestPosterAnywhere else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale elif quest.getType() == Quests.FriendQuest: frameBgColor = 'brown' gui = loader.loadModelOnce('phase_3.5/models/gui/friendslist_gui') lIconGeom = gui.find('**/FriendsBox_Closed') lIconGeomScale = 0.45000000000000001 gui.removeNode() infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.FriendNewbieQuest: frameBgColor = 'brown' gui = loader.loadModelOnce('phase_3.5/models/gui/friendslist_gui') lIconGeom = gui.find('**/FriendsBox_Closed') lIconGeomScale = 0.45000000000000001 gui.removeNode() infoText = Localizer.QuestPosterAnywhere elif quest.getType() == Quests.TrolleyQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') lIconGeom = gui.find('**/trolley') lIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground elif quest.getType() == Quests.MinigameNewbieQuest: frameBgColor = 'lightBlue' gui = loader.loadModelOnce('phase_3.5/models/gui/stickerbook_gui') rIconGeom = gui.find('**/trolley') rIconGeomScale = 0.13 gui.removeNode() infoText = Localizer.QuestPosterPlayground if not fComplete: captions = [ Localizer.QuestsMinigameNewbieQuestCaption % quest.getNewbieLevel()] captions.append(map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsMinigameNewbieQuestAux lPos.setX(-0.17999999999999999) self.laffMeter = self.createLaffMeter(quest.getNewbieLevel()) self.laffMeter.setScale(0.040000000000000001) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale else: frameBgColor = 'blue' if quest.getType() == Quests.CogTrackQuest: dept = quest.getCogTrack() cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') lIconGeomScale = 0.13 if dept == 'c': icon = cogIcons.find('**/CorpIcon') elif dept == 's': icon = cogIcons.find('**/SalesIcon') elif dept == 'l': icon = cogIcons.find('**/LegalIcon') elif dept == 'm': icon = cogIcons.find('**/MoneyIcon') lIconGeom = icon.copyTo(hidden) lIconGeom.setColor(Suit.Suit.medallionColors[dept]) cogIcons.removeNode() elif quest.getType() == Quests.CogQuest: if quest.getCogType() != Quests.Any: lIconGeom = self.createSuitHead(quest.getCogType()) lIconGeomScale = IMAGE_SCALE_SMALL else: cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') lIconGeom = cogIcons.find('**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() elif quest.getType() == Quests.CogLevelQuest: cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') lIconGeom = cogIcons.find('**/cog') lIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() elif quest.getType() == Quests.CogNewbieQuest: if quest.getCogType() != Quests.Any: rIconGeom = self.createSuitHead(quest.getCogType()) rIconGeomScale = IMAGE_SCALE_SMALL else: cogIcons = loader.loadModelOnce('phase_3/models/gui/cog_icons') rIconGeom = cogIcons.find('**/cog') rIconGeomScale = IMAGE_SCALE_SMALL cogIcons.removeNode() if not fComplete: headlineString = Localizer.QuestsNewbieQuestHeadline captions = [ Localizer.QuestsCogNewbieQuestCaption % quest.getNewbieLevel()] captions.append(map(string.capwords, quest.getObjectiveStrings())) auxText = Localizer.QuestsCogNewbieQuestAux lPos.setX(-0.17999999999999999) self.laffMeter = self.createLaffMeter(quest.getNewbieLevel()) self.laffMeter.setScale(0.040000000000000001) lIconGeom = None else: lIconGeom = rIconGeom lIconGeomScale = rIconGeomScale if not fComplete: infoText = string.capwords(quest.getLocationName()) if infoText == '': infoText = Localizer.QuestPosterAnywhere if fComplete: textColor = (0, 0.29999999999999999, 0, 1) imageColor = Vec4(*self.colors['lightGreen']) lPos.setX(-0.17999999999999999) rIconGeom = self.createNpcToonHead(toNpcId) rIconGeomScale = IMAGE_SCALE_SMALL captions = captions[:1] captions.append(toNpcName) auxText = Localizer.QuestPosterAuxReturnTo headlineString = 'COMPLETE' infoText = Localizer.QuestPageDestination % (toNpcBuildingName, toNpcStreetName, toNpcLocationName) if self.laffMeter != None: self.laffMeter.reparentTo(hidden) self.laffMeter.destroy() self.laffMeter = None else: textColor = self.normalTextColor self.show() self['image_color'] = imageColor self.headline['text_fg'] = textColor self.headline['text'] = headlineString self.lPictureFrame.show() self.lPictureFrame.setPos(lPos) self.lPictureFrame['text'] = captions[0] self.lPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) if len(captions) > 1: self.rPictureFrame.show() self.rPictureFrame['text'] = captions[1] self.rPictureFrame['image_color'] = Vec4(*self.colors[frameBgColor]) else: self.rPictureFrame.hide() self.lQuestIcon['geom'] = lIconGeom self.lQuestIcon['geom_pos'] = (0, 10, 0) if lIconGeom: self.lQuestIcon['geom_scale'] = lIconGeomScale if self.laffMeter != None: self.laffMeter.reparentTo(self.lQuestIcon) self.rQuestIcon['geom'] = rIconGeom self.rQuestIcon['geom_pos'] = (0, 10, 0) if rIconGeom: self.rQuestIcon['geom_scale'] = rIconGeomScale self.questInfo['text'] = infoText self.questInfo.setZ(infoZ) self.fitLabel(self.questInfo) if auxText: self.auxText.show() self.auxText['text'] = auxText self.auxText.setPos(auxTextPos) else: self.auxText.hide() self.bind(WITHIN, self.mouseEnterPoster) self.bind(WITHOUT, self.mouseExitPoster) numQuestItems = quest.getNumQuestItems() if fComplete or numQuestItems <= 1: self.questProgress.hide() else: self.questProgress.show() self.questProgress['value'] = toonProgress self.questProgress['range'] = numQuestItems self.questProgress['text'] = quest.getProgressString(toonbase.localToon, questDesc)
def update(self, NPCID, count=0, fCallable=0): # Record ID for next update oldNPCID = self['NPCID'] self['NPCID'] = NPCID if NPCID != oldNPCID: # Update things that only change when NPC ID changes if self.NPCHead: # New NPC, get rid of old head if it exists self.NPCHead.detachNode() self.NPCHead.delete() if NPCID is None: # Show back of card self.showBack() return # Show front of card self.front.show() self.back.hide() # Update labels self.NPCName['text'] = TTLocalizer.NPCToonNames[NPCID] # Creat new toon head self.NPCHead = self.createNPCToonHead(NPCID, dimension = 1.4) self.NPCHead.reparentTo(self.front) self.NPCHead.setZ(0.3) # Get details about toon track, level, hp, rarity = NPCToons.getNPCTrackLevelHpRarity(NPCID) # Update sos type info sosText = self.sosTracks[track] if track == ToontownBattleGlobals.NPC_RESTOCK_GAGS: # In this case level is the track being restocked if level == -1: sosText += " All" else: sosText += " " + self.sosTracks[level] sosText = TextEncoder.upper(sosText) self.sosTypeInfo['text'] = sosText # Update Rarity stars for i in range(self.maxRarity): if i < rarity: self.rarityStars[i].show() else: self.rarityStars[i].hide() if fCallable: self.sosCallButton.show() self.sosCountInfo.setPos(-0.4, 0, -1.54) self.sosCountInfo['text_scale'] = 0.28 self.sosCountInfo['text_align'] = TextNode.ALeft else: self.sosCallButton.hide() self.sosCountInfo.setPos(0, 0, -1.5) self.sosCountInfo['text_scale'] = 0.4 self.sosCountInfo['text_align'] = TextNode.ACenter if count > 0: countText = (TTLocalizer.NPCFriendPanelRemaining % (count)) self.sosCallButton['state'] = DGG.NORMAL else: countText = "Unavailable" self.sosCallButton['state'] = DGG.DISABLED self.sosCountInfo['text'] = countText