def handleMessage(self, fieldName, args=[], sendToId=None, reciever=None):
     if fieldName == 'requestBoard':
         if (sendToId in self.fullSeat2doId) or (self.fullSeat2doId[args[0]] != 0):
             return None
         if self.clockNode.currentTime == 0:
             self.fsm.request('waitCountdown', [globalClockDelta.getFrameNetworkTime()])
         if sendToId == base.localAvatar.doId:
             TTSendBuffer.TTSendBuffer.queued_messages.append((self.objectId, 'resyncTime', [], base.localAvatar.doId))
         self.fullSeat2doId[args[0]] = sendToId
         if reciever:
             base.cr.doId2do.get(sendToId).setPos(self.tablecloth.getPos())
         self.fillSlot(args[0], sendToId)
     elif fieldName == 'requestExit':
         if not sendToId in self.fullSeat2doId:
             return None
         if sendToId == base.localAvatar.doId:
             base.cr.playGame.getPlace().trolley.disableExitButton()
             for queuedMessage in deepcopy(TTSendBuffer.TTSendBuffer.queued_messages):
                 if queuedMessage[1] in ('requestBoard', 'resyncTime'):
                     index = TTSendBuffer.TTSendBuffer.queued_messages.index(queuedMessage)
                     del TTSendBuffer.TTSendBuffer.queued_messages[index]
         seatIndex = self.fullSeat2doId.index(sendToId)
         self.fullSeat2doId[seatIndex] = 0
         if self.fullSeat2doId == [0, 0, 0, 0]:
             self.clockNode.stop()
             self.clockNode.reset()
             ts = globalClockDelta.getFrameNetworkTime()
             self.setState('waitEmpty', self.seed, ts)
         self.emptySlot(seatIndex, sendToId, globalClockDelta.getFrameNetworkTime())
     elif fieldName == 'doneExit':
         distributedObject = base.cr.doId2do.get(sendToId)
         if distributedObject:
             distributedObject.startSmooth()
     elif fieldName == 'resyncTime':
         self.clockNode.countdown(args[0], self.handleExitButton)
Example #2
0
 def createDistributedPicnicBasket(self, tn):
     distObj = DistributedFFPicnicBasket.DistributedFFPicnicBasket(ToonLandRepository.ToonLandRepository)
     distObj.setTableNumber(tn)
     distObj.setPosHpr(*PicnicTablePositions[(tn - 1)])
     ToonLandRepository.ToonLandRepository.createDistributedObject(distObj=distObj,
      parentId=base.localAvatar.defaultShard, zoneId=PlaygroundGlobals.FUNNY_FARM,
      doId=eval('NetworkingGlobals.DISTRIBUTED_FF_PICNIC_BASKET_%d' % tn), sendFormatGenerate=False)
     distObj.setState('waitEmpty', tn, globalClockDelta.getFrameNetworkTime())
Example #3
0
 def setAvatarState(self, avId, slotIndex, isBoarded):
     if isBoarded:
         if self.fullSeat2doId[slotIndex]:
             return None
         if not self.clockNode.currentTime:
             self.fsm.request('waitCountdown', [globalClockDelta.getFrameNetworkTime()])
         if base.localAvatar.doId in self.fullSeat2doId:
             self.d_setClockTime(avId, self.clockNode.currentTime)
         self.fullSeat2doId[slotIndex] = avId
         self.fillSlot(slotIndex, avId)
     else:
         if self.fullSeat2doId[slotIndex] != avId:
             return None
         if avId == base.localAvatar.doId:
             base.cr.playGame.getPlace().trolley.disableExitButton()
         self.fullSeat2doId[slotIndex] = 0
         ts = globalClockDelta.getFrameNetworkTime()
         if self.fullSeat2doId == ([0] * 4):
             self.clockNode.stop()
             self.clockNode.reset()
             self.setState('waitEmpty', self.seed, ts)
         self.emptySlot(slotIndex, avId, ts)
Example #4
0
def loadPicnicTable(objectId, tn, seed, *posHpr):
    from toontown.toon.LocalToon import globalClockDelta
    picnicTable = DistributedPicnicBasket.DistributedPicnicBasket(base.cr)
    picnicTable.objectId = objectId
    picnicTable.doId = picnicTable.objectId
    picnicTable.generateInit()
    picnicTable.generate()
    picnicTable.setTableNumber(tn)
    picnicTable.setPosHpr(*posHpr)
    picnicTable.announceGenerate()
    if picnicTable.activeState != 6:
        picnicTable.activeState = 6
    ts = globalClockDelta.getFrameNetworkTime()
    picnicTable.setState('waitEmpty', seed, ts)
    TTSendBuffer.TTSendBuffer.networking_objects[objectId] = picnicTable
    TTSendBuffer.TTSendBuffer.temporary_objects.append(objectId)
Example #5
0
 def setClockTime(self, senderId, receiverId, clockTime):
     if (not self.gotClockTime) and (senderId in self.fullSeat2doId) and (receiverId == base.localAvatar.doId):
         if not self.clockNode.currentTime:
             self.fsm.request('waitCountdown', [globalClockDelta.getFrameNetworkTime()])
         self.clockNode.countdown(clockTime, self.handleExitButton)
         self.gotClockTime = True