def createCogKarts(self): posList = ((-103.702, -43.47, 10.076), (-103.462, 31.377, 11.784), (-69.968, 96.113, 12.16)) hprList = ((-68.17, 0, 0), (-107.653, 0, 0), (-122.766, 0, 0)) mins = ToontownGlobals.FactoryLaffMinimums[3] kartIdList = [] for cogCourse in xrange(len(posList)): pos = posList[cogCourse] hpr = hprList[cogCourse] cogKart = DistributedCogKartAI.DistributedCogKartAI( self.air, cogCourse, pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2], self.air.countryClubMgr, minLaff=mins[cogCourse]) cogKart.generateWithRequired(self.zoneId) self.cogKarts.append(cogKart) kartIdList.append(cogKart.doId) toonKart = DistributedGolfKartAI.DistributedGolfKartAI( self.air, 3, 98.4425, -104.494, -1.72622, 17.833, 0, 0) toonKart.generateWithRequired(self.zoneId) toonKart.start() return kartIdList
def findAndCreateGolfKarts(self, dnaGroup, zoneId, area, overrideDNAZone = 0, type = 'golf_kart'): golfKarts = [] golfKartGroups = [] if isinstance(dnaGroup, DNAGroup) and string.find(dnaGroup.getName(), type) >= 0: golfKartGroups.append(dnaGroup) if type == 'golf_kart': nameInfo = dnaGroup.getName().split('_') golfCourse = int(nameInfo[2]) pos = Point3(0, 0, 0) hpr = Point3(0, 0, 0) for i in range(dnaGroup.getNumChildren()): childDnaGroup = dnaGroup.at(i) if string.find(childDnaGroup.getName(), 'starting_block') >= 0: padLocation = dnaGroup.getName().split('_')[2] pos = childDnaGroup.getPos() hpr = childDnaGroup.getHpr() break pos += Point3(0, 0, 0.05) golfKart = DistributedGolfKartAI.DistributedGolfKartAI(self.air, golfCourse, pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]) else: self.notify.warning('unhandled case') golfKart.generateWithRequired(zoneId) golfKarts.append(golfKart) else: if isinstance(dnaGroup, DNAVisGroup) and not overrideDNAZone: zoneId = ZoneUtil.getTrueZoneId(int(dnaGroup.getName().split(':')[0]), zoneId) for i in range(dnaGroup.getNumChildren()): childGolfKarts, childGolfKartGroups = self.findAndCreateGolfKarts(dnaGroup.at(i), zoneId, area, overrideDNAZone, type) golfKarts += childGolfKarts golfKartGroups += childGolfKartGroups return (golfKarts, golfKartGroups)
def findAndCreateGolfKarts(self, dnaGroup, zoneId, area, overrideDNAZone=0, type='golf_kart'): """Find and create golf karts from the given dna.""" golfKarts = [] golfKartGroups = [] if ((isinstance(dnaGroup, DNAGroup)) and (string.find(dnaGroup.getName(), type) >= 0)): golfKartGroups.append(dnaGroup) if (type == 'golf_kart'): nameInfo = dnaGroup.getName().split('_') #pdb.set_trace() #print "Name Info: ", nameInfo #print "Race Info: ", raceInfo golfCourse = int(nameInfo[2]) pos = Point3(0, 0, 0) hpr = Point3(0, 0, 0) for i in range(dnaGroup.getNumChildren()): childDnaGroup = dnaGroup.at(i) # TODO - check if DNAProp instance if ((string.find(childDnaGroup.getName(), 'starting_block') >= 0)): padLocation = dnaGroup.getName().split('_')[2] pos = childDnaGroup.getPos() hpr = childDnaGroup.getHpr() break # lift the karts off the ground a bit so we can see their shadows in the tunnel pos += Point3(0, 0, 0.05) golfKart = DistributedGolfKartAI.DistributedGolfKartAI( self.air, golfCourse, pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]) else: self.notify.warning('unhandled case') golfKart.generateWithRequired(zoneId) golfKarts.append(golfKart) else: if (isinstance(dnaGroup, DNAVisGroup) and not overrideDNAZone): zoneId = ZoneUtil.getTrueZoneId( int(dnaGroup.getName().split(':')[0]), zoneId) for i in range(dnaGroup.getNumChildren()): childGolfKarts, childGolfKartGroups = self.findAndCreateGolfKarts( dnaGroup.at(i), zoneId, area, overrideDNAZone, type) golfKarts += childGolfKarts golfKartGroups += childGolfKartGroups return golfKarts, golfKartGroups
def _createObjects(self, group, zone): if group.getName()[:13] == 'fishing_pond_': visGroup = group.getVisGroup() pondZone = 0 if visGroup is None: pondZone = zone else: pondZone = int(visGroup.getName().split(':')[0]) pondIndex = int(group.getName()[13:]) pond = DistributedFishingPondAI(simbase.air) pond.setArea(zone) pond.generateWithRequired(pondZone) bingoManager = DistributedPondBingoManagerAI(simbase.air) bingoManager.setPondDoId(pond.getDoId()) bingoManager.generateWithRequired(pondZone) #temporary, until we have scheduled stuff bingoManager.createGame() pond.bingoMgr = bingoManager simbase.air.fishManager.ponds[zone] = pond for i in range(FishingTargetGlobals.getNumTargets(zone)): target = DistributedFishingTargetAI(simbase.air) target.setPondDoId(pond.getDoId()) target.generateWithRequired(pondZone) for i in range(group.getNumChildren()): posSpot = group.at(i) if posSpot.getName()[:13] == 'fishing_spot_': posSpot = group.atAsNode(i) spot = DistributedFishingSpotAI(simbase.air) spot.setPondDoId(pond.getDoId()) x, y, z = posSpot.getPos() h, p, r = posSpot.getHpr() spot.setPosHpr(x, y, z, h, p, r) spot.generateWithRequired(pondZone) NPCToons.createNpcsInZone(simbase.air, pondZone) elif group.getName()[:10] == 'racing_pad': index, dest = group.getName()[11:].split('_', 2) index = int(index) pad = DistributedRacePadAI(simbase.air) pad.setArea(zone) pad.nameType = dest pad.index = index nri = RaceGlobals.getNextRaceInfo(-1, dest, index) pad.setTrackInfo([nri[0], nri[1]]) pad.generateWithRequired(zone) for i in range(group.getNumChildren()): posSpot = group.at(i) if posSpot.getName()[:14] == 'starting_block': spotIndex = int(posSpot.getName()[15:]) posSpot = group.atAsNode(i) x, y, z = posSpot.getPos() h, p, r = posSpot.getHpr() startingBlock = DistributedStartingBlockAI(simbase.air) startingBlock.setPosHpr(x, y, z, h, p, r) startingBlock.setPadDoId(pad.getDoId()) startingBlock.setPadLocationId(index) startingBlock.generateWithRequired(zone) pad.addStartingBlock(startingBlock) elif group.getName()[:11] == 'viewing_pad': pad = DistributedViewPadAI(simbase.air) pad.setArea(zone) pad.generateWithRequired(zone) for i in range(group.getNumChildren()): posSpot = group.at(i) if posSpot.getName()[:14] == 'starting_block': spotIndex = int(posSpot.getName()[15:]) posSpot = group.atAsNode(i) x, y, z = posSpot.getPos() h, p, r = posSpot.getHpr() startingBlock = DistributedViewingBlockAI(simbase.air) startingBlock.setPosHpr(x, y, z, h, p, r) startingBlock.setPadDoId(pad.getDoId()) startingBlock.setPadLocationId(0) startingBlock.generateWithRequired(zone) pad.addStartingBlock(startingBlock) elif group.getName()[:13] == 'picnic_table_' and zone != 7000: pos = group.getPos() hpr = group.getHpr() nameInfo = group.getName().split('_') picnicTable = DistributedPicnicBasketAI.DistributedPicnicBasketAI( simbase.air, nameInfo[2], pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]) picnicTable.generateWithRequired(zone) picnicTable.start() elif group.getName() == 'prop_game_table_DNARoot' and config.GetBool( 'want-oz-game-tables', True): pos = group.getPos() hpr = group.getHpr() nameInfo = group.getName().split('_') tableIndex = int(group.parent.getName().split('_')[-1]) picnicTable = DistributedPicnicTableAI.DistributedPicnicTableAI( simbase.air, zone, nameInfo[2], pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]) picnicTable.setTableIndex(tableIndex) picnicTable.generateOtpObject( simbase.air.districtId, zone, ['setX', 'setY', 'setZ', 'setH', 'setP', 'setR']) elif group.getName()[:9] == 'golf_kart' and config.GetBool( 'want-golf-karts', False): info = group.getName()[10:].split('_') golfCourse = int(info[0]) kartId = info[1] for i in range(group.getNumChildren()): prop = group.at(i) if prop.getName()[:15] == 'starting_block_': pos, hpr = (prop.getPos(), prop.getHpr()) kart = DistributedGolfKartAI.DistributedGolfKartAI( simbase.air, golfCourse, pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]) kart.generateWithRequired(zone) kart.sendUpdate('setGolfCourse', [golfCourse]) kart.sendUpdate('setPosHpr', [pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2]]) color = kart.getColor() kart.sendUpdate('setColor', [color[0], color[1], color[2]]) kart.start() if group.getName()[:15] == 'prop_party_gate': gate = DistributedPartyGateAI(simbase.air) gate.setArea(zone) gate.generateWithRequired(zone) for i in range(group.getNumChildren()): child = group.at(i) self._createObjects(child, zone)