toontown-just-works/toontown/coghq/DistributedGridGoonAI.py
2024-07-07 18:08:39 -05:00

52 lines
1.8 KiB
Python

from otp.ai.AIBaseGlobal import *
from direct.directnotify import DirectNotifyGlobal
from toontown.battle import SuitBattleGlobals
import DistributedGoonAI
from direct.task.Task import Task
from toontown.coghq import DistributedCrushableEntityAI
import random
class DistributedGridGoonAI(DistributedGoonAI.DistributedGoonAI):
notify = DirectNotifyGlobal.directNotify.newCategory('DistributedGridGoonAI')
def __init__(self, level, entId):
self.grid = None
self.h = 0
DistributedGoonAI.DistributedGoonAI.__init__(self, level, entId)
return
def generate(self):
self.notify.debug('generate')
DistributedCrushableEntityAI.DistributedCrushableEntityAI.generate(self)
def initGridDependents(self):
taskMgr.doMethodLater(2, self.goToNextPoint, self.taskName('walkTask'))
def getPosition(self):
if self.grid:
return self.grid.getObjPos(self.entId)
def getH(self):
return self.h
def goToNextPoint(self, task):
if not self.grid:
self.notify.warning("couldn't find grid, not starting")
return
if self.grid.checkMoveDir(self.entId, self.h):
ptA = Point3(*self.getPosition())
self.grid.doMoveDir(self.entId, self.h)
ptB = Point3(*self.getPosition())
self.sendUpdate('setPathPts', [ptA[0],
ptA[1],
ptA[2],
ptB[0],
ptB[1],
ptB[2]])
tPathSegment = Vec3(ptA - ptB).length() / self.velocity
else:
turn = int(random.randrange(1, 4) * 90)
self.h = (self.h + turn) % 360
tPathSegment = 0.1
taskMgr.doMethodLater(tPathSegment, self.goToNextPoint, self.taskName('walkTask'))
return Task.done