oldschool-toontown/toontown/coghq/StageManagerAI.py
2019-12-30 01:07:56 -05:00

49 lines
1.9 KiB
Python

from direct.directnotify import DirectNotifyGlobal
from . import DistributedStageAI
from toontown.toonbase import ToontownGlobals
from toontown.coghq import StageLayout
from direct.showbase import DirectObject
import random
class StageManagerAI(DirectObject.DirectObject):
notify = DirectNotifyGlobal.directNotify.newCategory('StageManagerAI')
stageId = None
def __init__(self, air):
DirectObject.DirectObject.__init__(self)
self.air = air
def getDoId(self):
return 0
def createStage(self, stageId, players):
for avId in players:
if bboard.has('stageId-%s' % avId):
stageId = bboard.get('stageId-%s' % avId)
break
numFloors = StageLayout.getNumFloors(stageId)
floor = random.randrange(numFloors)
for avId in players:
if bboard.has('stageFloor-%s' % avId):
floor = bboard.get('stageFloor-%s' % avId)
floor = max(0, floor)
floor = min(floor, numFloors - 1)
break
for avId in players:
if bboard.has('stageRoom-%s' % avId):
roomId = bboard.get('stageRoom-%s' % avId)
for i in range(numFloors):
layout = StageLayout.StageLayout(stageId, i)
if roomId in layout.getRoomIds():
floor = i
else:
from toontown.coghq import StageRoomSpecs
roomName = StageRoomSpecs.CashbotStageRoomId2RoomName[roomId]
StageManagerAI.notify.warning('room %s (%s) not found in any floor of stage %s' % (roomId, roomName, stageId))
stageZone = self.air.allocateZone()
stage = DistributedStageAI.DistributedStageAI(self.air, stageId, stageZone, floor, players)
stage.generateWithRequired(stageZone)
return stageZone