oldschool-toontown/toontown/suit/DistributedGridGoonAI.py

48 lines
1.7 KiB
Python
Raw Permalink Normal View History

2019-11-02 17:27:54 -05:00
from otp.ai.AIBaseGlobal import *
from direct.directnotify import DirectNotifyGlobal
from toontown.battle import SuitBattleGlobals
from . import DistributedGoonAI
2019-11-02 17:27:54 -05:00
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