toontown-just-works/toontown/golf/GolfManagerAI.py

58 lines
1.8 KiB
Python
Raw Normal View History

2024-07-07 18:08:39 -05:00
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)