oldschool-toontown/toontown/minigame/PairingGameCard.py

95 lines
3.5 KiB
Python
Raw Normal View History

from .PlayingCard import PlayingCardNodePath
from . import PlayingCardGlobals
from panda3d.core import NodePath, Vec3
2019-11-02 17:27:54 -05:00
from direct.interval.IntervalGlobal import LerpHprInterval, Parallel, SoundInterval
class PairingGameCard(PlayingCardNodePath):
DoIntervalDefault = True
FlipTime = 0.25
UseDifferentCardColors = True
CardColors = [(0.933594, 0.265625, 0.28125, 1.0),
(0.550781, 0.824219, 0.324219, 1.0),
(0.347656, 0.820312, 0.953125, 1.0),
(0.460938, 0.378906, 0.824219, 1.0),
(0.710938, 0.234375, 0.4375, 1.0),
(0.285156, 0.328125, 0.726562, 1.0),
(0.242188, 0.742188, 0.515625, 1.0),
(0.96875, 0.691406, 0.699219, 1.0),
(0.996094, 0.957031, 0.597656, 1.0),
(0.992188, 0.480469, 0.167969, 1.0)]
def __init__(self, value):
style = PlayingCardGlobals.Styles[0]
PlayingCardNodePath.__init__(self, style, value)
self.enterCallback = None
self.exitCallback = None
return
def load(self):
oneCard = loader.loadModel('phase_4/models/minigames/garden_sign_memory')
prop = self.attachNewNode('prop')
PlayingCardGlobals.getImage(self.style, self.suit, self.rank).copyTo(prop)
prop.setScale(7)
oneCard.find('**/glow').removeNode()
cs = oneCard.find('**/collision')
for solidIndex in range(cs.node().getNumSolids()):
cs.node().modifySolid(solidIndex).setTangible(False)
cs.node().setName('cardCollision-%d' % self.value)
sign = oneCard.find('**/sign1')
if self.UseDifferentCardColors:
index = self.rank % len(self.CardColors)
color = self.CardColors[index]
sign.setColorScale(*color)
prop.setPos(0.0, 0.0, 0.08)
prop.setP(-90)
prop.reparentTo(oneCard)
oneCard.reparentTo(self)
cardBack = oneCard.find('**/sign2')
cardBack.setColorScale(0.12, 0.35, 0.5, 1.0)
cardModel = loader.loadModel('phase_3.5/models/gui/playingCard')
logo = cardModel.find('**/logo')
logo.reparentTo(self)
logo.setScale(0.45)
logo.setP(90)
logo.setZ(0.025)
logo.setX(-0.05)
logo.setH(180)
cardModel.removeNode()
2019-11-02 17:27:54 -05:00
self.setR(0)
self.setScale(2.5)
self.flipIval = None
2020-01-14 13:28:52 -06:00
self.turnUpSound = base.loader.loadSfx('phase_4/audio/sfx/MG_pairing_card_flip_face_up.ogg')
self.turnDownSound = base.loader.loadSfx('phase_4/audio/sfx/MG_pairing_card_flip_face_down.ogg')
2019-11-02 17:27:54 -05:00
return
def unload(self):
self.clearFlipIval()
self.removeNode()
del self.turnUpSound
del self.turnDownSound
def turnUp(self, doInterval = DoIntervalDefault):
self.faceUp = 1
if doInterval:
self.clearFlipIval()
self.flipIval = Parallel(LerpHprInterval(self, self.FlipTime, Vec3(0, 0, 0)), SoundInterval(self.turnUpSound, node=self, listenerNode=base.localAvatar, cutOff=240))
self.flipIval.start()
else:
self.setR(0)
def clearFlipIval(self):
if self.flipIval:
self.flipIval.finish()
self.flipIval = None
return
def turnDown(self, doInterval = DoIntervalDefault):
self.faceUp = 0
if doInterval:
self.clearFlipIval()
self.flipIval = Parallel(LerpHprInterval(self, self.FlipTime, Vec3(0, 0, 180)), SoundInterval(self.turnDownSound, node=self, listenerNode=base.localAvatar, cutOff=240))
self.flipIval.start()
else:
self.setR(180)