from direct.fsm import FSM from direct.gui.DirectGui import * from panda3d.core import * from direct.directnotify import DirectNotifyGlobal from direct.interval.IntervalGlobal import * from toontown.toonbase import ToontownGlobals from toontown.toonbase import TTLocalizer from toontown.fishing import FishPhoto from toontown.fishing import BingoGlobals class BingoCardCell(DirectButton, FSM.FSM): notify = DirectNotifyGlobal.directNotify.newCategory('BingoCardCell') def __init__(self, cellId, fish, model, color, parent, **kw): self.model = model self.color = color buttonToUse = self.model.find('**/mickeyButton') optiondefs = (('relief', None, None), ('state', DGG.DISABLED, None), ('image', buttonToUse, None), ('image_color', self.color, None), ('image_hpr', (0, 90, 0), None), ('image_pos', (0, 0, 0), None), ('pressEffect', False, None)) self.defineoptions(kw, optiondefs) DirectButton.__init__(self, parent) FSM.FSM.__init__(self, 'BingoCardCell') self.initialiseoptions(BingoCardCell) self._parent = parent self.fish = fish self.cellId = cellId self.request('Off') return def destroy(self): DirectButton.destroy(self) def setImageTo(self, button): button.setHpr(0, 90, 0) button.setPos(0, 0, 0) button.setScale(BingoGlobals.CellImageScale) button.setColor(self.color[0], self.color[1], self.color[2], self.color[3]) self['image'] = button self.setImage() def getButtonName(self): genus = self.getFishGenus() return BingoGlobals.FishButtonDict[genus][0] def generateLogo(self): buttonName = self.getButtonName() buttonToUse = self.model.find('**/' + buttonName) self.setImageTo(buttonToUse) def generateMarkedLogo(self): self.setImageTo(self.model.find('**/mickeyButton')) def setFish(self, fish): if self.fish: del self.fish self.fish = fish def getFish(self): return self.fish def getFishGenus(self): if self.fish == 'Free': return -1 return self.fish.getGenus() def getFishSpecies(self): return self.fish.getSpecies() def enable(self, callback = None): self.request('On', callback) def disable(self): self.request('Off') if not self.fish == 'Free': self.generateMarkedLogo() def enterOff(self): self['state'] = DGG.DISABLED self['command'] = None return def filterOff(self, request, args): if request == 'On': return (request, args) elif request == 'Off': return request else: self.notify.debug('filterOff: Invalid State Transition from Off to %s' % request) def enterOn(self, args): self['state'] = DGG.NORMAL if args[0]: self['command'] = Func(args[0], self.cellId).start def filterOn(self, request, args): if request == 'Off': return request else: self.notify.debug('filterOn: Invalid State Transition from Off to %s' % request)