toontown-just-works/toontown/estate/DistributedStatuaryAI.py
2024-07-07 18:08:39 -05:00

66 lines
No EOL
2 KiB
Python

from direct.directnotify import DirectNotifyGlobal
from DistributedLawnDecorAI import DistributedLawnDecorAI
import GardenGlobals
import time
FOUR_DAYS = 86400 * 4
class DistributedStatuaryAI(DistributedLawnDecorAI):
notify = DirectNotifyGlobal.directNotify.newCategory("DistributedStatuaryAI")
def calculate(self, lastCheck):
self.attributes = GardenGlobals.PlantAttributes[self.index]
self.growthThresholds = self.attributes.get('growthThresholds', (0, 0))
now = int(time.time())
self.lastCheck = lastCheck
if self.lastCheck == 0:
self.lastCheck = now
self.growthLevel = min((now - self.lastCheck) // FOUR_DAYS, self.growthThresholds[-1] + 1)
self.update()
def getTypeIndex(self):
return self.index
def getWaterLevel(self):
return 1
def getGrowthLevel(self):
return self.growthLevel
def getOptional(self):
return self.data
def update(self):
self.mgr.data['statuary'] = self.mgr.S_pack(self.data, self.lastCheck, self.index, self.growthLevel)
self.mgr.update()
def removeItem(self):
avId = self.air.getAvatarIdFromSender()
self.d_setMovie(GardenGlobals.MOVIE_REMOVE)
def _remove(task):
if not self.air:
return
plot = self.mgr.placePlot(-1)
plot.setPlot(self.plot)
plot.setPos(self.getPos())
plot.setH(self.getH())
plot.setOwnerIndex(self.ownerIndex)
plot.generateWithRequired(self.zoneId)
self.air.writeServerEvent('remove-statuary', avId, plot=self.plot)
self.requestDelete()
self.mgr.objects.remove(self)
self.mgr.data['statuary'] = 0
self.mgr.update()
return task.done
taskMgr.doMethodLater(7, _remove, self.uniqueName('do-remove'))