historical/toontown-classic.git/toontown/golf/GolfManagerAI.py

58 lines
1.8 KiB
Python
Raw Normal View History

2024-01-16 11:20:27 -06:00
from direct.distributed import DistributedObjectAI
from direct.showbase import DirectObject
from direct.directnotify import DirectNotifyGlobal
from toontown.toonbase import ToontownGlobals
from toontown.golf import DistributedGolfCourseAI
from panda3d.core import *
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)
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)