57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
from direct.directnotify.DirectNotifyGlobal import *
|
|
from direct.showbase import DirectObject
|
|
from panda3d.core import *
|
|
from toontown.golf import DistributedGolfCourseAI
|
|
|
|
|
|
RequestHole = {}
|
|
|
|
|
|
def GolfManagerAI():
|
|
if not hasattr(simbase, 'golf'):
|
|
simbase.golf = __GolfManagerAI()
|
|
return simbase.golf
|
|
|
|
|
|
class __GolfManagerAI(DirectObject.DirectObject):
|
|
notify = directNotify.newCategory('GolfManagerAI')
|
|
|
|
def __init__(self):
|
|
DirectObject.DirectObject.__init__(self)
|
|
self.courseList = []
|
|
|
|
def delete(self):
|
|
DirectObject.DirectObject.delete(self)
|
|
|
|
def readyGolfCourse(self, avIds, courseId = 0):
|
|
self.notify.debug('readyGolfCourse avIds=%s courseId=%d' % (avIds, courseId))
|
|
golfZone = simbase.air.allocateZone()
|
|
preferredHoleId = None
|
|
for avId in avIds:
|
|
if avId in RequestHole:
|
|
preferredHoleId = RequestHole[avId][0]
|
|
newCourse = DistributedGolfCourseAI.DistributedGolfCourseAI(
|
|
golfZone, avIds, courseId, preferredHoleId)
|
|
newCourse.generateWithRequired(golfZone)
|
|
self.courseList.append(newCourse)
|
|
newCourse.addExpectedGolfers(avIds)
|
|
golfZone = newCourse.getZoneId()
|
|
self.notify.debug('%s' % self)
|
|
self.notify.debug('returning %d' % golfZone)
|
|
return golfZone
|
|
|
|
def findGolfCourse(self, avId):
|
|
retval = None
|
|
for course in self.courseList:
|
|
if avId in course.avIdList:
|
|
retval = course
|
|
break
|
|
return retval
|
|
|
|
def removeCourse(self, course):
|
|
if course in self.courseList:
|
|
for avId in course.avIdList:
|
|
if avId in RequestHole:
|
|
if not RequestHole[avId][1]:
|
|
del RequestHole[avId]
|
|
self.courseList.remove(course)
|