From d5595c3a74aef51eed265f059d31a0bbeb4c8127 Mon Sep 17 00:00:00 2001 From: Zach Date: Mon, 25 May 2015 13:12:27 -0500 Subject: [PATCH] added collisions to pillow and new tunnel --- astron/dclass/stride.dc | 4 + otp/distributed/DCClassImports.py | 4 +- toontown/hood/DLHoodAI.py | 10 +- toontown/safezone/DistributedPillow.py | 115 +++++++++++++++++++++++ toontown/safezone/DistributedPillowAI.py | 36 +++++++ 5 files changed, 165 insertions(+), 4 deletions(-) create mode 100644 toontown/safezone/DistributedPillow.py create mode 100644 toontown/safezone/DistributedPillowAI.py diff --git a/astron/dclass/stride.dc b/astron/dclass/stride.dc index 8da1b432..57d64e0a 100755 --- a/astron/dclass/stride.dc +++ b/astron/dclass/stride.dc @@ -249,6 +249,7 @@ from toontown.ai import WelcomeValleyManager/AI from toontown.building import DistributedAnimatedProp/AI from toontown.toon import DistributedToon/AI/UD from toontown.safezone import DistributedTrolley/AI +from toontown.safezone import DistributedPillow/AI from toontown.safezone import DistributedPartyGate/AI from toontown.suit import DistributedSuitPlanner/AI from toontown.suit import DistributedSuitBase/AI @@ -858,6 +859,9 @@ dclass DistributedTrolley : DistributedObject { setMinigameZone(uint32, uint16); }; +dclass DistributedPillow : DistributedObject { +}; + dclass DistributedSuitPlanner : DistributedObject { setZoneId(uint32) required broadcast ram; suitListQuery() airecv clsend; diff --git a/otp/distributed/DCClassImports.py b/otp/distributed/DCClassImports.py index f0ade731..605fda21 100644 --- a/otp/distributed/DCClassImports.py +++ b/otp/distributed/DCClassImports.py @@ -2,7 +2,7 @@ from pandac.PandaModules import * -hashVal = 1264053989 +hashVal = 4186269798L from toontown.coghq import DistributedCashbotBossSafe, DistributedCashbotBossCrane, DistributedBattleFactory, DistributedCashbotBossTreasure, DistributedCogHQDoor, DistributedSellbotHQDoor, DistributedFactoryElevatorExt, DistributedMintElevatorExt, DistributedLawOfficeElevatorExt, DistributedLawOfficeElevatorInt, LobbyManager, DistributedMegaCorp, DistributedFactory, DistributedLawOffice, DistributedLawOfficeFloor, DistributedLift, DistributedDoorEntity, DistributedSwitch, DistributedButton, DistributedTrigger, DistributedCrushableEntity, DistributedCrusherEntity, DistributedStomper, DistributedStomperPair, DistributedLaserField, DistributedGolfGreenGame, DistributedSecurityCamera, DistributedMover, DistributedElevatorMarker, DistributedBarrelBase, DistributedGagBarrel, DistributedBeanBarrel, DistributedHealBarrel, DistributedGrid, ActiveCell, DirectionalCell, CrusherCell, DistributedCrate, DistributedSinkingPlatform, BattleBlocker, DistributedMint, DistributedMintRoom, DistributedMintBattle, DistributedStage, DistributedStageRoom, DistributedStageBattle, DistributedLawbotBossGavel, DistributedLawbotCannon, DistributedLawbotChair, DistributedCogKart, DistributedCountryClub, DistributedCountryClubRoom, DistributedMoleField, DistributedCountryClubBattle, DistributedMaze, DistributedFoodBelt, DistributedBanquetTable, DistributedGolfSpot @@ -21,7 +21,7 @@ from toontown.racing.DistributedStartingBlock import DistributedViewingBlock from toontown.suit import DistributedSuitPlanner, DistributedSuitBase, DistributedSuit, DistributedTutorialSuit, DistributedFactorySuit, DistributedMintSuit, DistributedStageSuit, DistributedSellbotBoss, DistributedCashbotBoss, DistributedCashbotBossGoon, DistributedGoon, DistributedGridGoon, DistributedLawbotBoss, DistributedLawbotBossSuit, DistributedBossbotBoss from toontown.distributed import ToontownDistrict, ToontownDistrictStats, DistributedTimer from toontown.effects import DistributedFireworkShow -from toontown.safezone import DistributedTrolley, DistributedPartyGate, DistributedBoat, DistributedButterfly, DistributedMMPiano, DistributedDGFlower, DistributedFishingSpot, SafeZoneManager, DistributedTreasure, DistributedGolfKart, DistributedPicnicBasket, DistributedPicnicTable, DistributedChineseCheckers, DistributedCheckers, DistributedFindFour +from toontown.safezone import DistributedTrolley, DistributedPillow, DistributedPartyGate, DistributedBoat, DistributedButterfly, DistributedMMPiano, DistributedDGFlower, DistributedFishingSpot, SafeZoneManager, DistributedTreasure, DistributedGolfKart, DistributedPicnicBasket, DistributedPicnicTable, DistributedChineseCheckers, DistributedCheckers, DistributedFindFour from toontown.fishing import DistributedFishingPond, DistributedFishingTarget, DistributedPondBingoManager from toontown.minigame import DistributedMinigame, DistributedMinigameTemplate, DistributedRaceGame, DistributedCannonGame, DistributedPatternGame, DistributedRingGame, DistributedTagGame, DistributedMazeGame, DistributedTugOfWarGame, DistributedCatchGame, DistributedDivingGame, DistributedTargetGame, DistributedVineGame, DistributedIceGame, DistributedCogThiefGame, DistributedTwoDGame from toontown.racing import DistributedVehicle, DistributedStartingBlock, DistributedRace, DistributedKartPad, DistributedRacePad, DistributedViewPad, DistributedStartingBlock, DistributedLeaderBoard, DistributedGag, DistributedProjectile diff --git a/toontown/hood/DLHoodAI.py b/toontown/hood/DLHoodAI.py index 2b7a93ed..f66b3e7d 100755 --- a/toontown/hood/DLHoodAI.py +++ b/toontown/hood/DLHoodAI.py @@ -1,5 +1,5 @@ from toontown.hood import HoodAI -from toontown.safezone import DistributedTrolleyAI +from toontown.safezone import DistributedTrolleyAI, DistributedPillowAI from toontown.toonbase import ToontownGlobals from toontown.ai import DistributedResistanceEmoteMgrAI from toontown.ai import DistributedTrickOrTreatTargetAI @@ -27,7 +27,13 @@ class DLHoodAI(HoodAI.HoodAI): self.TrickOrTreatTargetManager = DistributedTrickOrTreatTargetAI.DistributedTrickOrTreatTargetAI(self.air) self.TrickOrTreatTargetManager.generateWithRequired(9619) + self.createPillow() + def createTrolley(self): self.trolley = DistributedTrolleyAI.DistributedTrolleyAI(self.air) self.trolley.generateWithRequired(self.zoneId) - self.trolley.start() \ No newline at end of file + self.trolley.start() + + def createPillow(self): + self.pillow = DistributedPillowAI.DistributedPillowAI(self.air) + self.pillow.generateWithRequired(self.zoneId) diff --git a/toontown/safezone/DistributedPillow.py b/toontown/safezone/DistributedPillow.py new file mode 100644 index 00000000..5ec62de3 --- /dev/null +++ b/toontown/safezone/DistributedPillow.py @@ -0,0 +1,115 @@ +from panda3d.core import Point3, NodePath +from pandac.PandaModules import CollisionPolygon +from otp.otpbase import OTPGlobals +from direct.distributed.DistributedObject import DistributedObject +from direct.fsm import ClassicFSM, State + +class DistributedPillow(DistributedObject): + + points = [ + Point3(-62.2896, 59.2746, -6.0), + Point3(-119.969, 59.2746, -6.0), + Point3(-67.1297, 55.2920, -1.6), + Point3(-120.063, 55.2920, -1.6), + Point3(-64.9566, 35.6930, 1.0), + Point3(-119.993, 35.6930, 1.0), + Point3(-63.4717, 0.00000, 1.6), + Point3(-119.670, 0.00000, 1.6), + Point3(-64.9566, -35.6930, 1.0), + Point3(-119.993, -35.6930, 1.0), + Point3(-67.1297, -55.2920, -1.6), + Point3(-120.063, -55.2920, -1.6), + Point3(-62.2896, -58.3746, -6.0), + Point3(-119.969, -58.3746, -6.0), + Point3(-104.100, 59.2746, -6.0), + Point3(-104.100, -58.3746, -6.0), + Point3(-104.100, 55.2920, -6.0), + Point3(-104.100, -55.2920, -6.0), + ] + polygons = [[0, 1, 3, 2], [2, 3, 5, 4], [4, 5, 7, 6], + [6, 7, 9, 8], [8, 9, 11, 10], [10, 11, 13, 12]] + walls = [[0, 2], [2, 4], [4, 6], [6, 8], [8, 10], [10, 12], + [3, 1], [5, 3], [7, 5], [9, 7], [11, 9], [13, 11], + [3, 16], [17, 11], [16, 14], [15, 17]] + + def __init__(self, cr): + DistributedObject.__init__(self, cr) + self.floorpolys = [] + self.wallpolys = [] + self.npaths = [] + self.np = None + self.fsm = ClassicFSM.ClassicFSM( + 'DistributedPillow', + [ + State.State('off', self.enterOff, self.exitOff, + ['entering']), + State.State('bounce', self.enterBounce, self.exitBounce, + ['off']), + ], 'off', 'off') + self.fsm.enterInitialState() + + def generate(self): + DistributedObject.generate(self) + self.loader = self.cr.playGame.hood.loader + self.np = NodePath('Pillow') + self.np.reparentTo(render) + for point in DistributedPillow.polygons: + orderedPoints = [] + for index in point: + orderedPoints.append(DistributedPillow.points[index]) + self.floorpolys.append(CollisionPolygon(*orderedPoints)) + for n, p in enumerate(self.floorpolys): + polyNode = CollisionNode("FloorPoly-%d" % n) + polyNode.addSolid(p) + polyNode.setFromCollideMask(OTPGlobals.FloorBitmask) + polyNodePath = self.np.attachNewNode(polyNode) + self.npaths.append(polyNodePath) + self.accept("enterFloorPoly-%d" % n, self.printEntry) + for wall in DistributedPillow.walls: + ab = DistributedPillow.points[wall[0]] + bb = DistributedPillow.points[wall[1]] + cb = Point3(bb.getX(), bb.getY(), bb.getZ() + 15) + db = Point3(ab.getX(), ab.getY(), ab.getZ() + 15) + self.wallpolys.append(CollisionPolygon(ab, bb, cb, db)) + for n, p in enumerate(self.wallpolys): + polyNode = CollisionNode("WallPoly-%d" % n) + polyNode.addSolid(p) + polyNode.setFromCollideMask(OTPGlobals.FloorBitmask) + polyNodePath = self.np.attachNewNode(polyNode) + self.npaths.append(polyNodePath) + + def disable(self): + DistributedObject.disable(self) + self.floorpolys = [] + self.wallpolys = [] + self.npaths = [] + if self.np: + self.np.removeNode() + self.np = None + if hasattr(self, 'loader'): + del self.loader + self.ignoreAll() + self.fsm.request('off') + + def delete(self): + if self.np: + self.np.removeNode() + self.np = None + self.ignoreAll() + DistributedObject.delete(self) + del self.fsm + + def enterOff(self): + pass + + def exitOff(self): + pass + + def enterBounce(self): + pass + + def exitBounce(self): + pass + + def printEntry(self, entry): + print(entry) diff --git a/toontown/safezone/DistributedPillowAI.py b/toontown/safezone/DistributedPillowAI.py new file mode 100644 index 00000000..dad0177a --- /dev/null +++ b/toontown/safezone/DistributedPillowAI.py @@ -0,0 +1,36 @@ +from direct.distributed.DistributedObjectAI import DistributedObjectAI +from direct.fsm import ClassicFSM, State + +class DistributedPillowAI(DistributedObjectAI): + + def __init__(self, air): + DistributedObjectAI.__init__(self, air) + self.fsm = ClassicFSM.ClassicFSM( + 'DistributedPillowAI', + [ + State.State('off', self.enterOff, self.exitOff, + ['bounce']), + State.State('bounce', self.enterBounce, self.exitBounce, + ['off']), + ], 'off', 'off') + self.fsm.enterInitialState() + + def generate(self): + DistributedObjectAI.generate(self) + + def delete(self): + self.fsm.requestFinalState() + del self.fsm + DistributedObjectAI.delete(self) + + def enterOff(self): + pass + + def exitOff(self): + pass + + def enterBounce(self): + pass + + def exitBounce(self): + pass