mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-26 21:22:27 -06:00
194 lines
7.5 KiB
Python
194 lines
7.5 KiB
Python
|
from direct.distributed.DistributedObject import DistributedObject
|
||
|
from direct.distributed.DistributedObjectGlobal import DistributedObjectGlobal
|
||
|
|
||
|
from toontown.chat.ChatGlobals import *
|
||
|
from toontown.parties import PartyGlobals
|
||
|
from toontown.toon import ToonDNA
|
||
|
from toontown.toonbase import TTLocalizer
|
||
|
from toontown.toonbase import ToontownGlobals
|
||
|
|
||
|
|
||
|
class DistributedPartyManager(DistributedObject):
|
||
|
neverDisable = 1
|
||
|
notify = directNotify.newCategory('DistributedPartyManager')
|
||
|
PartyStatusChangedEvent = 'changePartyStatusResponseReceived'
|
||
|
|
||
|
def __init__(self, cr):
|
||
|
DistributedObject.__init__(self, cr)
|
||
|
base.cr.partyManager = self
|
||
|
self.partyPlannerStyle = None
|
||
|
self.partyPlannerName = None
|
||
|
self.showDoid = False
|
||
|
return
|
||
|
|
||
|
def delete(self):
|
||
|
DistributedObject.delete(self)
|
||
|
self.cr.partyManager = None
|
||
|
return
|
||
|
|
||
|
def disable(self):
|
||
|
self.notify.debug("i'm disabling DistributedPartyManager rightnow.")
|
||
|
self.ignore('deallocateZoneIdFromPlannedParty')
|
||
|
self.ignoreAll()
|
||
|
DistributedObject.disable(self)
|
||
|
|
||
|
def generate(self):
|
||
|
self.notify.debug('BASE: generate')
|
||
|
DistributedObject.generate(self)
|
||
|
self.accept('deallocateZoneIdFromPlannedParty', self.deallocateZoneIdFromPlannedParty)
|
||
|
self.announceGenerateName = self.uniqueName('generate')
|
||
|
|
||
|
def deallocateZoneIdFromPlannedParty(self, zoneId):
|
||
|
self.sendUpdate('freeZoneIdFromPlannedParty', [base.localAvatar.doId, zoneId])
|
||
|
|
||
|
def sendAddParty(self, hostId, startTime, endTime, isPrivate, inviteTheme, activities, decorations, inviteeIds):
|
||
|
self.sendUpdate('addPartyRequest', [hostId,
|
||
|
startTime,
|
||
|
endTime,
|
||
|
isPrivate,
|
||
|
inviteTheme,
|
||
|
activities,
|
||
|
decorations,
|
||
|
inviteeIds])
|
||
|
|
||
|
def addPartyResponse(self, hostId, errorCode):
|
||
|
messenger.send('addPartyResponseReceived', [hostId, errorCode])
|
||
|
if hasattr(base.localAvatar, 'creatingNewPartyWithMagicWord'):
|
||
|
if base.localAvatar.creatingNewPartyWithMagicWord:
|
||
|
base.localAvatar.creatingNewPartyWithMagicWord = False
|
||
|
if errorCode == PartyGlobals.AddPartyErrorCode.AllOk:
|
||
|
base.localAvatar.setChatAbsolute('New party entered into database successfully.', CFSpeech | CFTimeout)
|
||
|
else:
|
||
|
base.localAvatar.setChatAbsolute('New party creation failed : %s' % PartyGlobals.AddPartyErrorCode.getString(errorCode), CFSpeech | CFTimeout)
|
||
|
|
||
|
def requestPartyZone(self, avId, zoneId, callback):
|
||
|
if zoneId < 0:
|
||
|
zoneId = 0
|
||
|
self.acceptOnce('requestPartyZoneComplete', callback)
|
||
|
if hasattr(base.localAvatar, 'aboutToPlanParty'):
|
||
|
if base.localAvatar.aboutToPlanParty:
|
||
|
self.sendUpdate('getPartyZone', [avId, zoneId, True])
|
||
|
return
|
||
|
self.sendUpdate('getPartyZone', [avId, zoneId, False])
|
||
|
|
||
|
def receivePartyZone(self, hostId, partyId, zoneId):
|
||
|
if partyId != 0 and zoneId != 0:
|
||
|
if base.localAvatar.doId == hostId:
|
||
|
for partyInfo in base.localAvatar.hostedParties:
|
||
|
if partyInfo.partyId == partyId:
|
||
|
partyInfo.status == PartyGlobals.PartyStatus.Started
|
||
|
|
||
|
messenger.send('requestPartyZoneComplete', [hostId, partyId, zoneId])
|
||
|
|
||
|
def sendChangePrivateRequest(self, partyId, newPrivateStatus):
|
||
|
self.sendUpdate('changePrivateRequest', [partyId, newPrivateStatus])
|
||
|
|
||
|
def changePrivateResponse(self, partyId, newPrivateStatus, errorCode):
|
||
|
if errorCode == PartyGlobals.ChangePartyFieldErrorCode.AllOk:
|
||
|
self.notify.info('succesfully changed private field for the party')
|
||
|
for partyInfo in localAvatar.hostedParties:
|
||
|
if partyInfo.partyId == partyId:
|
||
|
partyInfo.isPrivate = newPrivateStatus
|
||
|
|
||
|
messenger.send('changePartyPrivateResponseReceived', [partyId, newPrivateStatus, errorCode])
|
||
|
else:
|
||
|
messenger.send('changePartyPrivateResponseReceived', [partyId, newPrivateStatus, errorCode])
|
||
|
self.notify.info('FAILED changing private field for the party')
|
||
|
|
||
|
def sendChangePartyStatusRequest(self, partyId, newPartyStatus):
|
||
|
self.sendUpdate('changePartyStatusRequest', [partyId, newPartyStatus])
|
||
|
|
||
|
def changePartyStatusResponse(self, partyId, newPartyStatus, errorCode, beansRefunded):
|
||
|
self.notify.debug('changePartyStatusResponse : partyId=%s newPartyStatus=%s errorCode=%s' % (partyId, newPartyStatus, errorCode))
|
||
|
for partyInfo in localAvatar.hostedParties:
|
||
|
if partyInfo.partyId == partyId:
|
||
|
partyInfo.status = newPartyStatus
|
||
|
|
||
|
messenger.send(self.PartyStatusChangedEvent, [partyId,
|
||
|
newPartyStatus,
|
||
|
errorCode,
|
||
|
beansRefunded])
|
||
|
|
||
|
def setNeverStartedPartyRefunded(self, partyId, newStatus, refund):
|
||
|
partyInfo = None
|
||
|
for pInfo in localAvatar.hostedParties:
|
||
|
if pInfo.partyId == partyId:
|
||
|
partyInfo = pInfo
|
||
|
break
|
||
|
|
||
|
if partyInfo:
|
||
|
partyInfo.status = newStatus
|
||
|
messenger.send(self.PartyStatusChangedEvent, [partyId,
|
||
|
newStatus,
|
||
|
0,
|
||
|
refund])
|
||
|
return
|
||
|
|
||
|
def sendAvToPlayground(self, avId, retCode):
|
||
|
messenger.send(PartyGlobals.KICK_TO_PLAYGROUND_EVENT, [retCode])
|
||
|
self.notify.debug('sendAvToPlayground: %d' % avId)
|
||
|
|
||
|
def leaveParty(self):
|
||
|
if self.isDisabled():
|
||
|
self.notify.warning('DistributedPartyManager disabled; unable to leave party.')
|
||
|
return
|
||
|
self.sendUpdate('exitParty', [localAvatar.zoneId])
|
||
|
|
||
|
def removeGuest(self, ownerId, avId):
|
||
|
self.notify.debug('removeGuest ownerId = %s, avId = %s' % (ownerId, avId))
|
||
|
self.sendUpdate('removeGuest', [ownerId, avId])
|
||
|
|
||
|
def isToonAllowedAtParty(self, avId, partyId):
|
||
|
return PartyGlobals.GoToPartyStatus.AllowedToGo
|
||
|
|
||
|
def getGoToPartyFailedMessage(self, reason):
|
||
|
return ''
|
||
|
|
||
|
def sendAvatarToParty(self, hostId):
|
||
|
DistributedPartyManager.notify.debug('sendAvatarToParty hostId = %s' % hostId)
|
||
|
self.sendUpdate('requestShardIdZoneIdForHostId', [hostId])
|
||
|
|
||
|
def sendShardIdZoneIdToAvatar(self, shardId, zoneId):
|
||
|
DistributedPartyManager.notify.debug('sendShardIdZoneIdToAvatar shardId = %s zoneId = %s' % (shardId, zoneId))
|
||
|
if shardId == 0 or zoneId == 0:
|
||
|
base.cr.playGame.getPlace().handleBookClose()
|
||
|
return
|
||
|
hoodId = ToontownGlobals.PartyHood
|
||
|
if shardId == base.localAvatar.defaultShard:
|
||
|
shardId = None
|
||
|
base.cr.playGame.getPlace().requestLeave({'loader': 'safeZoneLoader',
|
||
|
'where': 'party',
|
||
|
'how': 'teleportIn',
|
||
|
'hoodId': hoodId,
|
||
|
'zoneId': zoneId,
|
||
|
'shardId': shardId,
|
||
|
'avId': -1})
|
||
|
return
|
||
|
|
||
|
def setPartyPlannerStyle(self, dna):
|
||
|
self.partyPlannerStyle = dna
|
||
|
|
||
|
def getPartyPlannerStyle(self):
|
||
|
if self.partyPlannerStyle:
|
||
|
return self.partyPlannerStyle
|
||
|
else:
|
||
|
dna = ToonDNA.ToonDNA()
|
||
|
dna.newToonRandom()
|
||
|
return dna
|
||
|
|
||
|
def setPartyPlannerName(self, name):
|
||
|
self.partyPlannerName = name
|
||
|
|
||
|
def getPartyPlannerName(self):
|
||
|
if self.partyPlannerName:
|
||
|
return self.partyPlannerName
|
||
|
else:
|
||
|
return TTLocalizer.PartyPlannerGenericName
|
||
|
|
||
|
def toggleShowDoid(self):
|
||
|
self.showDoid = not self.showDoid
|
||
|
return self.showDoid
|
||
|
|
||
|
def getShowDoid(self):
|
||
|
return self.showDoid
|