def __init__(self, callback, skillId, skillRank): if not AmmoPanelButton.SkillIcons: AmmoPanelButton.SkillIcons = loader.loadModel('models/textureCards/skillIcons') AmmoPanelButton.Image = (AmmoPanelButton.SkillIcons.find('**/base'), AmmoPanelButton.SkillIcons.find('**/base_down'), AmmoPanelButton.SkillIcons.find('**/base_over')) self.locked = True self.purchaseable = True self.cost = CannonDefenseGlobals.getDefenseCannonAmmoCost(skillId) self.amount = CannonDefenseGlobals.getDefenseCannonAmmoAmount(skillId) if self.amount == -1: self.amount = PLocalizer.Unlimited self.skillId = skillId self.skillRank = skillRank self.infoBox = None self.flashIval = None asset = RadialMenu.getSkillIconName(skillId, 0) geom = AmmoPanelButton.SkillIcons.find('**/%s' % asset) self.geom = geom if self.locked: asset = None geom = None DirectButton.__init__(self, relief = None, pos = (0, 0, 0), text = '?', text_scale = 0.10000000000000001, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, text_pos = (0.0050000000000000001, -0.035000000000000003), text_align = TextNode.ACenter, image = AmmoPanelButton.Image, image_scale = 0.12, geom = geom, geom_scale = 0.12, command = callback, textMayChange = 1, sortOrder = 70, extraArgs = [ skillId]) self.initialiseoptions(AmmoPanelButton) gui = loader.loadModel('models/gui/toplevel_gui') self.lockIcon = gui.find('**/pir_t_gui_gen_key_subscriber') if not Freebooter.getPaidStatus(base.localAvatar.doId) and skillId > CannonDefenseGlobals.FREEBOOTER_LAST_AMMO_AVAILABLE: self.lock = DirectFrame(parent = self, relief = None, image = self.lockIcon, image_scale = 0.14000000000000001, image_pos = (0.050000000000000003, 0, -0.025000000000000001), sortOrder = 99) self.bind(DGG.ENTER, self.showDetails) self.bind(DGG.EXIT, self.hideDetails)
def __init__(self, callback, skillId, skillRank): if not AmmoPanelButton.SkillIcons: AmmoPanelButton.SkillIcons = loader.loadModel( 'models/textureCards/skillIcons') AmmoPanelButton.Image = ( AmmoPanelButton.SkillIcons.find('**/base'), AmmoPanelButton.SkillIcons.find('**/base_down'), AmmoPanelButton.SkillIcons.find('**/base_over')) self.locked = True self.purchaseable = True self.cost = CannonDefenseGlobals.getDefenseCannonAmmoCost(skillId) self.amount = CannonDefenseGlobals.getDefenseCannonAmmoAmount(skillId) if self.amount == -1: self.amount = PLocalizer.Unlimited self.skillId = skillId self.skillRank = skillRank self.infoBox = None self.flashIval = None asset = RadialMenu.getSkillIconName(skillId, 0) geom = AmmoPanelButton.SkillIcons.find('**/%s' % asset) self.geom = geom if self.locked: asset = None geom = None DirectButton.__init__(self, relief=None, pos=(0, 0, 0), text='?', text_scale=0.1, text_fg=PiratesGuiGlobals.TextFG2, text_shadow=PiratesGuiGlobals.TextShadow, text_pos=(0.005, -0.035), text_align=TextNode.ACenter, image=AmmoPanelButton.Image, image_scale=0.12, geom=geom, geom_scale=0.12, command=callback, textMayChange=1, sortOrder=70, extraArgs=[skillId]) self.initialiseoptions(AmmoPanelButton) gui = loader.loadModel('models/gui/toplevel_gui') self.lockIcon = gui.find('**/pir_t_gui_gen_key_subscriber') if not Freebooter.getPaidStatus( base.localAvatar.doId ) and skillId > CannonDefenseGlobals.FREEBOOTER_LAST_AMMO_AVAILABLE: self.lock = DirectFrame(parent=self, relief=None, image=self.lockIcon, image_scale=0.14, image_pos=(0.05, 0, -0.025), sortOrder=99) self.bind(DGG.ENTER, self.showDetails) self.bind(DGG.EXIT, self.hideDetails) return
def removeAmmoSkill(self, skillId, useDefaultAmmo = False): index = -1 for i in range(len(PiratesGlobals.CANNON_DEFENSE_SKILLS)): if PiratesGlobals.CANNON_DEFENSE_SKILLS[i] == skillId: index = i break continue if index < 0: return False PiratesGlobals.CANNON_DEFENSE_SKILLS.remove(skillId) PiratesGlobals.CANNON_DEFENSE_SKILLS.insert(index, InventoryType.DefenseCannonEmpty) button = self.buttons[skillId] modifier = max(0, self.ammoQuantities[skillId] / float(CannonDefenseGlobals.getDefenseCannonAmmoAmount(skillId))) self._bankNotes += int(button.cost * modifier) self.updateBankNoteText() button.enablePurchase() base.localAvatar.guiMgr.combatTray.skillTray.updateSkillTray(InventoryType.DefenseCannonRep, WeaponGlobals.DEFENSE_CANNON, hideFirst = False) self.updateQuantities() if useDefaultAmmo and not self.hasAmmo(): self.onAmmoClick(InventoryType.DefenseCannonRoundShot) elif skillId == base.localAvatar.guiMgr.combatTray.getLastAmmoSkillId(): self.cannon.cgui.hideCannonControls() self.cannon.cgui.skillTray.show() if self.state == CLOSED and not self.hasAmmo(): self.onTabClick() self.ammoQuantities[skillId] = 0 return True
def addProximityAmmoFromAI(self, shotNum, pos, ammoSkillId, attackerId, timeRemaining, projectileHitEvent, buffs = []): self.ammoSequence = self.ammoSequence + 1 & 255 cannonball = self.getProjectile(ammoSkillId, projectileHitEvent, buffs) cannonball.setTag('shotNum', str(shotNum)) cannonball.setTag('ammoSequence', str(self.ammoSequence)) cannonball.setTag('skillId', str(InventoryType.CannonShoot)) cannonball.setTag('ammoSkillId', str(ammoSkillId)) cannonball.setTag('attackerId', str(attackerId)) cannonball.setPos(pos) if ammoSkillId != InventoryType.DefenseCannonSmokePowder: cannonball.setZ(1) collNode = cannonball.getCollNode() collNode.reparentTo(render) if ammoSkillId == InventoryType.DefenseCannonMine: cannonball.addInWaterMine(timeRemaining) elif ammoSkillId == InventoryType.DefenseCannonPowderKeg: cannonball.addPowderKeg(timeRemaining) elif ammoSkillId == InventoryType.DefenseCannonSmokePowder: cannonball.addSmokePowder(timeRemaining) else: cannonball.addColdShot(timeRemaining) if timeRemaining == CannonDefenseGlobals.getDefenseCannonAmmoDuration(ammoSkillId): if ammoSkillId in ammoHitSfx: sfx = ammoHitSfx[ammoSkillId] base.playSfx(sfx, node = cannonball, cutoff = 6000) return cannonball
def createTextBox(self): if self.infoBox: return None globalPos = self.getPos(base.a2dLeftCenter) self.infoBox = None self.infoBox = BorderFrame(parent=base.a2dLeftCenter, frameSize=(-0.040000000000000001, 0.5, -0.25, 0.050000000000000003), pos=(globalPos.getX() + 0.12, 0, globalPos.getZ()), state=DGG.DISABLED) self.label = DirectLabel( parent=self.infoBox, relief=None, text=PLocalizer.CannonDefenseAmmoDesc % (PLocalizer.makeHeadingString( PLocalizer.InventoryTypeNames[self.skillId], 2), self.cost, self.amount, PLocalizer.CannonDefenseAmmoTypeDesc[self.skillId]), text_align=TextNode.ALeft, text_scale=PiratesGuiGlobals.TextScaleLarge, text_fg=PiratesGuiGlobals.TextFG2, text_wordwrap=12, textMayChange=1) if self.locked: memberText = '' if self.skillId > CannonDefenseGlobals.FREEBOOTER_LAST_AMMO_AVAILABLE: memberText = PLocalizer.VR_AuthAccess self.label['text'] = PLocalizer.CannonDefenseAmmoUnlockedAt % ( CannonDefenseGlobals.getLevelUnlockedAt( self.skillId), memberText) self.infoBox.setBin('gui-cannonDefense', 4)
def addProximityAmmoFromAI(self, shotNum, pos, ammoSkillId, attackerId, timeRemaining, projectileHitEvent, buffs=[]): self.ammoSequence = self.ammoSequence + 1 & 255 cannonball = self.getProjectile(ammoSkillId, projectileHitEvent, buffs) cannonball.setTag('shotNum', str(shotNum)) cannonball.setTag('ammoSequence', str(self.ammoSequence)) cannonball.setTag('skillId', str(InventoryType.CannonShoot)) cannonball.setTag('ammoSkillId', str(ammoSkillId)) cannonball.setTag('attackerId', str(attackerId)) cannonball.setPos(pos) if ammoSkillId != InventoryType.DefenseCannonSmokePowder: cannonball.setZ(1) collNode = cannonball.getCollNode() collNode.reparentTo(render) if ammoSkillId == InventoryType.DefenseCannonMine: cannonball.addInWaterMine(timeRemaining) else: if ammoSkillId == InventoryType.DefenseCannonPowderKeg: cannonball.addPowderKeg(timeRemaining) elif ammoSkillId == InventoryType.DefenseCannonSmokePowder: cannonball.addSmokePowder(timeRemaining) else: cannonball.addColdShot(timeRemaining) if timeRemaining == CannonDefenseGlobals.getDefenseCannonAmmoDuration(ammoSkillId): if ammoSkillId in ammoHitSfx: sfx = ammoHitSfx[ammoSkillId] base.playSfx(sfx, node=cannonball, cutoff=6000) return cannonball
def addAmmoSkill(self, skillId): index = -1 for i in range(len(PiratesGlobals.CANNON_DEFENSE_SKILLS)): if PiratesGlobals.CANNON_DEFENSE_SKILLS[i] == InventoryType.DefenseCannonEmpty: index = i break if index < 0 or not Freebooter.getPaidStatus(base.localAvatar.doId) and index >= CannonDefenseGlobals.FREEBOOTER_MAX_AMMO_SLOTS: return False PiratesGlobals.CANNON_DEFENSE_SKILLS.remove(InventoryType.DefenseCannonEmpty) PiratesGlobals.CANNON_DEFENSE_SKILLS.insert(index, skillId) self.ammoQuantities[skillId] = CannonDefenseGlobals.getDefenseCannonAmmoAmount(skillId) return True
def addAmmoSkill(self, skillId): index = -1 for i in range(len(PiratesGlobals.CANNON_DEFENSE_SKILLS)): if PiratesGlobals.CANNON_DEFENSE_SKILLS[i] == InventoryType.DefenseCannonEmpty: index = i break continue if (index < 0 or not Freebooter.getPaidStatus(base.localAvatar.doId)) and index >= CannonDefenseGlobals.FREEBOOTER_MAX_AMMO_SLOTS: return False PiratesGlobals.CANNON_DEFENSE_SKILLS.remove(InventoryType.DefenseCannonEmpty) PiratesGlobals.CANNON_DEFENSE_SKILLS.insert(index, skillId) self.ammoQuantities[skillId] = CannonDefenseGlobals.getDefenseCannonAmmoAmount(skillId) return True
def createTextBox(self): if self.infoBox: return None globalPos = self.getPos(base.a2dLeftCenter) self.infoBox = None self.infoBox = BorderFrame(parent = base.a2dLeftCenter, frameSize = (-0.040000000000000001, 0.5, -0.25, 0.050000000000000003), pos = (globalPos.getX() + 0.12, 0, globalPos.getZ()), state = DGG.DISABLED) self.label = DirectLabel(parent = self.infoBox, relief = None, text = PLocalizer.CannonDefenseAmmoDesc % (PLocalizer.makeHeadingString(PLocalizer.InventoryTypeNames[self.skillId], 2), self.cost, self.amount, PLocalizer.CannonDefenseAmmoTypeDesc[self.skillId]), text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG2, text_wordwrap = 12, textMayChange = 1) if self.locked: memberText = '' if self.skillId > CannonDefenseGlobals.FREEBOOTER_LAST_AMMO_AVAILABLE: memberText = PLocalizer.VR_AuthAccess self.label['text'] = PLocalizer.CannonDefenseAmmoUnlockedAt % (CannonDefenseGlobals.getLevelUnlockedAt(self.skillId), memberText) self.infoBox.setBin('gui-cannonDefense', 4)
def addDefaultAmmo(self): default = InventoryType.DefenseCannonRoundShot PiratesGlobals.CANNON_DEFENSE_SKILLS.append(default) self.ammoQuantities[default] = CannonDefenseGlobals.getDefenseCannonAmmoAmount(default) base.localAvatar.guiMgr.combatTray.triggerSkillTraySkill(default)