69 lines
1.9 KiB
Python
69 lines
1.9 KiB
Python
|
from toontown.toonbase import ToontownGlobals
|
||
|
from toontown.pets import PetMood, PetTraits, PetDetail
|
||
|
|
||
|
class PetHandle:
|
||
|
|
||
|
def __init__(self, avatar):
|
||
|
self.doId = avatar.doId
|
||
|
self.name = avatar.name
|
||
|
self.style = avatar.style
|
||
|
self.ownerId = avatar.ownerId
|
||
|
self.bFake = False
|
||
|
self.cr = avatar.cr
|
||
|
self.traits = PetTraits.PetTraits(avatar.traitSeed, avatar.safeZone, traitValueList=avatar.traitList)
|
||
|
self._grabMood(avatar)
|
||
|
|
||
|
def _grabMood(self, avatar):
|
||
|
avatar.announceGenerate()
|
||
|
avatar.postGenerateMessage()
|
||
|
self.mood = avatar.lastKnownMood.makeCopy()
|
||
|
self.mood.setPet(self)
|
||
|
self.lastKnownMood = self.mood.makeCopy()
|
||
|
self.setLastSeenTimestamp(avatar.lastSeenTimestamp)
|
||
|
self.updateOfflineMood()
|
||
|
|
||
|
def getDoId(self):
|
||
|
return self.doId
|
||
|
|
||
|
def getOwnerId(self):
|
||
|
return self.ownerId
|
||
|
|
||
|
def isPet(self):
|
||
|
return True
|
||
|
|
||
|
def getName(self):
|
||
|
return self.name
|
||
|
|
||
|
def getDNA(self):
|
||
|
return self.style
|
||
|
|
||
|
def getFont(self):
|
||
|
return ToontownGlobals.getToonFont()
|
||
|
|
||
|
def setLastSeenTimestamp(self, timestamp):
|
||
|
self.lastSeenTimestamp = timestamp
|
||
|
|
||
|
def getTimeSinceLastSeen(self):
|
||
|
t = self.cr.getServerTimeOfDay() - self.lastSeenTimestamp
|
||
|
return max(0.0, t)
|
||
|
|
||
|
def updateOfflineMood(self):
|
||
|
self.mood.driftMood(dt=self.getTimeSinceLastSeen(), curMood=self.lastKnownMood)
|
||
|
|
||
|
def getDominantMood(self):
|
||
|
if not hasattr(self, 'mood'):
|
||
|
return PetMood.PetMood.Neutral
|
||
|
return self.mood.getDominantMood()
|
||
|
|
||
|
def uniqueName(self, idString):
|
||
|
return idString + '-' + str(self.getDoId())
|
||
|
|
||
|
def updateMoodFromServer(self, callWhenDone = None):
|
||
|
|
||
|
def handleGotDetails(avatar, callWhenDone = callWhenDone):
|
||
|
self._grabMood(avatar)
|
||
|
if callWhenDone:
|
||
|
callWhenDone()
|
||
|
|
||
|
PetDetail.PetDetail(self.doId, handleGotDetails)
|