From 53a854a1349f166332f4a00efa3633d021d96b47 Mon Sep 17 00:00:00 2001 From: John Cote Date: Thu, 2 Jan 2020 20:45:36 -0500 Subject: [PATCH] racing: more race pad stuff --- toontown/racing/DistributedRacePadAI.py | 29 ++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/toontown/racing/DistributedRacePadAI.py b/toontown/racing/DistributedRacePadAI.py index cac2dff..6084a33 100644 --- a/toontown/racing/DistributedRacePadAI.py +++ b/toontown/racing/DistributedRacePadAI.py @@ -31,6 +31,7 @@ class DistributedRacePadAI(DistributedKartPadAI, FSM): def delete(self): taskMgr.remove(self.uniqueName('changeTrack')) taskMgr.remove(self.uniqueName('countdownTask')) + taskMgr.remove(self.uniqueName('enterRaceTask')) DistributedKartPadAI.delete(self) def request(self, state): @@ -75,6 +76,13 @@ class DistributedRacePadAI(DistributedKartPadAI, FSM): def exitWaitCountdown(self): taskMgr.remove(self.uniqueName('countdownTask')) + def enterAllAboard(self): + taskMgr.doMethodLater(KartGlobals.ENTER_RACE_TIME, self.enterRace, self.uniqueName('enterRaceTask')) + + def exitAllAboard(self): + self.avIds = [] + taskMgr.remove(self.uniqueName('enterRaceTask')) + def changeTrack(self, task): trackInfo = RaceGlobals.getNextRaceInfo(self.trackInfo[0], self.genre, self.index) trackId, raceType = trackInfo[0], trackInfo[1] @@ -85,6 +93,25 @@ class DistributedRacePadAI(DistributedKartPadAI, FSM): self.laps = trackInfo[2] return task.again + def considerAllAboard(self, task=None): + for startingBlock in self.startingBlocks: + if startingBlock.currentMovie: + if not self.state == 'WaitBoarding': + self.request('WaitBoarding') + return + + if self.trackInfo[1] in (RaceGlobals.ToonBattle, RaceGlobals.Circuit) and len(self.avIds) < 2: + for startingBlock in self.startingBlocks: + if startingBlock.avId != 0: + startingBlock.normalExit() + + self.request('WaitEmpty') + return + + self.request('AllAboard') + if task: + return task.done + def addAvBlock(self, avId, startingBlock, paid): av = self.air.doId2do.get(avId) if not av: @@ -115,4 +142,4 @@ class DistributedRacePadAI(DistributedKartPadAI, FSM): if len(self.avIds) == 0 and not self.state == 'WaitEmpty': self.request('WaitEmpty') if self.state == 'WaitBoarding': - self.considerAllAboard(0) + self.considerAllAboard()