from pandac.PandaModules import * from toontown.dna.DNAParser import DNAGroup, DNAVisGroup from toontown.hood import HoodAI from toontown.hood import ZoneUtil from toontown.safezone.DistributedGolfKartAI import DistributedGolfKartAI from toontown.toonbase import ToontownGlobals class GZHoodAI(HoodAI.HoodAI): def __init__(self, air): HoodAI.HoodAI.__init__(self, air, ToontownGlobals.GolfZone, ToontownGlobals.GolfZone) self.golfKarts = [] self.startup() def startup(self): HoodAI.HoodAI.startup(self) self.createGolfKarts() def findGolfKarts(self, dnaGroup, zoneId, area, overrideDNAZone=False): golfKarts = [] if isinstance(dnaGroup, DNAGroup) and ('golf_kart' in dnaGroup.getName()): nameInfo = dnaGroup.getName().split('_') golfCourse = int(nameInfo[2]) for i in xrange(dnaGroup.getNumChildren()): childDnaGroup = dnaGroup.at(i) if 'starting_block' in childDnaGroup.getName(): pos = childDnaGroup.getPos() hpr = childDnaGroup.getHpr() golfKart = DistributedGolfKartAI( self.air, golfCourse, pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]) golfKart.generateWithRequired(zoneId) golfKarts.append(golfKart) elif isinstance(dnaGroup, DNAVisGroup) and (not overrideDNAZone): zoneId = ZoneUtil.getTrueZoneId(int(dnaGroup.getName().split(':')[0]), zoneId) for i in xrange(dnaGroup.getNumChildren()): foundGolfKarts = self.findGolfKarts(dnaGroup.at(i), zoneId, area, overrideDNAZone=overrideDNAZone) golfKarts.extend(foundGolfKarts) return golfKarts def createGolfKarts(self): self.golfKarts = [] for zoneId in self.getZoneTable(): dnaData = self.air.dnaDataMap.get(zoneId, None) zoneId = ZoneUtil.getTrueZoneId(zoneId, self.zoneId) if dnaData.getName() == 'root': area = ZoneUtil.getCanonicalZoneId(zoneId) foundGolfKarts = self.findGolfKarts(dnaData, zoneId, area, overrideDNAZone=True) self.golfKarts.extend(foundGolfKarts) for golfKart in self.golfKarts: golfKart.start()