from panda3d.core import * from direct.directnotify import DirectNotifyGlobal import string from direct.fsm import StateData AttackPanelHidden = 0 def hideAttackPanel(flag): global AttackPanelHidden AttackPanelHidden = flag messenger.send('hide-attack-panel') class TownBattleAttackPanel(StateData.StateData): notify = DirectNotifyGlobal.directNotify.newCategory('TownBattleAttackPanel') def __init__(self, doneEvent): StateData.StateData.__init__(self, doneEvent) def load(self): StateData.StateData.load(self) def unload(self): StateData.StateData.unload(self) def enter(self): StateData.StateData.enter(self) if not AttackPanelHidden: base.localAvatar.inventory.show() self.accept('inventory-selection', self.__handleInventory) self.accept('inventory-run', self.__handleRun) self.accept('inventory-sos', self.__handleSOS) self.accept('inventory-pass', self.__handlePass) self.accept('inventory-fire', self.__handleFire) self.accept('hide-attack-panel', self.__handleHide) return def exit(self): StateData.StateData.exit(self) self.ignore('inventory-selection') self.ignore('inventory-run') self.ignore('inventory-sos') self.ignore('inventory-pass') self.ignore('inventory-fire') self.ignore('hide-attack-panel') base.localAvatar.inventory.hide() def __handleRun(self): doneStatus = {'mode': 'Run'} messenger.send(self.doneEvent, [doneStatus]) def __handleSOS(self): doneStatus = {'mode': 'SOS'} messenger.send(self.doneEvent, [doneStatus]) def __handlePass(self): doneStatus = {'mode': 'Pass'} messenger.send(self.doneEvent, [doneStatus]) def __handleFire(self): doneStatus = {'mode': 'Fire'} messenger.send(self.doneEvent, [doneStatus]) def __handleInventory(self, track, level): if base.localAvatar.inventory.numItem(track, level) > 0: doneStatus = {} doneStatus['mode'] = 'Inventory' doneStatus['track'] = track doneStatus['level'] = level messenger.send(self.doneEvent, [doneStatus]) else: self.notify.error("An item we don't have: track %s level %s was selected." % [track, level]) def __handleHide(self): if AttackPanelHidden: base.localAvatar.inventory.hide() else: base.localAvatar.inventory.show()