mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-23 03:35:12 -06:00
69 lines
2.5 KiB
Python
69 lines
2.5 KiB
Python
from direct.directnotify import DirectNotifyGlobal
|
|
from direct.distributed.DistributedObject import DistributedObject
|
|
|
|
class DistributedLobbyManager(DistributedObject):
|
|
neverDisable = 1
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedLobbyManager')
|
|
|
|
def __init__(self, cr):
|
|
DistributedObject.__init__(self, cr)
|
|
base.cr.lobbyManager = self
|
|
self.allowUnreleased = False
|
|
|
|
def delete(self):
|
|
DistributedObject.delete(self)
|
|
self.cr.lobbyManager = None
|
|
|
|
def disable(self):
|
|
self.ignore('deallocateZoneIdFromPlannedLobby')
|
|
self.ignoreAll()
|
|
DistributedObject.disable(self)
|
|
|
|
def generate(self):
|
|
DistributedObject.generate(self)
|
|
self.accept('deallocateZoneIdFromPlannedLobby', self.deallocateZoneIdFromPlannedLobby)
|
|
|
|
def deallocateZoneIdFromPlannedLobby(self, zoneId):
|
|
self.sendUpdate('freeZoneIdFromPlannedLobby', [base.localAvatar.doId, zoneId])
|
|
|
|
def allowUnreleasedClient(self):
|
|
return self.allowUnreleased
|
|
|
|
def setAllowUnreleaseClient(self, newValue):
|
|
self.allowUnreleased = newValue
|
|
|
|
def toggleAllowUnreleasedClient(self):
|
|
self.allowUnreleased = not self.allowUnreleased
|
|
return self.allowUnreleased
|
|
|
|
def sendAddLobby(self, hostId):
|
|
self.sendUpdate('addPartyRequest', [hostId])
|
|
|
|
def requestLobbyZone(self, avId, zoneId, callback):
|
|
if zoneId < 0:
|
|
zoneId = 0
|
|
self.acceptOnce('requestLobbyZoneComplete', callback)
|
|
if hasattr(base.localAvatar, 'aboutToCreateLobby'):
|
|
if base.localAvatar.aboutToCreateLobby:
|
|
self.sendUpdate('getLobbyZone', [avId, zoneId, True])
|
|
self.sendUpdate('getLobbyZone', [avId, zoneId, False])
|
|
|
|
def receiveLobbyZone(self, hostId, lobbyId, zoneId):
|
|
if lobbyId != 0 and zoneId != 0:
|
|
if base.localAvatar.doId == hostId:
|
|
lobbyInfo = base.localAvatar.hostedLobby
|
|
if lobbyInfo.lobbyId == lobbyId:
|
|
lobbyInfo.status == LobbyGlobals.LobbyStatus.Open
|
|
messenger.send('requestLobbyZoneComplete', [hostId, lobbyId, zoneId])
|
|
|
|
def leaveLobby(self):
|
|
if self.isDisabled():
|
|
return
|
|
self.sendUpdate('exitLobby', [localAvatar.zoneId])
|
|
|
|
def sendAvatarToLobby(self, hostId):
|
|
self.sendUpdate('requestShardIdZoneIdForHostId', [hostId])
|
|
|
|
def sendShardIdZoneIdToAvatar(self, shardId, zoneId):
|
|
# Avatar goes through door.
|
|
pass
|