oldschool-toontown/toontown/cogdominium/DistCogdoCraneMoneyBag.py

90 lines
3.2 KiB
Python
Raw Normal View History

from panda3d.core import *
2019-11-02 17:27:54 -05:00
from direct.interval.IntervalGlobal import *
from direct.directnotify import DirectNotifyGlobal
from toontown.toonbase import ToontownGlobals
from otp.otpbase import OTPGlobals
from toontown.cogdominium.DistCogdoCraneObject import DistCogdoCraneObject
from toontown.cogdominium import CogdoCraneGameConsts as GameConsts
class DistCogdoCraneMoneyBag(DistCogdoCraneObject):
notify = DirectNotifyGlobal.directNotify.newCategory('DistCogdoCraneMoneyBag')
grabPos = (0, 0, GameConsts.Settings.MoneyBagGrabHeight.get())
craneFrictionCoef = 0.2
craneSlideSpeed = 11
craneRotateSpeed = 16
wantsWatchDrift = 0
def __init__(self, cr):
DistCogdoCraneObject.__init__(self, cr)
NodePath.__init__(self, 'object')
self.index = None
2020-01-14 13:28:52 -06:00
self.flyToMagnetSfx = loader.loadSfx('phase_5/audio/sfx/TL_rake_throw_only.ogg')
self.hitMagnetSfx = loader.loadSfx('phase_5/audio/sfx/AA_drop_safe.ogg')
2019-11-02 17:27:54 -05:00
self.toMagnetSoundInterval = Parallel(SoundInterval(self.flyToMagnetSfx, duration=ToontownGlobals.CashbotBossToMagnetTime, node=self), Sequence(Wait(ToontownGlobals.CashbotBossToMagnetTime - 0.02), SoundInterval(self.hitMagnetSfx, duration=1.0, node=self)))
2020-01-14 13:28:52 -06:00
self.hitFloorSfx = loader.loadSfx('phase_5/audio/sfx/AA_drop_bigweight_miss.ogg')
2019-11-02 17:27:54 -05:00
self.hitFloorSoundInterval = SoundInterval(self.hitFloorSfx, node=self)
return
def announceGenerate(self):
DistCogdoCraneObject.announceGenerate(self)
self.name = 'moneyBag-%s' % self.doId
self.setName(self.name)
self.craneGame.moneyBag.copyTo(self)
self.shadow = NodePath('notAShadow')
self.collisionNode.setName('moneyBag')
cs = CollisionSphere(0, 0, 4, 4)
self.collisionNode.addSolid(cs)
self.craneGame.moneyBags[self.index] = self
self.setupPhysics('moneyBag')
self.resetToInitialPosition()
def disable(self):
del self.craneGame.moneyBags[self.index]
DistCogdoCraneObject.disable(self)
def hideShadows(self):
self.shadow.hide()
def showShadows(self):
self.shadow.show()
def getMinImpact(self):
if self.craneGame.heldObject:
return ToontownGlobals.CashbotBossSafeKnockImpact
else:
return ToontownGlobals.CashbotBossSafeNewImpact
def resetToInitialPosition(self):
posHpr = GameConsts.MoneyBagPosHprs[self.index]
self.setPosHpr(*posHpr)
self.physicsObject.setVelocity(0, 0, 0)
def fellOut(self):
self.deactivatePhysics()
self.d_requestInitial()
def setIndex(self, index):
self.index = index
def setObjectState(self, state, avId, craneId):
if state == 'I':
self.demand('Initial')
else:
DistCogdoCraneObject.setObjectState(self, state, avId, craneId)
def d_requestInitial(self):
self.sendUpdate('requestInitial')
def enterInitial(self):
self.resetToInitialPosition()
self.showShadows()
def exitInitial(self):
pass
if __dev__:
def _handleMoneyBagGrabHeightChanged(self, height):
grabPos = DistCogdoCraneMoneyBag.grabPos
DistCogdoCraneMoneyBag.grabPos = (grabPos[0], grabPos[1], height)