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)
示例#2
0
 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
示例#3
0
 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
示例#5
0
    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
示例#7
0
    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)
示例#10
0
 def addDefaultAmmo(self):
     default = InventoryType.DefenseCannonRoundShot
     PiratesGlobals.CANNON_DEFENSE_SKILLS.append(default)
     self.ammoQuantities[default] = CannonDefenseGlobals.getDefenseCannonAmmoAmount(default)
     base.localAvatar.guiMgr.combatTray.triggerSkillTraySkill(default)