toontown-just-works/toontown/racing/RaceGag.py

77 lines
2.3 KiB
Python
Raw Permalink Normal View History

2024-07-07 18:08:39 -05:00
from panda3d.core import *
from direct.interval.IntervalGlobal import *
from direct.showbase import DirectObject
from DroppedGag import *
types = ['',
'Pie',
'Banana',
'Anvil']
class RaceGag(DirectObject.DirectObject):
def __init__(self, parent, slot, testPos):
DirectObject.DirectObject.__init__(self)
self.parent = parent
self.name = 'gag-' + str(slot)
self.geom = DroppedGag(self.name, base.race.qbox)
self.geom.dropShadow.setScale(0.7)
self.geom.setPos(testPos + Vec3(0, 0, -1))
qc = CollisionTube(Point3(0, 0, -2.5), Point3(0, 0, 2.5), 1)
self.gagnp = NodePath(CollisionNode(self.name))
self.gagnp.node().addSolid(qc)
self.gagnp.reparentTo(self.geom)
self.gagnp.node().setIntoCollideMask(BitMask32(32768))
self.gagnp.node().setFromCollideMask(BitMask32(32768))
self.slot = slot
self.type = 0
self.accept('imIn-' + self.name, self.hitGag)
self.pickupSound = base.loadSfx('phase_6/audio/sfx/KART_getGag.ogg')
self.fadeout = None
return
def delete(self):
if self.fadeout:
self.fadeout.finish()
self.fadeout = None
self.gagnp.removeNode()
self.gagnp = None
self.geom.delete()
self.geom = None
del self.parent
self.ignore('imIn-' + self.name)
return
def getType(self):
return self.type
def isActive(self):
if self.type:
return True
else:
return False
def genGag(self, spot, type):
self.type = type
fadein = self.geom.scaleInterval(1, 4)
self.geom.setScale(0.001)
self.geom.reparentTo(self.parent.geom)
self.gagnp.reparentTo(self.geom)
fadein.start()
def hideGeom(self):
self.geom.detachNode()
def disableGag(self):
self.gagnp.reparentTo(hidden)
self.type = 0
if self.fadeout:
self.fadeout.finish()
self.fadeout = Sequence(self.geom.scaleInterval(0.2, 0), Func(self.hideGeom))
self.fadeout.start()
def hitGag(self, cevent):
if not self.parent.currGag:
self.pickupSound.play()
self.parent.pickupGag(self.slot, self.type)
self.disableGag()