102 lines
4.6 KiB
Python
102 lines
4.6 KiB
Python
from toontown.hood import HoodAI
|
|
from panda3d.core import *
|
|
from toontown.toonbase import ToontownGlobals
|
|
from toontown.distributed.DistributedTimerAI import DistributedTimerAI
|
|
import string
|
|
from toontown.dna.DNAParser import DNAGroup, DNAVisGroup
|
|
from toontown.safezone.DistributedPicnicBasketAI import DistributedPicnicBasketAI
|
|
from toontown.safezone import DistributedPicnicTableAI
|
|
from toontown.safezone import DistributedChineseCheckersAI
|
|
from toontown.safezone import DistributedCheckersAI
|
|
from toontown.hood import ZoneUtil
|
|
import random
|
|
|
|
|
|
class OZHoodAI(HoodAI.HoodAI):
|
|
def __init__(self, air):
|
|
HoodAI.HoodAI.__init__(self, air,
|
|
ToontownGlobals.OutdoorZone,
|
|
ToontownGlobals.OutdoorZone)
|
|
|
|
self.timer = None
|
|
self.picnicTables = []
|
|
self.gameTables = []
|
|
|
|
self.startup()
|
|
|
|
def startup(self):
|
|
HoodAI.HoodAI.startup(self)
|
|
|
|
self.createTimer()
|
|
self.createPicnicTables()
|
|
if simbase.config.GetBool('want-game-tables', True):
|
|
self.createGameTables()
|
|
|
|
def createTimer(self):
|
|
self.timer = DistributedTimerAI(self.air)
|
|
self.timer.generateWithRequired(self.zoneId)
|
|
|
|
def findPicnicTables(self, dnaGroup, zoneId, area, overrideDNAZone=False):
|
|
picnicTables = []
|
|
if isinstance(dnaGroup, DNAGroup) and ('picnic_table' in dnaGroup.getName()):
|
|
nameInfo = dnaGroup.getName().split('_')
|
|
for i in xrange(dnaGroup.getNumChildren()):
|
|
childDnaGroup = dnaGroup.at(i)
|
|
if 'picnic_table' in childDnaGroup.getName():
|
|
pos = childDnaGroup.getPos()
|
|
hpr = childDnaGroup.getHpr()
|
|
picnicTable = DistributedPicnicBasketAI(
|
|
simbase.air, nameInfo[2],
|
|
pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2])
|
|
picnicTable.generateWithRequired(zoneId)
|
|
picnicTables.append(picnicTable)
|
|
elif isinstance(dnaGroup, DNAVisGroup) and (not overrideDNAZone):
|
|
zoneId = int(dnaGroup.getName().split(':')[0])
|
|
for i in xrange(dnaGroup.getNumChildren()):
|
|
foundPicnicTables = self.findPicnicTables(
|
|
dnaGroup.at(i), zoneId, area, overrideDNAZone=overrideDNAZone)
|
|
picnicTables.extend(foundPicnicTables)
|
|
return picnicTables
|
|
|
|
def createPicnicTables(self):
|
|
self.picnicTables = []
|
|
for zoneId in self.getZoneTable():
|
|
dnaData = self.air.dnaDataMap.get(zoneId, None)
|
|
if dnaData.getName() == 'root':
|
|
area = ZoneUtil.getCanonicalZoneId(zoneId)
|
|
foundPicnicTables = self.findPicnicTables(
|
|
dnaData, zoneId, area, overrideDNAZone=True)
|
|
self.picnicTables.extend(foundPicnicTables)
|
|
for picnicTable in self.picnicTables:
|
|
picnicTable.start()
|
|
|
|
def findGameTables(self, dnaGroup, zoneId, area, overrideDNAZone=False):
|
|
gameTables = []
|
|
if isinstance(dnaGroup, DNAGroup) and ('game_table' in dnaGroup.getName()):
|
|
for i in xrange(dnaGroup.getNumChildren()):
|
|
childDnaGroup = dnaGroup.at(i)
|
|
if 'game_table' in childDnaGroup.getName():
|
|
pos = childDnaGroup.getPos()
|
|
hpr = childDnaGroup.getHpr()
|
|
nameInfo = childDnaGroup.getName().split('_')
|
|
tableIndex = int(childDnaGroup.get_parent().getName().split('_')[-1])
|
|
gameTable = DistributedPicnicTableAI.DistributedPicnicTableAI(simbase.air, zoneId, nameInfo[2], pos[0], pos[1], pos[2], hpr[0], hpr[1], hpr[2])
|
|
gameTable.setTableIndex(tableIndex)
|
|
gameTable.generateOtpObject(simbase.air.districtId, zoneId, ['setX', 'setY', 'setZ', 'setH', 'setP', 'setR'])
|
|
elif isinstance(dnaGroup, DNAVisGroup) and (not overrideDNAZone):
|
|
zoneId = int(dnaGroup.getName().split(':')[0])
|
|
for i in xrange(dnaGroup.getNumChildren()):
|
|
foundGameTables = self.findGameTables(
|
|
dnaGroup.at(i), zoneId, area, overrideDNAZone=overrideDNAZone)
|
|
gameTables.extend(foundGameTables)
|
|
return gameTables
|
|
|
|
def createGameTables(self):
|
|
self.gameTables = []
|
|
for zoneId in self.getZoneTable():
|
|
dnaData = self.air.dnaDataMap.get(zoneId, None)
|
|
if dnaData.getName() == 'root':
|
|
area = ZoneUtil.getCanonicalZoneId(zoneId)
|
|
foundGameTables = self.findGameTables(
|
|
dnaData, zoneId, area, overrideDNAZone=True)
|
|
self.gameTables.extend(foundGameTables)
|