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)
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())
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)
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)
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