def findRacingPads(self, dnaGroup, zoneId, area, padType='racing_pad'): racingPads = [] racingPadGroups = [] if isinstance(dnaGroup, DNAGroup) and (padType in dnaGroup.getName()): racingPadGroups.append(dnaGroup) if padType == 'racing_pad': nameInfo = dnaGroup.getName().split('_') racingPad = DistributedRacePadAI(simbase.air) racingPad.setArea(zoneId) racingPad.nameType = nameInfo[3] racingPad.index = int(nameInfo[2]) nextRaceInfo = RaceGlobals.getNextRaceInfo(-1, racingPad.nameType, racingPad.index) racingPad.setTrackInfo([nextRaceInfo[0], nextRaceInfo[1]]) racingPad.generateWithRequired(zoneId) elif padType == 'viewing_pad': racingPad = DistributedViewPadAI(simbase.air) racingPad.setArea(zoneId) racingPad.generateWithRequired(zoneId) else: self.notify.error('Invalid racing pad type: ' + padType) racingPads.append(racingPad) elif isinstance(dnaGroup, DNAVisGroup): zoneId = ZoneUtil.getTrueZoneId(int(dnaGroup.getName().split(':')[0]), zoneId) for i in range(dnaGroup.getNumChildren()): (foundRacingPads, foundRacingPadGroups) = self.findRacingPads(dnaGroup.at(i), zoneId, area, padType=padType) racingPads.extend(foundRacingPads) racingPadGroups.extend(foundRacingPadGroups) return (racingPads, racingPadGroups)
def findRacingPads(self, dnaGroup, zoneId, area, padType='racing_pad'): racingPads = [] racingPadGroups = [] if isinstance(dnaGroup, DNAGroup) and (padType in dnaGroup.getName()): racingPadGroups.append(dnaGroup) if padType == 'racing_pad': nameInfo = dnaGroup.getName().split('_') racingPad = DistributedRacePadAI(simbase.air) racingPad.setArea(zoneId) racingPad.nameType = nameInfo[3] racingPad.index = int(nameInfo[2]) nextRaceInfo = RaceGlobals.getNextRaceInfo(-1, racingPad.nameType, racingPad.index) racingPad.setTrackInfo([nextRaceInfo[0], nextRaceInfo[1]]) racingPad.generateWithRequired(zoneId) elif padType == 'viewing_pad': racingPad = DistributedViewPadAI(simbase.air) racingPad.setArea(zoneId) racingPad.generateWithRequired(zoneId) else: self.notify.error('Invalid racing pad type: ' + padType) racingPads.append(racingPad) elif isinstance(dnaGroup, DNAVisGroup): zoneId = ZoneUtil.getTrueZoneId(int(dnaGroup.getName().split(':')[0]), zoneId) for i in xrange(dnaGroup.getNumChildren()): (foundRacingPads, foundRacingPadGroups) = self.findRacingPads(dnaGroup.at(i), zoneId, area, padType=padType) racingPads.extend(foundRacingPads) racingPadGroups.extend(foundRacingPadGroups) return (racingPads, racingPadGroups)
def findRacingPads(self, dnaData, zoneId, area, type='racing_pad', overrideDNAZone=False): racingPads, racingPadGroups = [], [] if type in dnaData.getName(): if type == 'racing_pad': nameSplit = dnaData.getName().split('_') racePad = DistributedRacePadAI(self) racePad.setArea(area) racePad.index = int(nameSplit[2]) racePad.genre = nameSplit[3] trackInfo = RaceGlobals.getNextRaceInfo( -1, racePad.genre, racePad.index) racePad.setTrackInfo([trackInfo[0], trackInfo[1]]) racePad.laps = trackInfo[2] racePad.generateWithRequired(zoneId) racingPads.append(racePad) racingPadGroups.append(dnaData) elif type == 'viewing_pad': viewPad = DistributedViewPadAI(self) viewPad.setArea(area) viewPad.generateWithRequired(zoneId) racingPads.append(viewPad) racingPadGroups.append(dnaData) for i in xrange(dnaData.getNumChildren()): foundRacingPads, foundRacingPadGroups = self.findRacingPads( dnaData.at(i), zoneId, area, type, overrideDNAZone) racingPads.extend(foundRacingPads) racingPadGroups.extend(foundRacingPadGroups) return racingPads, racingPadGroups
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)
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) #self.ponds[pondIndex] = pond 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_': 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:]) 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:]) 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) if group.getName()[:15] == 'prop_party_gate': gate = DistributedPartyGateAI(simbase.air) gate.setArea(zone) gate.generateWithRequired(zone) for i in range(group.getNumChildren()): self._createObjects(group.at(i), zone)
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", True): 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" and simbase.air.wantParties: gate = DistributedPartyGateAI(simbase.air) gate.setArea(zone) gate.generateWithRequired(zone) for i in range(group.getNumChildren()): child = group.at(i) self._createObjects(child, zone)