示例#1
0
 def __init__(self, cannon):
     CannonGUI.__init__(self, cannon)
     self.exitEvent = None
     self.__dialog = None
     self.helpButton = None
     self.helpUI = None
     self.flashHelp = None
     self.ammoFade = None
     self.__ammoCountersHidden = False
     self.setupExtraButtons()
     self.exitCannon['command'] = self.showExitDialog
     self.volleyLabel.setPos(-0.28, 0, 0.09)
     self.reloadBar.setPos(-0.13, 0, 0.08)
     self.ammoImage.setPos(-0.38, 0, 0.06)
     self.repMeter = ReputationMeter(InventoryType.DefenseCannonRep,
                                     width=0.7)
     self.repMeter.reparentTo(base.a2dBottomCenter)
     self.repMeter.setPos(0.0, 0.0, 0.025)
     self.hud = CannonDefenseHUD()
     self.hud.create()
     self._exp = 0
     self.lastLevel = 1
     self.accept('incDefenseCannonExp', self.increaseExp)
     if __dev__:
         base.dcg = self
     return
示例#2
0
    def __init__(self):
        if not SkillPage.SkillIcons:
            SkillPage.SkillIcons = loader.loadModel(
                'models/textureCards/skillIcons')
            SkillPage.WeaponIcons = loader.loadModel(
                'models/gui/gui_icons_weapon')
            SkillPage.DotTex = SkillPage.SkillIcons.find(
                '**/skill_tree_level_dot')
            SkillPage.FrameTex = SkillPage.SkillIcons.find(
                '**/skill_tree_level_ring')

        InventoryPage.InventoryPage.__init__(self)
        self.initialiseoptions(SkillPage)
        self.tabBar = None
        self.currentRep = InventoryType.CannonRep
        self.skillFrames = {}
        self.boostDisplays = {}
        self.backFrames = {}
        self.lastUserSelectedTab = None
        self.dataChanged = True
        self.spentDialog = None
        self.localMods = {}
        self.demo = False
        self.demoSeq = None
        self.blinkSeqs = []
        self.blinkSeqs2 = []
        ornament = loader.loadModel('models/gui/gui_skill_window')
        ornament.find('**/pPlane81').detachNode()
        ornament.find('**/pPlane83').detachNode()
        ornament.find('**/pPlane84').detachNode()
        ornament.find('**/pPlane93').detachNode()
        ornament.setScale(0.32500000000000001, 0, 0.32000000000000001)
        ornament.setPos(0.54000000000000004, 0, 0.71999999999999997)
        ornament.flattenStrong()
        ornament.reparentTo(self)
        self.box = loader.loadModel('models/gui/gui_title_box').find(
            '**/gui_title_box_top')
        box = loader.loadModel('models/gui/gui_title_box').find(
            '**/gui_title_box_top')
        box.setPos(0.55000000000000004, 0, 1.26)
        box.setScale(0.32500000000000001, 0.0, 0.25)
        box.reparentTo(ornament)
        ornament.flattenStrong()
        self.repMeter = ReputationMeter(self.getRep(),
                                        width=0.69999999999999996)
        self.repMeter.reparentTo(self)
        self.repMeter.setPos(0.55000000000000004, 0, 1.24)
        self.unspent = DirectLabel(parent=self,
                                   relief=None,
                                   text=PLocalizer.SkillPageUnspentPoints % 0,
                                   text_scale=0.040000000000000001,
                                   text_align=TextNode.ACenter,
                                   text_pos=(0, -0.01),
                                   text_fg=(1, 1, 1, 1),
                                   pos=(0.80000000000000004, 0, 0.02))
 def rePanel(self, inventory):
     if not self.showing:
         self.needRefresh = 1
         return None
     
     skillTokens = {
         InventoryType.CutlassToken: (ItemGlobals.RUSTY_CUTLASS,),
         InventoryType.PistolToken: (ItemGlobals.FLINTLOCK_PISTOL,),
         InventoryType.DollToken: (ItemGlobals.VOODOO_DOLL,),
         InventoryType.DaggerToken: (ItemGlobals.BASIC_DAGGER,),
         InventoryType.GrenadeToken: (ItemGlobals.GRENADE_POUCH,),
         InventoryType.WandToken: (ItemGlobals.CURSED_STAFF,) }
     zIndex = 1
     for skillTokenKey in TOKEN_LIST:
         quantity = 0
         if localAvatar.getInventory().stacks.get(skillTokenKey):
             quantity = 1
         
         skillData = skillTokens[skillTokenKey]
         weaponId = skillData[0]
         key = None
         panel = WeaponPanel.WeaponPanel((weaponId, quantity), key)
         panel.reparentTo(self)
         panel.setZ(PiratesGuiGlobals.InventoryPanelHeight - 0.17999999999999999 - zIndex * panel.height)
         zIndex += 1
         repCat = WeaponGlobals.getRepId(weaponId)
         self.weaponPanels[repCat] = panel
         self.ignore('inventoryQuantity-%s' % inventory.getDoId())
         self.acceptOnce('inventoryQuantity-%s-%s' % (inventory.getDoId(), skillTokenKey), self.refreshList)
     
     repIcon_gui = loader.loadModel('models/textureCards/skillIcons')
     repIcon = repIcon_gui.find('**/box_base')
     if config.GetBool('want-fishing-game', 0):
         self.fishingIcon = GuiButton(pos = (0.16600000000000001, 0, 0.044999999999999998 + (PiratesGuiGlobals.InventoryPanelHeight - 0.17999999999999999) - zIndex * panel.height), helpText = PLocalizer.FishingRepDescription, helpOpaque = True, image = (repIcon, repIcon, repIcon, repIcon), image_scale = (0.14399999999999999, 0.14399999999999999, 0.14399999999999999))
         fishIconCard = loader.loadModel('models/textureCards/fishing_icons')
         inv = localAvatar.getInventory()
         fishingChangeMsg = InventoryGlobals.getCategoryQuantChangeMsg(inv.doId, InventoryType.FishingRod)
         if self.fishingChangeMsg:
             self.ignore(fishingChangeMsg)
         
         self.fishingChangeMsg = fishingChangeMsg
         self.acceptOnce(fishingChangeMsg, self.refreshList)
         rodIcons = [
             'pir_t_gui_fsh_smRodIcon',
             'pir_t_gui_fsh_mdRodIcon',
             'pir_t_gui_fsh_lgRodIcon']
         rodLvl = inv.getStackQuantity(InventoryType.FishingRod)
         rodIcon = rodIcons[rodLvl - 1]
         rodText = PLocalizer.FishingRodNames[rodLvl]
         if rodLvl >= 1:
             self.fishingIcon['geom'] = fishIconCard.find('**/' + rodIcon)
         
         self.fishingIcon['geom_scale'] = 0.10000000000000001
         self.fishingIcon['geom_pos'] = (0, 0, 0)
         self.fishingIcon.reparentTo(self)
         fishingRepValue = localAvatar.getInventory().getReputation(InventoryType.FishingRep)
         self.fishingRepMeter = ReputationMeter(InventoryType.FishingRep, width = 0.66000000000000003)
         self.fishingRepMeter.setPos(0.62, 0, 0.041000000000000002 + (PiratesGuiGlobals.InventoryPanelHeight - 0.17999999999999999) - zIndex * panel.height)
         self.fishingRepMeter.update(fishingRepValue)
         self.fishingRepMeter.reparentTo(self)
         self.fishingRepMeter.flattenLight()
         self.fishingPoleName = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = rodText, text_scale = PiratesGuiGlobals.TextScaleSmall, text_align = TextNode.ALeft, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, pos = (0.28999999999999998, 0, -0.0050000000000000001 + (PiratesGuiGlobals.InventoryPanelHeight - 0.17999999999999999) - 7 * panel.height), text_font = PiratesGlobals.getInterfaceFont())
         self.fishingPoleName.reparentTo(self)
         zIndex += 1
     
     iconCard = loader.loadModel('models/textureCards/skillIcons')
     if config.GetBool('want-potion-game', 0):
         self.potionIcon = GuiButton(pos = (0.16600000000000001, 0, 0.044999999999999998 + (PiratesGuiGlobals.InventoryPanelHeight - 0.17999999999999999) - zIndex * panel.height), helpText = PLocalizer.PotionRepDescription, helpOpaque = True, image = (repIcon, repIcon, repIcon, repIcon), image_scale = (0.14399999999999999, 0.14399999999999999, 0.14399999999999999))
         self.potionIcon['geom'] = iconCard.find('**/pir_t_gui_pot_base')
         self.potionIcon['geom_scale'] = 0.10000000000000001
         self.potionIcon['geom_pos'] = (0, 0, 0)
         self.potionIcon.reparentTo(self)
         potionRepValue = localAvatar.getInventory().getReputation(InventoryType.PotionsRep)
         self.potionRepMeter = ReputationMeter(InventoryType.PotionsRep, width = 0.66000000000000003)
         self.potionRepMeter.setPos(0.62, 0, 0.041000000000000002 + (PiratesGuiGlobals.InventoryPanelHeight - 0.17999999999999999) - zIndex * panel.height)
         self.potionRepMeter.update(potionRepValue)
         self.potionRepMeter.reparentTo(self)
         self.potionRepMeter.flattenLight()
         zIndex += 1
     
     items = dict(map(lambda x: (x.getType(), x.getCount()), inventory.getConsumables().values()))
     possibleItems = ItemGlobals.getAllHealthIds()
     havePorky = items.get(ItemGlobals.ROAST_PORK)
     if not havePorky and ItemGlobals.ROAST_PORK in possibleItems:
         possibleItems.remove(ItemGlobals.ROAST_PORK)
     
     offset = 0
     if base.config.GetBool('want-potion-game', 0):
         items = inventory.getConsumables()
         listLength = len(InventoryType.PotionMinigamePotions)
         count = 0
         for i in range(listLength):
             tonicId = InventoryType.PotionMinigamePotions[i]
             if items.get(tonicId):
                 button = SkillButton(tonicId, self.tonicCallback, items.get(tonicId), showQuantity = True, showHelp = True, showRing = True)
                 button.skillButton['geom_scale'] = 0.080000000000000002
                 x = 0.16 * (count % 6) + -1.2
                 z = 1.0 - int(count / 6) * 0.16
                 button.setPos(x, 0, z)
                 button.reparentTo(self)
                 self.tonicButtons[tonicId] = button
                 count += 1
                 continue
示例#4
0
 def createGui(self):
     itemId = self.data[0]
     (item, quantity) = self.data
     name = ItemGlobals.getName(item)
     itemType = ItemGlobals.getType(item)
     itemTypeName = name
     repCategory = ItemGlobals.getItemRepId(itemId)
     if quantity:
         repValue = localAvatar.getInventory().getReputation(repCategory)
         self.repMeter = ReputationMeter(repCategory,
                                         width=0.66000000000000003)
         self.repMeter.setPos(0.62, 0, 0.041000000000000002)
         self.repMeter.update(repValue)
         self.repMeter.reparentTo(self)
         self.repMeter.flattenLight()
         hotkeyLabel = ''
         hotkeys = ()
         desc = PLocalizer.WeaponDescriptions.get(itemId)
         helpText = PLocalizer.InventoryTypeNames[repCategory]
         self.weaponButton = CombatTray.WeaponButton(
             hotkeys=hotkeys,
             hotkeyLabel=hotkeyLabel,
             helpOpaque=True,
             helpText=helpText,
             parent=self,
             showQuant=0,
             pos=(0.10000000000000001, 0, -0.02),
             scale=1.1000000000000001)
         self.weaponButton.ignoreHotkeys()
         self.weaponButton.setWeaponId(itemId)
         self.weaponButton['extraArgs'] = [itemId]
         self.weaponButton.helpDelay = 0
         self.weaponButton.helpPos = (0.12, 0, -0.040000000000000001)
         self.desc = DirectLabel(
             parent=self,
             relief=None,
             state=DGG.DISABLED,
             text=PLocalizer.WeaponAlreadyUnlocked,
             text_scale=PiratesGuiGlobals.TextScaleSmall,
             text_align=TextNode.ALeft,
             text_fg=PiratesGuiGlobals.TextFG2,
             text_shadow=PiratesGuiGlobals.TextShadow,
             pos=(0.28999999999999998, 0, -0.0050000000000000001),
             text_font=PiratesGlobals.getInterfaceFont())
     else:
         self.repMeter = None
         name = PLocalizer.makeHeadingString(
             PLocalizer.InventoryTypeNames[repCategory], 2)
         self.categoryLabel = DirectLabel(
             parent=self,
             relief=None,
             text=name,
             text_scale=PiratesGuiGlobals.TextScaleLarge,
             text_align=TextNode.ALeft,
             text_shadow=PiratesGuiGlobals.TextShadow,
             pos=(0.28999999999999998, 0, 0.059999999999999998),
             textMayChange=0)
         self.weaponButton = CombatTray.WeaponButton(
             parent=self,
             state=DGG.DISABLED,
             showQuant=0,
             scale=1.1000000000000001)
         self.weaponButton.setPos(0.10000000000000001, 0, -0.02)
         self.weaponButton.setWeaponId(itemId)
         self.weaponButton.helpDelay = 0
         self.weaponButton.helpPos = (0.12, 0, -0.040000000000000001)
         unlockDesc = PLocalizer.WeaponUnlockText[repCategory]
         self.desc = DirectLabel(
             parent=self,
             relief=None,
             state=DGG.DISABLED,
             text=unlockDesc,
             text_scale=PiratesGuiGlobals.TextScaleSmall,
             text_align=TextNode.ALeft,
             text_fg=PiratesGuiGlobals.TextFG2,
             text_shadow=PiratesGuiGlobals.TextShadow,
             pos=(0.28999999999999998, 0, 0.025000000000000001),
             text_font=PiratesGlobals.getInterfaceFont())
         self.setColorScale(0.40000000000000002, 0.40000000000000002,
                            0.40000000000000002, 1, 1)
示例#5
0
 def updateSkillTray(self, rep, weaponMode, callback = None, hideFirst = True):
     if rep == InventoryType.MeleeRep:
         return None
     
     if not callback:
         callback = localAvatar.guiMgr.combatTray.triggerSkillTraySkill
     
     if taskMgr.hasTaskNamed('updateSkillTray'):
         taskMgr.remove('updateSkillTray')
     
     if self.skillTrayState and hideFirst:
         self.hideSkillTray()
         taskMgr.doMethodLater(0.75, self.updateSkillTray, 'updateSkillTray', extraArgs = [
             rep,
             weaponMode,
             callback])
         return None
     
     text = PLocalizer.InventoryTypeNames.get(rep, 'Unknown')
     for i in range(self.numberOfItems):
         self.tray[i + 1].destroy()
     
     self.tray = { }
     if self.repMeter:
         self.repMeter.destroy()
     
     self.rep = rep
     self.weaponMode = weaponMode
     self.callback = callback
     linkedSkillIds = { }
     linkedSkills = ItemGlobals.getLinkedSkills(localAvatar.currentWeaponId)
     for skillId in linkedSkills:
         realSkillId = WeaponGlobals.getLinkedSkillId(skillId)
         linkedSkillIds[realSkillId] = skillId
     
     skillMap = []
     self.origMap = getAllSkills(self.rep, 2, wantWeaponSkill = 1)
     for i in range(len(self.origMap)):
         skillMap.append(self.origMap[i][0])
     
     self.traySkillMap = skillMap
     self.numberOfItems = len(self.traySkillMap)
     self.skillTray.setX(0)
     if self.rep != InventoryType.DefenseCannonRep:
         self.repMeter = ReputationMeter(self.rep, width = 0.69999999999999996)
         self.repMeter.setScale(1.1499999999999999, 1.1499999999999999, 1.1499999999999999)
         self.repMeter.reparentTo(self.skillTray)
         self.repMeter.setCategory(self.rep)
     
     inv = base.localAvatar.getInventory()
     if inv is None:
         return None
     
     if self.repMeter:
         self.repMeter.update(inv.getReputation(self.rep))
     
     x = 0.0
     offset = 0.0
     for i in range(self.numberOfItems):
         if self.origMap[i][1] == False:
             locked = False
             if locked:
                 image = (self.SkillIcons.find('**/base'), self.SkillIcons.find('**/base_down'), self.SkillIcons.find('**/base_over'))
             else:
                 image = self.SkillIcons.find('**/base')
             button = DirectButton(parent = self.skillTray, relief = None, state = DGG.DISABLED, image = image, image_pos = (0.0, 0.0, 0.059999999999999998), image_scale = 0.12, image_color = (0.20000000000000001, 0.20000000000000001, 0.20000000000000001, 0.55000000000000004), sortOrder = 100, pos = (x, 0, -0.0))
             button.setTransparency(1)
             button.showQuantity = False
             button.greyOut = -1
             button.showRing = False
             button.skillStatus = False
             if locked:
                 lock = DirectFrame(parent = button, relief = None, image = self.lockArt, image_scale = 0.14000000000000001, image_pos = (0.050000000000000003, 0, 0.035000000000000003))
                 button['state'] = DGG.NORMAL
                 button['command'] = base.localAvatar.guiMgr.showNonPayer
                 button['extraArgs'] = [
                     'Restricted_Radial_Menu',
                     5]
             
             self.tray[i + 1] = button
             x = x + 0.14999999999999999
             if i < self.numberOfItems - 1:
                 offset = offset + 0.01
                 self.skillTray.setX(self.skillTray.getX() - 0.074999999999999997)
             
         i < self.numberOfItems - 1
         if self.origMap[i][1] == True:
             skillId = self.traySkillMap[i]
             if linkedSkillIds.has_key(skillId):
                 skillId = linkedSkillIds[skillId]
             
             name = PLocalizer.InventoryTypeNames[skillId]
             hotkey = str(i + 1)
             totalRechargeTime = base.cr.battleMgr.getModifiedRechargeTime(localAvatar, skillId)
             timeSpentRecharging = localAvatar.skillDiary.getTimeSpentRecharging(skillId)
             if not timeSpentRecharging:
                 timeSpentRecharging = 0
             
             if weaponMode not in (WeaponGlobals.CANNON, WeaponGlobals.FIREARM, WeaponGlobals.GRENADE, WeaponGlobals.STAFF, WeaponGlobals.DEFENSE_CANNON) and skillId in WeaponGlobals.SpecialSkills or WeaponGlobals.getSkillReputationCategoryId(skillId) not in (InventoryType.PistolRep, InventoryType.WandRep, InventoryType.CannonRep, InventoryType.GrenadeRep, InventoryType.DefenseCannonRep):
                 showRing = True
             else:
                 showRing = False
             locked = self.origMap[i][2]
             if weaponMode == WeaponGlobals.DEFENSE_CANNON:
                 button = AmmoSkillButton(skillId, i, self.callback, 99, 0, showQuantity = True, showHelp = False, showRing = showRing, hotkey = hotkey, name = name, showLock = locked)
             else:
                 button = SkillButton(skillId, self.callback, 0, 0, showQuantity = False, showHelp = False, showRing = showRing, hotkey = hotkey, name = name, showLock = locked)
             button.skillStatus = True
             if locked:
                 button.skillButton['command'] = base.localAvatar.guiMgr.showNonPayer
                 button.skillButton['extraArgs'] = [
                     'Restricted_Radial_Menu',
                     5]
             
             if showRing:
                 button.skillRing.meterFaceHalf1.setScale(0.95999999999999996)
                 button.skillRing.meterFaceHalf2.setScale(0.95999999999999996)
             
             button.reparentTo(self.skillTray)
             button.setPos(x, 0, 0.070000000000000007)
             self.tray[i + 1] = button
             if weaponMode in (WeaponGlobals.CANNON, WeaponGlobals.FIREARM, WeaponGlobals.GRENADE, WeaponGlobals.STAFF):
                 lastAmmo = localAvatar.guiMgr.combatTray.lastAmmoSkillId.get(localAvatar.currentWeaponId)
                 if lastAmmo is not None:
                     if lastAmmo == skillId:
                         button.toggleButton(True)
                     
                 elif self.tray[1].skillStatus is True:
                     self.tray[1].toggleButton(True)
                 
             
             if self.weaponMode in (WeaponGlobals.FIREARM, WeaponGlobals.THROWING, WeaponGlobals.CANNON, WeaponGlobals.GRENADE):
                 inv = localAvatar.getInventory()
                 maxQuant = WeaponGlobals.getSkillMaxQuantity(skillId)
                 if maxQuant == WeaponGlobals.INF_QUANT and WeaponGlobals.canUseInfiniteAmmo(localAvatar.currentWeaponId, skillId) or WeaponGlobals.canUseInfiniteAmmo(localAvatar.getCurrentCharm(), skillId):
                     ammoAmt = WeaponGlobals.INF_QUANT
                 else:
                     ammoInvId = WeaponGlobals.getSkillAmmoInventoryId(skillId)
                     ammoAmt = inv.getStackQuantity(ammoInvId)
                     ammoMax = inv.getStackLimit(ammoInvId)
                     button.showQuantity = True
                     button.updateQuantity(ammoAmt)
             
             x = x + 0.17000000000000001
             if i < self.numberOfItems - 1:
                 if weaponMode == WeaponGlobals.DEFENSE_CANNON:
                     self.skillTray.setX(self.skillTray.getX() - 0.072499999999999995)
                 else:
                     self.skillTray.setX(self.skillTray.getX() - 0.085000000000000006)
             
         i < self.numberOfItems - 1
     
     currentX = self.skillTray.getX()
     self.skillTray.setX(currentX + float(offset))
     if self.repMeter:
         self.repMeter.setPos(-currentX, 0.0, -0.11)
     
     self.updateSkillTrayStates()
     if weaponMode == WeaponGlobals.DEFENSE_CANNON:
         self.setMoveUpValue(0.34499999999999997)
     else:
         self.resetMoveUpVale()
     self.showSkillTray()