示例#1
0
 def makeCell(self, cellImage = None, imageScale = None, imagePos = None):
     returnCell = InventoryUIContainer.InventoryUIContainer.makeCell(self, cellImage, imageScale, imagePos)
     textScale = 0.29999999999999999 * self.cellSizeX
     returnCell.label['text_align'] = TextNode.ALeft
     returnCell.label['text_scale'] = textScale
     returnCell.label['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
     returnCell.label['text_pos'] = (0.55000000000000004 * self.cellSizeX - 0, 0.45000000000000001 * self.cellSizeZ - textScale)
     returnCell.label['text_wordwrap'] = self.spaceSizeX / textScale
     returnCell.hide()
     return returnCell
示例#2
0
 def makeCheckbox(self, pos, text, command, initialState, extraArgs,
                  levelText):
     charGui = loader.loadModel('models/gui/toplevel_gui')
     buttonImage = (charGui.find('**/generic_button'),
                    charGui.find('**/generic_button'),
                    charGui.find('**/generic_button'),
                    charGui.find('**/generic_button'))
     geomCheck = [
         charGui.find('**/generic_check'),
         charGui.find('**/generic_check'),
         charGui.find('**/generic_check'), None
     ]
     c = DirectCheckButton(
         parent=self,
         relief=None,
         scale=0.064000000000000001,
         boxBorder=0.080000000000000002,
         boxRelief=None,
         boxImage=geomCheck,
         boxImageScale=6,
         boxImageColor=VBase4(0, 1, 0, 1),
         pos=pos,
         text=text,
         text_fg=PiratesGuiGlobals.TextFG1,
         text_scale=0.5,
         text_pos=(-2.3999999999999999, 0, -2.7999999999999998),
         text_align=TextNode.ALeft,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         indicator_pos=(2.2000000000000002, 0, 0.14999999999999999),
         command=command,
         indicatorValue=initialState,
         extraArgs=extraArgs,
         text0_fg=PiratesGuiGlobals.TextFG1,
         text1_fg=PiratesGuiGlobals.TextFG1,
         text2_fg=PiratesGuiGlobals.TextFG1,
         text3_fg=PiratesGuiGlobals.TextFG1,
         text_shadow=PiratesGuiGlobals.TextShadow,
         image=buttonImage,
         image_pos=(0, 0, 0.14999999999999999),
         image_scale=(6, 1, 2.4500000000000002),
         state=DGG.DISABLED)
     l = DirectLabel(parent=c,
                     text=levelText,
                     text_font=PiratesGlobals.getInterfaceFont(),
                     text_scale=0.5,
                     text_align=TextNode.ALeft,
                     frameColor=(0.80000000000000004, 0.69999999999999996,
                                 0.5, 1),
                     pos=(-0.29999999999999999, 0, 0))
     c.setIndicatorValue()
     del charGui
     return c
    def refreshList(self, setKey=0):
        if setKey == 0 or setKey == None:
            return None

        if self.currentDisplay != 0:
            oldSize = CollectionMap.Collection_Set_Sizes.get(self.currentDisplay)
            for loopItr in range(oldSize):
                curNum = self.currentDisplay + loopItr + 1
                if curNum in self.setPics:
                    self.setPics[curNum].hide()

                self.setFrames[curNum].hide()

        self.currentDisplay = setKey
        self.setLabel["text"] = PLocalizer.Collections[setKey]
        inv = localAvatar.getInventory()
        if not inv:
            return None

        setCount = 0
        heightOffset = 0
        setSize = CollectionMap.Collection_Set_Sizes.get(setKey)
        gui = loader.loadModel("models/gui/toplevel_gui")
        for loopItr in range(setSize):
            setItem = setKey + 1 + loopItr
            rowSpot = loopItr % 4
            colSpot = loopItr / 4
            localHeight = PiratesGuiGlobals.InventoryPanelHeight - 0.20000000000000001
            howMany = inv.getStackQuantity(setItem)
            if setItem in CollectionMap.Collection_Set_Locked:
                if not Freebooter.getPaidStatus(base.localAvatar.getDoId()):
                    isLocked = True
                else:
                    isLocked = False
            else:
                isLocked = False
            if isLocked or howMany > 0:
                if setItem in self.setPics:
                    self.setPics[setItem].show()
                    self.setFrames[setItem].show()
                else:
                    frameImg = gui.find("**/treasure_w_b_slot_full")
                    self.setFrames[setItem] = DirectFrame(
                        parent=self,
                        relief=None,
                        image=frameImg,
                        image_scale=0.40000000000000002,
                        image_pos=(0, 0, 0),
                        pos=(
                            0.28000000000000003 + 0.17999999999999999 * rowSpot,
                            0,
                            localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot,
                        ),
                    )
                    pic_name = CollectionMap.Assets[setItem]
                    if isLocked:
                        tex = gui.find("**/pir_t_gui_gen_key_subscriber")
                        use_scale = 0.25
                        self.setPics[setItem] = DirectButton(
                            parent=self,
                            relief=None,
                            image=tex,
                            image_scale=use_scale,
                            image_pos=(0, 0, 0),
                            pos=(
                                0.28000000000000003 + 0.17999999999999999 * rowSpot,
                                0,
                                localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot,
                            ),
                            text=PLocalizer.Collections[setItem],
                            text_fg=PiratesGuiGlobals.TextFG2,
                            text_align=TextNode.ACenter,
                            text_wordwrap=6,
                            text_scale=0.025000000000000001,
                            text_pos=(0, -0.085000000000000006, 0),
                            command=base.localAvatar.guiMgr.showNonPayer,
                            extraArgs=["Restricted_Treasure_Selection", 7],
                        )
                    else:
                        tex = self.card.find("**/%s*" % pic_name)
                        use_scale = 0.39000000000000001
                        self.setPics[setItem] = DirectButton(
                            parent=self,
                            relief=None,
                            image=tex,
                            image_scale=use_scale,
                            image_pos=(0, 0, 0),
                            pos=(
                                0.28000000000000003 + 0.17999999999999999 * rowSpot,
                                0,
                                localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot,
                            ),
                            command=self.clickedTreasure,
                            extraArgs=[setItem],
                            text=PLocalizer.Collections[setItem],
                            text_fg=PiratesGuiGlobals.TextFG2,
                            text_align=TextNode.ACenter,
                            text_wordwrap=6,
                            text_scale=0.025000000000000001,
                            text_pos=(0, -0.085000000000000006, 0),
                        )
                    self.setPics[setItem].setTransparency(1)
                if setItem in CollectionMap.Collection_Needed:
                    howManyINeed = CollectionMap.Collection_Needed[setItem]
                else:
                    howManyINeed = 1
                if setItem in CollectionMap.Collection_SingleNumeric:
                    if howMany > 0:
                        if howMany == 1:
                            weightTxt = "Lb"
                        else:
                            weightTxt = "Lbs"
                        if setItem in self.setHowMany:
                            self.setHowMany[setItem]["text"] = "%d %s" % (howMany, weightTxt)
                        else:
                            self.setHowMany[setItem] = DirectLabel(
                                parent=self.setPics[setItem],
                                relief=None,
                                text="%d %s" % (howMany, weightTxt),
                                text_align=TextNode.ARight,
                                text_scale=0.040000000000000001,
                                text_fg=PiratesGuiGlobals.TextFG2,
                                text_shadow=PiratesGuiGlobals.TextShadow,
                                textMayChange=1,
                                pos=(0.080000000000000002, 0, -0.050000000000000003),
                                text_font=PiratesGlobals.getInterfaceOutlineFont(),
                            )

                elif setItem in self.setHowMany:
                    if howManyINeed < 2:
                        self.setHowMany[setItem].hide()
                    else:
                        self.setHowMany[setItem]["text"] = "%d/%d" % (howMany, howManyINeed)
                        self.setHowMany[setItem].show()
                elif howMany > 1:
                    self.setHowMany[setItem] = DirectLabel(
                        parent=self.setPics[setItem],
                        relief=None,
                        text="%d/%d" % (howMany, howManyINeed),
                        text_align=TextNode.ARight,
                        text_scale=0.040000000000000001,
                        text_fg=PiratesGuiGlobals.TextFG2,
                        text_shadow=PiratesGuiGlobals.TextShadow,
                        textMayChange=1,
                        pos=(0.080000000000000002, 0, -0.050000000000000003),
                        text_font=PiratesGlobals.getInterfaceOutlineFont(),
                    )

                if isLocked:
                    if setItem in self.setHowMany:
                        self.setHowMany[setItem].hide()

            if setItem in self.setFrames:
                self.setFrames[setItem].show()
                continue
            frameImg = gui.find("**/treasure_w_b_slot_empty")
            self.setFrames[setItem] = DirectFrame(
                parent=self,
                relief=None,
                image=frameImg,
                image_scale=0.40000000000000002,
                image_pos=(0, 0, 0),
                pos=(
                    0.28000000000000003 + 0.17999999999999999 * rowSpot,
                    0,
                    localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot,
                ),
            )

        gui.removeNode()
示例#4
0
    def _createIface(self):
        self.descText = DirectLabel(
            parent=self,
            relief=None,
            text=self.item.get('Text'),
            text_align=TextNode.ALeft,
            text_scale=0.050000000000000003,
            text_fg=PiratesGuiGlobals.TextFG2,
            text_shadow=PiratesGuiGlobals.TextShadow,
            textMayChange=1,
            pos=(0.02, 0, self.height / 2),
            text_font=PiratesGlobals.getInterfaceOutlineFont())
        self.valueText = DirectLabel(
            parent=self,
            relief=None,
            text=str(self.item.get('Value1')),
            text_align=TextNode.ALeft,
            text_scale=0.050000000000000003,
            text_fg=PiratesGuiGlobals.TextFG2,
            text_shadow=PiratesGuiGlobals.TextShadow,
            textMayChange=1,
            pos=(self.width * 0.65000000000000002, 0, self.height / 2),
            text_font=PiratesGlobals.getInterfaceOutlineFont())
        if self.item.get('Type') == 'Title':
            self.descText['text_scale'] = 0.055
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG1
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.valueText['text_scale'] = 0.044999999999999998
            self.valueText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            if self.item.has_key('Value2'):
                self.valueText2 = DirectLabel(
                    parent=self,
                    relief=None,
                    text=str(self.item.get('Value2')),
                    text_align=TextNode.ALeft,
                    text_scale=0.050000000000000003,
                    text_fg=PiratesGuiGlobals.TextFG2,
                    text_shadow=PiratesGuiGlobals.TextShadow,
                    textMayChange=1,
                    pos=(self.width * 0.80000000000000004, 0, self.height / 2),
                    text_font=PiratesGlobals.getInterfaceOutlineFont())

            if self.valueText2:
                self.valueText2['text_scale'] = 0.044999999999999998
                self.valueText2[
                    'text_font'] = PiratesGlobals.getInterfaceOutlineFont()

        elif self.item.get('Type') == 'Entry':
            self.descText['text_pos'] = (self.width * 0.059999999999999998, 0,
                                         0)
            if self.item.has_key('Value2'):
                self.valueText2 = DirectLabel(
                    parent=self,
                    relief=None,
                    text=str(self.item.get('Value2')),
                    text_align=TextNode.ALeft,
                    text_scale=0.050000000000000003,
                    text_fg=PiratesGuiGlobals.TextFG2,
                    text_shadow=PiratesGuiGlobals.TextShadow,
                    textMayChange=1,
                    pos=(self.width * 0.80000000000000004, 0, self.height / 2),
                    text_font=PiratesGlobals.getInterfaceOutlineFont())

        elif self.item.get('Type') == 'Space':
            self.descText['text_scale'] = 0.02
            self.descText['text'] = ' '
            self.valueText['text_scale'] = 0.02
            self.valueText['text'] = ' '
        elif self.item.get('Type') == 'Button':
            self.descText['text_pos'] = (self.width * 0.059999999999999998, 0,
                                         0)
            self.valueText['text'] = ' '
            self.button = DirectButton(
                parent=self,
                relief=DGG.RIDGE,
                text=self.item.get('Text'),
                text_align=TextNode.ALeft,
                text_scale=PiratesGuiGlobals.TextScaleLarge,
                text_fg=PiratesGuiGlobals.TextFG1,
                text_shadow=PiratesGuiGlobals.TextShadow,
                frameColor=PiratesGuiGlobals.ButtonColor1,
                command=self.item.get('Value2'),
                pos=(self.width * 0.65000000000000002, 0, self.height / 2),
                borderWidth=(0.01, 0.01),
                pad=(0.0050000000000000001, 0.0050000000000000001),
                textMayChange=1)
            if self.item.get('State') == 'off':
                self.button['state'] = DGG.DISABLED
                self.button['text_fg'] = PiratesGuiGlobals.TextFG3
            elif self.item.get('State') == 'oneShot':
                self.button.bind(DGG.B1RELEASE, self.disableButton)

        elif self.item.get('Type') == 'Cargo':
            itemId = self.item.get('Value1')
            iconId = EconomyGlobals.getCargoCategory(itemId)
            if not iconId:
                self.notify.error('Invalid Item in Cargo! item: %s' %
                                  (self.item, ))

            icon = self.icons.get(iconId)
            self.descText['geom'] = self.getCargoIcon(icon[0], icon[1])
            self.descText[
                'geom_scale'] = 0.089999999999999997 * self.height * 10
            self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
            self.descText['text_pos'] = (0.23999999999999999, 0, 0)
            self.descText['text'] = icon[2]
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = PLocalizer.UnknownGoldValue
            self.valueText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.valueText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            icon = self.icons.get(ItemId.CARGO_CRATE)
            self.descText2 = DirectLabel(
                parent=self,
                relief=None,
                text='?',
                text_align=TextNode.ACenter,
                text_scale=0.050000000000000003 * self.height * 10,
                text_fg=PiratesGuiGlobals.TextFG2,
                text_shadow=PiratesGuiGlobals.TextShadow,
                textMayChange=1,
                pos=(0.080000000000000002, 0, self.height / 2),
                geom=self.getCargoIcon(icon[0], icon[1]),
                geom_scale=0.089999999999999997 * self.height * 10,
                geom_pos=(0.10000000000000001, 0, 0.01),
                text_pos=(0.10000000000000001, 0, 0),
                geom_color=Vec4(0, 0, 0, 1),
                text_font=PiratesGlobals.getInterfaceOutlineFont())
        elif self.item.get('Type') == 'Gold':
            amount = self.item.get('Value2')
            itemName = PLocalizer.LootGold % amount
            self.descText['geom'] = self.getGoldIcon()
            self.descText[
                'geom_scale'] = 0.14999999999999999 * self.height * 10
            self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
            self.descText['text_pos'] = (0.23999999999999999, 0, 0)
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = ' '
        elif self.item.get('Type') == 'LootGold':
            amount = self.item.get('Amount')
            itemName = PLocalizer.PlunderGold
            self.descText['geom'] = self.getGoldIcon()
            self.descText[
                'geom_scale'] = 0.28000000000000003 * self.height * 10
            self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
            self.descText['text_pos'] = (0.23999999999999999, 0, 0)
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = '%s' % amount
        elif self.item.get('Type') == 'MaterialText':
            amount = self.item.get('Amount')
            itemName = PLocalizer.LootShare
            self.descText['geom'] = None
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = ''
        elif self.item.get('Type') == 'FreeMaterialRate':
            amount = self.item.get('Amount')
            itemName = PLocalizer.LimitedShare
            self.descText['geom'] = None
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = ''
        elif self.item.get('Type') == 'PaidMaterialRate':
            amount = self.item.get('Amount')
            itemName = PLocalizer.UnlimitedShare
            self.descText['geom'] = None
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = ''
        elif self.item.get('Type') == 'ShipMaterial':
            amount = self.item.get('Amount')
            typeId = self.item.get('Value1')
            itemName = PLocalizer.InventoryTypeNames.get(typeId, 'No Name')
            self.descText['geom'] = self.getMaterialIcon(typeId)
            self.descText[
                'geom_scale'] = 0.080000000000000002 * self.height * 10
            self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
            self.descText['text_pos'] = (0.23999999999999999, 0, 0)
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = '%s' % amount
        elif self.item.get('Type') == 'Weapon':
            itemId = self.item.get('Value1')
            itemName = PLocalizer.InventoryTypeNames.get(itemId)
            iconName = EconomyGlobals.getItemIcons(itemId)
            self.descText['geom'] = self.getWeaponIcon(iconName)
            self.descText[
                'geom_scale'] = 0.089999999999999997 * self.height * 10
            self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
            self.descText['text_pos'] = (0.23999999999999999, 0, 0)
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = ' '
        elif self.item.get('Type') == 'Ammo':
            itemId = self.item.get('Value1')
            amount = self.item.get('Value2')
            itemName = '%s %s' % (amount,
                                  PLocalizer.InventoryTypeNames.get(itemId))
            iconName = WeaponGlobals.getSkillIcon(itemId)
            self.descText['geom'] = self.getAmmoIcon(iconName)
            self.descText[
                'geom_scale'] = 0.089999999999999997 * self.height * 10
            self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
            self.descText['text_pos'] = (0.23999999999999999, 0, 0)
            self.descText['text'] = itemName
            self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
            self.descText[
                'text_font'] = PiratesGlobals.getInterfaceOutlineFont()
            self.descText[
                'text_scale'] = 0.050000000000000003 * self.height * 10
            self.descText.setTransparency(1)
            self.valueText['text'] = ' '
    def __init__(self, parent, showSkills = 0, **kw):
        GuiTray.GuiTray.__init__(self, parent, 0.75, 0.14999999999999999)
        self.initialiseoptions(StatusTray)
        self.name = None
        self.sticky = False
        self.level = 0
        self.doId = 0
        self.prevDoId = 0
        self.hideValues = 0
        self.card = None
        self.prevChange = 0
        self.prevRange = 0
        self.prevValue = 0
        self.fader = None
        self.skillEffects = { }
        self.durationTask = None
        self.nameLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, text = '', text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = Vec4(0.80000000000000004, 0.69999999999999996, 0.59999999999999998, 1), text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.040000000000000001, 0, 0.11), text_font = PiratesGlobals.getPirateBoldOutlineFont())
        self.stickyLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, text = '', text_align = TextNode.ARight, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.56999999999999995, 0, 0.025000000000000001), text_font = PiratesGlobals.getInterfaceOutlineFont())
        self.hpLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, frameColor = (0, 0, 0, 0.20000000000000001), frameSize = (-0.01, 0.40000000000000002, -0.014999999999999999, 0.040000000000000001), pos = (0.32000000000000001, 0, 0.0060000000000000001), text = PLocalizer.StatusTrayHp, text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 0)
        self.hpLabel.hide()
        self.voodooMeter = DirectWaitBar(parent = self, state = DGG.DISABLED, relief = DGG.RAISED, borderWidth = (0.0050000000000000001, 0.0050000000000000001), frameSize = (0.0, 0.53000000000000003, 0.0070000000000000001, 0.035000000000000003), frameColor = (0, 0, 0, 1), pos = (0.20000000000000001, 0, -0.055), range = 100, value = 100, barColor = (0.59999999999999998, 0.59999999999999998, 0.94999999999999996, 1), text = '', text_align = TextNode.ARight, text_scale = PiratesGuiGlobals.TextScaleMed, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_pos = (0.5, -0.035000000000000003, 0), text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 1, sortOrder = 0)
        self.voodooMeter.setTransparency(1)
        self.voodooMeter.component('text0').hide()
        self.hpMeter = DirectWaitBar(parent = self, state = DGG.DISABLED, relief = DGG.RAISED, borderWidth = (0.0050000000000000001, 0.0050000000000000001), frameSize = (0.0, 0.53000000000000003, 0.002, 0.029999999999999999), frameColor = (0, 0, 0, 1), pos = (0.20000000000000001, 0, 0.050000000000000003), range = 100, value = 100, barColor = (0.10000000000000001, 0.69999999999999996, 0.10000000000000001, 1), text = '', text_align = TextNode.ARight, text_scale = PiratesGuiGlobals.TextScaleMed, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_pos = (0.5, -0.044999999999999998, 0), text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 1, sortOrder = 0)
        self.hpMeter.setTransparency(1)
        self.hpMeter.component('text0').hide()
        self.hpMeterChange = DirectFrame(parent = self, state = DGG.DISABLED, frameSize = (0.0, 0.53000000000000003, 0.0, 0.025999999999999999), frameColor = (1.0, 0.0, 0.0, 1.0), pos = (0, 0, 0))
        self.hpMeterChange.setBin('gui-fixed', 0)
        self.hpMeterChange.hide()
        self.hpMeterDownIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.5, color = VBase4(0.69999999999999996, 0.10000000000000001, 0.10000000000000001, 1.0), blendType = 'easeOut'), LerpColorInterval(self.hpMeterChange, 0.25, color = VBase4(0.0, 0.0, 0.0, 1.0), blendType = 'easeOut'), Func(self.hpMeterChange.hide))
        self.hpMeterUpGreenIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.75, color = VBase4(0.10000000000000001, 0.69999999999999996, 0.10000000000000001, 1.0)), Func(self.hpMeterChange.hide))
        self.hpMeterUpRedIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.75, color = VBase4(1.0, 0.0, 0.0, 1.0)), Func(self.hpMeterChange.hide))
        self.hpMeterUpYellowIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.75, color = VBase4(1.0, 1.0, 0.10000000000000001, 1.0)), Func(self.hpMeterChange.hide))
        self.meterChangeOffset = (0.0, 0.0, 0.050000000000000003)
        self.prevTargetName = ''
        self.voodooLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, frameColor = (0, 0, 0, 0.20000000000000001), frameSize = (-0.01, 0.40000000000000002, -0.014999999999999999, 0.040000000000000001), pos = (0.32000000000000001, 0, -0.091999999999999998), text = PLocalizer.StatusTrayVoodoo, text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 0)
        self.voodooLabel.hide()
        self.statusEffectsPanel = StatusEffectsPanel.StatusEffectsPanel(parent = self)
        flagModel = loader.loadModel('models/gui/flag_icons')
        flagModel2 = loader.loadModel('models/gui/gui_icons_weapon')
        flagModels = [
            flagModel.find('**/flag_undead'),
            flagModel.find('**/flag_navy'),
            flagModel.find('**/flag_eitc'),
            flagModel2.find('**/pir_t_ico_dol_straw')]
        for icon in flagModels:
            if icon == flagModel2.find('**/pir_t_ico_dol_straw'):
                icon.setScale(0.10000000000000001)
            else:
                icon.setScale(0.44)
            icon.flattenStrong()

        self.icons = {
            PiratesGlobals.UNDEAD_TEAM: flagModels[0],
            PiratesGlobals.NAVY_TEAM: flagModels[1],
            PiratesGlobals.TRADING_CO_TEAM: flagModels[2],
            PiratesGlobals.FRENCH_UNDEAD_TEAM: flagModels[0],
            PiratesGlobals.SPANISH_UNDEAD_TEAM: flagModels[0],
            PiratesGlobals.PLAYER_TEAM: flagModels[3],
            PiratesGlobals.VOODOO_ZOMBIE_TEAM: flagModels[0],
            PiratesGlobals.BOUNTY_HUNTER_TEAM: flagModels[0] }
        self.pvpIcon = Beacon.getBeaconModel()
        self.pvpIcon.setScale(0.12)
        self.pvpIcon.flattenStrong()
        privateerLogos = loader.loadModel('models/textureCards/sailLogo')
        self.privateerLogos = {
            PVPGlobals.FrenchTeam: privateerLogos.find('**/logo_french_flag'),
            PVPGlobals.SpanishTeam: privateerLogos.find('**/logo_spanish_flag') }
        for logo in self.privateerLogos.itervalues():
            logo.setScale(0.073999999999999996)
            logo.flattenStrong()

        self.currentIcon = None
        if showSkills:
            self.card = loader.loadModel('models/textureCards/skillIcons')
            icons = loader.loadModel('models/gui/gui_icons_weapon')
            icons.reparentTo(self.card)
            self.reloadFrame = DirectFrame(parent = self, state = DGG.DISABLED, relief = None)
            self.reloadFrame.hide()
            self.activeName = DirectLabel(parent = self.reloadFrame, state = DGG.DISABLED, relief = None, text = 'Using Skill', text_align = TextNode.ARight, text_scale = 0.059999999999999998, pos = (-0.050000000000000003, 0, 0.01), text_fg = PiratesGuiGlobals.TextFG11, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getPirateOutlineFont())
            tex = self.card.find('**/base')
            self.reloadFrame['scale'] = 0.5
            self.reloadFrame['image'] = tex
            self.reloadFrame['image_scale'] = 0.085000000000000006
            self.reloadFrame['image_pos'] = (0, 0, 0.02)
            self.reloadFrame.setPos(0.12, 0, -0.019)
            self.reloadFrame.setScale(0.69999999999999996)
            tex = self.card.find('**/cutlass_sweep')
            self.skillFrame = DirectFrame(parent = self.reloadFrame, state = DGG.DISABLED, relief = None, sortOrder = 20, image_pos = (0, 0, 0))
            self.skillFrame.setTransparency(1)
            self.skillFrame['image'] = tex
            self.skillFrame['image_scale'] = 0.10000000000000001
            self.skillFrame['image_pos'] = (0, 0, 0.02)
            self.activeName['text_align'] = TextNode.ALeft
            self.activeName.setPos(0.089999999999999997, 0, 0.01)
示例#6
0
 def __init__(self,
              parent=None,
              type=PiratesGuiGlobals.REWARD_PANEL_BLACK_PEARL,
              doneCallback=None,
              **kw):
     optiondefs = (('pad', (0.55, 0.475), self.resetFrameSize),
                   ('pos', (0.4, 0, 0), None))
     self.defineoptions(kw, optiondefs)
     PDialog.__init__(self, parent)
     self.type = type
     if doneCallback:
         self.doneCallback = doneCallback
     else:
         self.doneCallback = self.cleanup
     self.showWeaponsTrack = None
     skillIcons = loader.loadModel('models/textureCards/skillIcons')
     weaponIcons = loader.loadModel('models/gui/gui_icons_weapon')
     isWeapon = TextDict[type]['isWeapon']
     if isWeapon:
         background = skillIcons.find('**/box_base_over')
         background.setTransparency(0.5)
         icon = weaponIcons.find('**/' + TextDict[type]['icon'])
         icon.setScale(0.75)
     else:
         background = skillIcons.find('**/base_over')
         icon = skillIcons.find('**/' + TextDict[type]['icon'])
     icon.reparentTo(background)
     self.congratsText = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         textMayChange=1,
         text=PLocalizer.RewardCongratulations,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         text_align=TextNode.ACenter,
         text_scale=0.12,
         text_fg=PiratesGuiGlobals.TextFG1,
         pos=(0.0, 0, 0.34))
     self.completeText = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         textMayChange=1,
         text=TextDict[type]['title'],
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         text_align=TextNode.ACenter,
         text_scale=0.05,
         text_fg=PiratesGuiGlobals.TextFG2,
         pos=(0, 0, 0.26))
     self.iconLabel = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=background,
         geom_scale=0.3,
         text=TextDict[type]['summary'],
         text_font=PiratesGlobals.getInterfaceFont(),
         text_align=TextNode.ACenter,
         text_scale=0.04,
         text_fg=PiratesGuiGlobals.TextFG1,
         text_pos=(0, 0.2),
         pos=(0, 0, -0.03))
     self.descriptionText = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         textMayChange=1,
         text=TextDict[type]['description'],
         text_font=PiratesGlobals.getInterfaceFont(),
         text_align=TextNode.ACenter,
         text_scale=0.038,
         text_fg=PiratesGuiGlobals.TextFG1,
         pos=(0, 0, -0.26))
     self.nextButton = GuiButton.GuiButton(
         parent=self,
         state=DGG.NORMAL,
         text=PLocalizer.lOk,
         textMayChange=1,
         text_scale=PiratesGuiGlobals.TextScaleMed,
         text_pos=(0, -0.01),
         pos=(0, 0, -0.5),
         command=self.doneCallback)
     self.borderFrame['borderScale'] = 1
     self.setupCustomReward()
     self.initialiseoptions(RewardPanel)
     self.setScale(1.25)
     return
示例#7
0
 def showDetails(self, cell, detailsPos, detailsHeight, event = None):
     self.notify.debug('Item showDetails')
     if self.manager.heldItem and self.manager.locked and cell.isEmpty() and self.isEmpty() or not (self.itemTuple):
         self.notify.debug(' early exit')
         return None
     
     inv = localAvatar.getInventory()
     if not inv:
         return None
     
     itemId = self.getId()
     self.helpFrame = DirectFrame(parent = self.manager, relief = None, state = DGG.DISABLED, sortOrder = 1)
     self.helpFrame.setBin('gui-popup', -5)
     detailGui = loader.loadModel('models/gui/gui_card_detail')
     topGui = loader.loadModel('models/gui/toplevel_gui')
     coinImage = topGui.find('**/treasure_w_coin*')
     self.SkillIcons = loader.loadModel('models/textureCards/skillIcons')
     self.BuffIcons = loader.loadModel('models/textureCards/buff_icons')
     border = self.SkillIcons.find('**/base')
     halfWidth = 0.29999999999999999
     halfHeight = 0.20000000000000001
     basePosX = cell.getX(aspect2d)
     basePosZ = cell.getZ(aspect2d)
     cellSizeX = 0.0
     cellSizeZ = 0.0
     if cell:
         cellSizeX = cell.cellSizeX
         cellSizeZ = cell.cellSizeZ
     
     textScale = PiratesGuiGlobals.TextScaleMed
     titleScale = PiratesGuiGlobals.TextScaleTitleSmall
     if len(self.getName()) >= 30:
         titleNameScale = PiratesGuiGlobals.TextScaleLarge
     else:
         titleNameScale = PiratesGuiGlobals.TextScaleExtraLarge
     subtitleScale = PiratesGuiGlobals.TextScaleMed
     iconScalar = 1.5
     borderScaler = 0.25
     splitHeight = 0.01
     vMargin = 0.029999999999999999
     runningVertPosition = 0.29999999999999999
     runningSize = 0.0
     labels = []
     titleColor = PiratesGuiGlobals.TextFG6
     rarity = ItemGlobals.getRarity(itemId)
     rarityText = PLocalizer.getItemRarityName(rarity)
     subtypeText = PLocalizer.getItemSubtypeName(ItemGlobals.getSubtype(itemId))
     if rarity == ItemGlobals.CRUDE:
         titleColor = PiratesGuiGlobals.TextFG24
     elif rarity == ItemGlobals.COMMON:
         titleColor = PiratesGuiGlobals.TextFG13
     elif rarity == ItemGlobals.RARE:
         titleColor = PiratesGuiGlobals.TextFG4
     elif rarity == ItemGlobals.FAMED:
         titleColor = PiratesGuiGlobals.TextFG5
     
     titleLabel = DirectLabel(parent = self, relief = None, text = self.getName(), text_scale = titleNameScale, text_fg = titleColor, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
     self.bg.setColor(titleColor)
     tHeight = 0.070000000000000007
     titleLabel.setZ(runningVertPosition)
     runningVertPosition -= tHeight
     runningSize += tHeight
     labels.append(titleLabel)
     subtitleLabel = DirectLabel(parent = self, relief = None, text = '\x001slant\x001%s %s\x002' % (rarityText, subtypeText), text_scale = subtitleScale, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
     subtHeight = 0.050000000000000003
     subtitleLabel.setZ(subtHeight * 0.5 + runningVertPosition)
     runningVertPosition -= subtHeight
     runningSize += subtHeight
     labels.append(subtitleLabel)
     itemType = ItemGlobals.getType(itemId)
     itemSubtype = ItemGlobals.getSubtype(itemId)
     model = ItemGlobals.getModel(itemId)
     if model:
         self.realItem = loader.loadModel('models/inventory/' + model)
         if self.realItem:
             posHpr = ItemGlobals.getModelPosHpr(model)
             if posHpr:
                 self.realItem.setPos(posHpr[0], posHpr[1], posHpr[2])
                 self.realItem.setHpr(posHpr[3], posHpr[4], posHpr[5])
             elif itemSubtype == ItemGlobals.RAM:
                 self.realItem.setPos(-1.5, 1.5, -0.59999999999999998)
                 self.realItem.setHpr(70, 160, -90)
             else:
                 self.realItem.setPos(0.0, 1.5, -0.059999999999999998)
                 self.realItem.setHpr(0, 90, 0)
             self.realItem.reparentTo(self.portraitSceneGraph)
         
     
     iHeight = 0.17999999999999999
     self.createBuffer()
     self.itemCard.setZ(runningVertPosition - 0.059999999999999998)
     runningVertPosition -= iHeight
     runningSize += iHeight
     labels.append(self.itemCard)
     itemCost = int(ItemGlobals.getGoldCost(itemId))
     if self.cell and self.cell.container:
         itemCost = int(itemCost * self.cell.container.getItemPriceMult())
     
     goldLabel = DirectLabel(parent = self, relief = None, image = coinImage, image_scale = 0.12, image_pos = Vec3(0.025000000000000001, 0, -0.02), text = str(itemCost), text_scale = subtitleScale, text_align = TextNode.ARight, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, pos = (halfWidth - 0.050000000000000003, 0.0, runningVertPosition + 0.080000000000000002), text_pos = (0.0, -textScale))
     labels.append(goldLabel)
     specialAttack = ItemGlobals.getSpecialAttack(itemId)
     if specialAttack:
         attackIcon = self.SkillIcons.find('**/%s' % WeaponGlobals.getSkillIcon(specialAttack))
         specialAttackNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.10000000000000001, geom = attackIcon, geom_scale = 0.10000000000000001, image_pos = (-0.070000000000000007, 0.0, -0.050000000000000003), geom_pos = (-0.070000000000000007, 0.0, -0.050000000000000003), text = PLocalizer.getInventoryTypeName(specialAttack), text_scale = PiratesGuiGlobals.TextScaleLarge, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, text_fg = titleColor, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         specialAttackRankLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.ItemRank % ItemGlobals.getSpecialAttackRank(itemId), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         specialAttackType = WeaponGlobals.getSkillTrack(specialAttack)
         if specialAttackType == WeaponGlobals.BREAK_ATTACK_SKILL_INDEX:
             specialAttackTypeText = PLocalizer.BreakAttackSkill
         elif specialAttackType == WeaponGlobals.DEFENSE_SKILL_INDEX:
             specialAttackTypeText = PLocalizer.DefenseSkill
         else:
             specialAttackTypeText = PLocalizer.WeaponSkill
         specialAttackTypeLabel = DirectLabel(parent = self, relief = None, text = specialAttackTypeText, text_scale = PiratesGuiGlobals.TextScaleLarge, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - PiratesGuiGlobals.TextScaleLarge), text_pos = (0.0, -textScale))
         specialAttackInfo = PLocalizer.SkillDescriptions.get(specialAttack)
         specialAttackDescriptionText = specialAttackInfo[1]
         specialAttackDescriptionLabel = DirectLabel(parent = self, relief = None, text = specialAttackDescriptionText, text_scale = textScale, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - specialAttackNameLabel.getHeight() + specialAttackTypeLabel.getHeight() - 0.059999999999999998), text_pos = (0.0, -textScale))
         saHeight = specialAttackNameLabel.getHeight() + specialAttackTypeLabel.getHeight() + specialAttackDescriptionLabel.getHeight() - 0.040000000000000001
         runningVertPosition -= saHeight
         runningSize += saHeight
         labels.append(specialAttackNameLabel)
         labels.append(specialAttackRankLabel)
         labels.append(specialAttackTypeLabel)
         labels.append(specialAttackDescriptionLabel)
     
     attributes = ItemGlobals.getAttributes(itemId)
     for i in range(0, len(attributes)):
         attributeIcon = self.SkillIcons.find('**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))
         if not attributeIcon:
             attributeIcon = self.BuffIcons.find('**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))
         
         attributeNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.050000000000000003, geom = attributeIcon, geom_scale = 0.050000000000000003, image_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), geom_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), text = PLocalizer.getItemAttributeName(attributes[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, text_fg = titleColor, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         attributeRankLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.ItemRank % attributes[i][1], text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         if attributeNameLabel.getHeight() > 0.074999999999999997:
             attributeNameSpace = 0.080000000000000002
         else:
             attributeNameSpace = PiratesGuiGlobals.TextScaleLarge
         attributeDescriptionLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.getItemAttributeDescription(attributes[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - attributeNameSpace), text_pos = (0.0, -textScale))
         aHeight = attributeNameLabel.getHeight() + attributeDescriptionLabel.getHeight()
         runningVertPosition -= aHeight + splitHeight
         runningSize += aHeight + splitHeight
         labels.append(attributeNameLabel)
         labels.append(attributeRankLabel)
         labels.append(attributeDescriptionLabel)
     
     skillBoosts = ItemGlobals.getSkillBoosts(itemId)
     for i in range(0, len(skillBoosts)):
         boostIcon = self.SkillIcons.find('**/%s' % WeaponGlobals.getSkillIcon(skillBoosts[i][0]))
         boostNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.050000000000000003, geom = boostIcon, geom_scale = 0.050000000000000003, image_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), geom_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), text = PLocalizer.ItemBoost % PLocalizer.getInventoryTypeName(skillBoosts[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         boostRankLabel = DirectLabel(parent = self, relief = None, text = '+%s' % str(skillBoosts[i][1]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         bHeight = boostNameLabel.getHeight()
         runningVertPosition -= bHeight + splitHeight
         runningSize += bHeight + splitHeight
         labels.append(boostNameLabel)
         labels.append(boostRankLabel)
     
     description = PLocalizer.getItemFlavorText(itemId)
     if description != '':
         descriptionLabel = DirectLabel(parent = self, relief = None, text = description, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.94999999999999996 / textScale), text_align = TextNode.ALeft, pos = (-halfWidth + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         dHeight = descriptionLabel.getHeight() + 0.02
         runningVertPosition -= dHeight
         runningSize += dHeight
         labels.append(descriptionLabel)
     
     weaponLevel = 0
     weaponRepId = WeaponGlobals.getRepId(itemId)
     weaponRep = inv.getReputation(weaponRepId)
     weaponReq = ItemGlobals.getWeaponRequirement(itemId)
     weaponText = None
     if weaponReq:
         weaponLevel = ReputationGlobals.getLevelFromTotalReputation(weaponRepId, weaponRep)[0]
         if weaponLevel < weaponReq:
             weaponColor = PiratesGuiGlobals.TextFG6
         else:
             weaponColor = (0.40000000000000002, 0.40000000000000002, 0.40000000000000002, 1.0)
         weaponText = PLocalizer.ItemLevelRequirement % (weaponReq, PLocalizer.getItemTypeName(itemType))
     else:
         trainingToken = EconomyGlobals.getItemTrainingReq(itemId)
         trainingAmt = inv.getItemQuantity(trainingToken)
         if trainingAmt == 0:
             weaponColor = PiratesGuiGlobals.TextFG6
             weaponText = PLocalizer.ItemTrainingRequirement % PLocalizer.getItemTypeName(itemType)
         
     if weaponText:
         weaponReqLabel = DirectLabel(parent = self, relief = None, text = weaponText, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (1.5 / titleScale), text_fg = weaponColor, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         wHeight = weaponReqLabel.getHeight()
         runningVertPosition -= wHeight
         runningSize += wHeight
         labels.append(weaponReqLabel)
     
     if not Freebooter.getPaidStatus(localAvatar.getDoId()):
         if rarity != ItemGlobals.CRUDE:
             unlimitedLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.UnlimitedAccessRequirement, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (1.5 / titleScale), text_fg = PiratesGuiGlobals.TextFG6, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             uHeight = unlimitedLabel.getHeight()
             runningVertPosition -= uHeight
             runningSize += uHeight
             labels.append(unlimitedLabel)
         
     
     runningVertPosition -= 0.02
     runningSize += 0.02
     panels = self.helpFrame.attachNewNode('panels')
     topPanel = panels.attachNewNode('middlePanel')
     detailGui.find('**/top_panel').copyTo(topPanel)
     topPanel.setScale(0.080000000000000002)
     topPanel.reparentTo(self.helpFrame)
     middlePanel = panels.attachNewNode('middlePanel')
     detailGui.find('**/middle_panel').copyTo(middlePanel)
     middlePanel.setScale(0.080000000000000002)
     middlePanel.reparentTo(self.helpFrame)
     placement = 0
     i = 0
     heightMax = -0.080000000000000002
     currentHeight = runningVertPosition
     while currentHeight < heightMax:
         middlePanel = panels.attachNewNode('middlePanel%s' % 1)
         detailGui.find('**/middle_panel').copyTo(middlePanel)
         middlePanel.setScale(0.080000000000000002)
         middlePanel.reparentTo(self.helpFrame)
         if currentHeight + 0.20000000000000001 >= heightMax:
             difference = heightMax - currentHeight
             placement += (0.16800000000000001 / 0.20000000000000001) * difference
             currentHeight += difference
         else:
             placement += 0.16800000000000001
             currentHeight += 0.20000000000000001
         middlePanel.setZ(-placement)
         i += 1
     bottomPanel = panels.attachNewNode('bottomPanel')
     detailGui.find('**/bottom_panel').copyTo(bottomPanel)
     bottomPanel.setScale(0.080000000000000002)
     bottomPanel.setZ(-placement)
     bottomPanel.reparentTo(self.helpFrame)
     colorPanel = panels.attachNewNode('colorPanel')
     detailGui.find('**/color').copyTo(colorPanel)
     colorPanel.setScale(0.080000000000000002)
     colorPanel.setColor(titleColor)
     colorPanel.reparentTo(self.helpFrame)
     lineBreakTopPanel = panels.attachNewNode('lineBreakTopPanel')
     detailGui.find('**/line_break_top').copyTo(lineBreakTopPanel)
     lineBreakTopPanel.setScale(0.080000000000000002, 0.080000000000000002, 0.070000000000000007)
     lineBreakTopPanel.setZ(0.0080000000000000002)
     lineBreakTopPanel.reparentTo(self.helpFrame)
     panels.flattenStrong()
     self.helpFrame['frameSize'] = (-halfWidth, halfWidth, -(runningSize + vMargin), vMargin)
     totalHeight = self.helpFrame.getHeight() - 0.10000000000000001
     for label in labels:
         label.reparentTo(self.helpFrame)
     
     if basePosX > 0.0:
         newPosX = basePosX - halfWidth + cellSizeX * 0.45000000000000001
     else:
         newPosX = basePosX + halfWidth + cellSizeX * 0.45000000000000001
     if basePosZ > 0.0:
         newPosZ = basePosZ + cellSizeZ * 0.45000000000000001
     else:
         newPosZ = basePosZ + totalHeight - cellSizeZ * 0.75
     if detailsPos:
         (newPosX, newPosZ) = detailsPos
     
     self.helpFrame.setPos(newPosX, 0, newPosZ)
 def showWeaponNotoriety(self):
     totalReputation = 0
     inv = localAvatar.getInventory()
     level = localAvatar.getLevel()
     maxLevel = ReputationGlobals.GlobalLevelCap
     if level < maxLevel:
         textStr = PLocalizer.RewardNotorietyLessThanMax % (level, maxLevel)
         textScale = 0.050000000000000003
         labelY = 0.37
         buttonY = 0.10000000000000001
     else:
         textStr = PLocalizer.RewardNotorietyAtMax % maxLevel
         textScale = 0.040000000000000001
         self.congratsText.show()
         labelY = 0.25
         buttonY = 0.13
     self.notorietyText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, textMayChange = 1, text = textStr, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_scale = textScale, text_fg = PiratesGuiGlobals.TextFG1, pos = (0, 0, labelY))
     self.notorietyText.hide()
     if level < maxLevel:
         self.todoText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, textMayChange = 1, text = PLocalizer.RewardTodo, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_scale = 0.035000000000000003, text_fg = PiratesGuiGlobals.TextFG1, pos = (0, 0, 0.19))
         self.todoText.hide()
     else:
         self.stayTunedText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, textMayChange = 1, text = PLocalizer.RewardStayTuned, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_scale = 0.035000000000000003, text_fg = PiratesGuiGlobals.TextFG1, pos = (0, 0, -0.40999999999999998))
         self.stayTunedText.hide()
     weapons = [
         [
             InventoryType.CutlassToken,
             InventoryType.CutlassRep],
         [
             InventoryType.PistolToken,
             InventoryType.PistolRep],
         [
             InventoryType.DaggerToken,
             InventoryType.DaggerRep],
         [
             InventoryType.GrenadeToken,
             InventoryType.GrenadeRep],
         [
             InventoryType.WandToken,
             InventoryType.WandRep],
         [
             InventoryType.DollToken,
             InventoryType.DollRep],
         [
             InventoryType.NewPlayerToken,
             InventoryType.CannonRep],
         [
             InventoryType.NewPlayerToken,
             InventoryType.SailingRep]]
     maxRep = ReputationGlobals.getTotalReputation(InventoryType.GeneralRep, ReputationGlobals.LevelCap)
     self.guiElements = []
     i = 0
     for (weaponToken, weaponId) in weapons:
         weaponUnlocked = False
         levelText = PLocalizer.RewardLevelLocked
         state = 0
         if inv.getStackQuantity(weaponToken):
             weaponUnlocked = True
         
         if weaponUnlocked:
             rep = inv.getReputation(weaponId)
             (wlevel, value) = ReputationGlobals.getLevelFromTotalReputation(weaponId, rep)
             levelText = PLocalizer.RewardLevelOfMax % (wlevel, ReputationGlobals.LevelCap)
             if rep >= maxRep:
                 levelText = PLocalizer.RepCapText_Skill
                 state = 1
             
         
         cb = self.makeCheckbox((0, 0, buttonY - 0.065000000000000002 * i), PLocalizer.InventoryTypeNames[weaponId], None, state, [
             3], levelText)
         cb['indicatorValue'] = state
         cb.hide()
         self.guiElements.append(cb)
         i += 1
     
     self.showWeaponsTrack = Sequence()
     self.showWeaponsTrack.append(Sequence(Func(self.notorietyText.show), Wait(1)))
     if level < maxLevel:
         self.showWeaponsTrack.append(Sequence(Func(self.todoText.show), Wait(1)))
     
     for b in self.guiElements:
         self.showWeaponsTrack.append(Sequence(Func(b.show), Wait(0.5)))
     
     if level >= maxLevel:
         self.showWeaponsTrack.append(Sequence(Func(self.stayTunedText.show), Wait(1)))
     
     self.showWeaponsTrack.append(Func(self.nextButton.show))
     self.showWeaponsTrack.start()
    def __init__(self):
        InventoryPage.InventoryPage.__init__(self)
        self.initialiseoptions(CollectionMain)
        gui = loader.loadModel('models/gui/toplevel_gui')
        ornament = loader.loadModel('models/gui/gui_treasure_window_a')
        ornament.setPos(0.53, 0, 0.72)
        ornament.setScale(0.315)
        ornament.reparentTo(self)
        ornament.flattenStrong()
        self.treasureList = DirectScrolledFrame(parent=self, relief=None, state=DGG.NORMAL, frameColor=PiratesGuiGlobals.FrameColor, borderWidth=PiratesGuiGlobals.BorderWidth, frameSize=(0, PiratesGuiGlobals.InventoryPanelWidth - 0.1, 0, PiratesGuiGlobals.InventoryPanelHeight - 0.1 - PiratesGuiGlobals.ScrollbarSize), canvasSize=(0, PiratesGuiGlobals.InventoryPanelWidth - 1.1, 0, PiratesGuiGlobals.InventoryPanelHeight - 0.1 - PiratesGuiGlobals.ScrollbarSize), verticalScroll_frameColor=PiratesGuiGlobals.ScrollbarColor, verticalScroll_borderWidth=(0.005,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       0.005), verticalScroll_frameSize=(0, PiratesGuiGlobals.ScrollbarSize, 0, PiratesGuiGlobals.InventoryPageHeight - 0.4), verticalScroll_thumb_frameColor=PiratesGuiGlobals.ButtonColor2, verticalScroll_incButton_frameColor=PiratesGuiGlobals.ButtonColor2, verticalScroll_decButton_frameColor=PiratesGuiGlobals.ButtonColor2, horizontalScroll_frameColor=PiratesGuiGlobals.ScrollbarColor, horizontalScroll_borderWidth=(0.005,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  0.005), horizontalScroll_frameSize=(0, PiratesGuiGlobals.InventoryItemGuiWidth + PiratesGuiGlobals.ScrollbarSize, 0, PiratesGuiGlobals.ScrollbarSize), horizontalScroll_thumb_frameColor=PiratesGuiGlobals.ButtonColor2, horizontalScroll_incButton_frameColor=PiratesGuiGlobals.ButtonColor2, horizontalScroll_decButton_frameColor=PiratesGuiGlobals.ButtonColor2, sortOrder=5)
        self.treasureList.setPos(0.02, 0, -0.02)
        localHeight = PiratesGuiGlobals.InventoryPanelHeight - 0.2
        self.card = loader.loadModel('models/gui/treasure_gui')
        tex = gui.find('**/treasure_w_coin*')
        self.goldPic = DirectFrame(parent=self.treasureList.getCanvas(), relief=None, image=tex, image_scale=0.4, image_pos=(-0.05, 0, 0), pos=(0.35, 0, localHeight - 0.36), text=PLocalizer.MoneyName, text_fg=PiratesGuiGlobals.TextFG2, text_align=TextNode.ALeft, text_scale=0.03, text_pos=(-0.2, 0.02, 0))
        self.numGold = DirectLabel(parent=self.goldPic, relief=None, text='0', text_align=TextNode.ALeft, text_scale=0.04, text_fg=PiratesGuiGlobals.TextFG2, textMayChange=1, pos=(0.04, 0, -0.03), text_font=PiratesGlobals.getInterfaceOutlineFont())
        if base.cr.config.GetBool('buried-treasure', 0):
            self.buryButton = DirectButton(parent=self, relief=None, image=tex, image_scale=0.4, image_pos=(0,
                                                                                                            0,
                                                                                                            0), pos=(0.5, 0, localHeight - 0.12), command=self.buryTreasure, text='BURY TREASURE', text_fg=PiratesGuiGlobals.TextFG2, text_align=TextNode.ACenter, text_scale=0.025, text_pos=(0, -0.085, 0))
        tex = gui.find('**/treasure_w_card*')
        self.cardPic = DirectFrame(parent=self.treasureList.getCanvas(), relief=None, image=tex, image_scale=0.4, image_pos=(-0.05, 0, 0), pos=(0.76, 0, localHeight - 0.36), text=PLocalizer.CheatCardName, text_fg=PiratesGuiGlobals.TextFG2, text_align=TextNode.ALeft, text_scale=0.03, text_pos=(-0.23, 0.02, 0))
        self.cardPic.setTransparency(1)
        self.numCards = DirectLabel(parent=self.cardPic, relief=None, text='0', text_align=TextNode.ALeft, text_scale=0.04, text_fg=PiratesGuiGlobals.TextFG2, textMayChange=1, pos=(0.042, 0, -0.03), text_font=PiratesGlobals.getInterfaceOutlineFont())
        self.treLabel = DirectLabel(parent=self.treasureList.getCanvas(), relief=None, text=PLocalizer.Treasure, text_align=TextNode.ALeft, text_scale=0.03, text_fg=PiratesGuiGlobals.TextFG2, textMayChange=1, pos=(0.144, 0, localHeight - 0.48))
        spotPic = gui.find('**/treasure_w_a_slot')
        blipParent = NodePath('blipParent')
        for colSpot in range(4):
            for rowSpot in range(4):
                if colSpot > 0:
                    blip = spotPic.copyTo(blipParent)
                    blip.setScale(0.45)
                    blip.setPos(0.24 + 0.18 * rowSpot, 0, localHeight - 0.4 - 0.18 * colSpot)

        blipParent.flattenStrong()
        blipFrame = DirectFrame(parent=self.treasureList.getCanvas(), relief=None, geom=blipParent)
        gui.removeNode()
        self.setPics = {}
        return
    def __init__(self, shipPage, shipId, **kwargs):
        self.shipPage = shipPage
        self.setShipId(shipId)
        self.timer = None
        self.crewDots = []
        self.lBroadsideLimit = 0
        self.rBroadsideLimit = 0
        kwargs.setdefault('relief', None)
        kwargs.setdefault('frameSize', (0, self.Width, 0, self.Height))
        DirectFrame.__init__(self)
        self.initialiseoptions(ShipPanel)
        gui = loader.loadModel('models/gui/toplevel_gui')
        chestIcon = gui.find('**/icon_crate')
        cannonIcon = gui.find('**/topgui_icon_ship_cannon_single')
        broadsideIcon = gui.find('**/topgui_icon_ship_cannon_multiple')
        self.bottleFrame = ShipFrameBottle(parent = self, shipId = shipId, relief = None, state = DGG.DISABLED, pos = (0.074999999999999997, 0, 0.75), scale = 0.83499999999999996)
        ornament = loader.loadModel('models/gui/gui_ship_window')
        ornament.reparentTo(self)
        ornament.setScale(0.29999999999999999)
        ornament.setPos(0.54000000000000004, 0, 0.72999999999999998)
        ornament.flattenStrong()
        self.nameLabel = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = PLocalizer.makeHeadingString(PLocalizer.EmptyBottle, 2), text_fg = PiratesGuiGlobals.TextFG1, text_scale = PiratesGuiGlobals.TextScaleTitleSmall, text_align = TextNode.ACenter, text_shadow = (0, 0, 0, 1), text_wordwrap = 30, textMayChange = 1, text_font = PiratesGlobals.getPirateFont(), pos = (0.55000000000000004, 0, 1.22))
        self.classLabel = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = PLocalizer.makeHeadingString(PLocalizer.EmptyBottleDesc, 1), text_scale = PiratesGuiGlobals.TextScaleMed, text_align = TextNode.ACenter, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = (0, 0, 0, 1), text_wordwrap = 30, textMayChange = 1, text_font = PiratesGlobals.getInterfaceFont(), pos = (0.55000000000000004, 0, 1.1799999999999999))
        self.timer = PiratesTimer.PiratesTimer(showMinutes = True, mode = None, titleText = '', titleFg = '', infoText = '', cancelText = '', cancelCallback = None)
        self.timer.setFontColor(PiratesGuiGlobals.TextFG2)
        self.timer.reparentTo(self)
        self.timer.setPos(0.45000000000000001, 0, 0.93999999999999995)
        self.timer.setScale(0.59999999999999998)
        self.timer.stash()
        self.hpMeter = DirectWaitBar(parent = self, relief = DGG.RAISED, state = DGG.DISABLED, range = 1, value = 0, frameColor = (0.0, 0.0, 0.0, 0.0), barColor = (0.10000000000000001, 0.69999999999999996, 0.10000000000000001, 1), frameSize = (0, 0.31, 0, 0.018599999999999998), text = '', text_align = TextNode.ARight, text_scale = 0.029999999999999999, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), text_pos = (0.29999999999999999, 0.029999999999999999), pos = (0.36099999999999999, 0.0, 0.621), scale = 1.2)
        hpLabel = DirectLabel(parent = self.hpMeter, relief = None, state = DGG.DISABLED, text = PLocalizer.HP, text_scale = 0.029999999999999999, text_align = TextNode.ALeft, text_pos = (0.014999999999999999, 0.029999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1))
        self.speedMeter = DirectWaitBar(parent = self, relief = DGG.RAISED, state = DGG.DISABLED, range = 1, value = 0, frameColor = (0.0, 0.0, 0.0, 0.0), barColor = (0.69999999999999996, 0.69999999999999996, 0.10000000000000001, 1), frameSize = (0, 0.31, 0, 0.018599999999999998), text = '', text_align = TextNode.ARight, text_scale = 0.029999999999999999, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), text_pos = (0.29999999999999999, 0.029999999999999999), pos = (0.36099999999999999, 0.0, 0.55000000000000004), scale = 1.2)
        speedLabel = DirectLabel(parent = self.speedMeter, relief = None, state = DGG.DISABLED, text = PLocalizer.Speed, text_scale = 0.029999999999999999, text_align = TextNode.ALeft, text_pos = (0.014999999999999999, 0.029999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1))
        textPos = (0.0, -0.16)
        self.plunderLimit = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, geom = chestIcon, geom_scale = 0.10000000000000001, text = '', text_scale = 0.044999999999999998, text_align = TextNode.ACenter, text_pos = textPos, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), textMayChange = 1, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (0.20000000000000001, 0, 0.31))
        plunderLabel = DirectLabel(parent = self.plunderLimit, relief = None, state = DGG.DISABLED, text = PLocalizer.Cargo, text_scale = 0.035999999999999997, text_align = TextNode.ACenter, text_pos = (0, 0.14999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1))
        self.cannonLimit = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, geom = cannonIcon, geom_scale = 0.45000000000000001, text = '', text_scale = 0.044999999999999998, text_align = TextNode.ACenter, text_pos = textPos, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), textMayChange = 1, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (0.37, 0, 0.31))
        cannonLabel = DirectLabel(parent = self.cannonLimit, relief = None, state = DGG.DISABLED, text = PLocalizer.Cannon, text_scale = 0.035999999999999997, text_align = TextNode.ACenter, text_pos = (0, 0.14999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1))
        self.broadsideLeftLimit = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, geom = broadsideIcon, geom_scale = (-0.45000000000000001, 0.45000000000000001, 0.45000000000000001), text = '', text_scale = 0.044999999999999998, text_align = TextNode.ACenter, text_pos = textPos, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), textMayChange = 1, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (0.73999999999999999, 0, 0.31))
        self.broadsideRightLimit = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, geom = broadsideIcon, geom_scale = 0.45000000000000001, text = '', text_scale = 0.044999999999999998, text_align = TextNode.ACenter, text_pos = textPos, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), textMayChange = 1, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (0.88500000000000001, 0, 0.31))
        broadsideLabel = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = PLocalizer.Broadsides, text_scale = 0.035999999999999997, text_align = TextNode.ACenter, text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), pos = (0.81000000000000005, 0, 0.46000000000000002))
        crewLabel = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = PLocalizer.Crew, text_scale = 0.035999999999999997, text_align = TextNode.ALeft, text_pos = (0.47499999999999998, 0.46000000000000002), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1))
        self.crewLimit = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = '', text_scale = 0.044999999999999998, text_align = TextNode.ACenter, text_pos = (0.56000000000000005, 0.14999999999999999), text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), textMayChange = 1, text_font = PiratesGlobals.getInterfaceOutlineFont())
        shipOV = base.cr.getOwnerView(self.shipId)
        if shipOV:
            self.setShipName(shipOV.name)
            self.setShipClass(shipOV.shipClass)
            self.setShipHp(shipOV.Hp, shipOV.maxHp)
            self.setShipSp(shipOV.Sp, shipOV.maxSp)
            self.setShipCrew(shipOV.crew, shipOV.maxCrew)
            self.setShipCargo([], shipOV.maxCargo)
            if hasattr(shipOV, 'cannonConfig'):
                self.setShipMaxCannons(shipOV.cannonConfig)
                self.setShipMaxLeftBroadside(shipOV.lBroadsideConfig)
                self.setShipMaxRightBroadside(shipOV.rBroadsideConfig)


        self.accept('setName-%s' % self.shipId, self.setShipName)
        self.accept('setShipClass-%s' % self.shipId, self.setShipClass)
        self.accept('setShipHp-%s' % self.shipId, self.setShipHp)
        self.accept('setShipSp-%s' % self.shipId, self.setShipSp)
        self.accept('setShipCargo-%s' % self.shipId, self.setShipCargo)
        self.accept('setShipCrew-%s' % self.shipId, self.setShipCrew)
        self.accept('setShipTimer-%s' % self.shipId, self.setShipTimer)
        self.accept('setHullCannonConfig-%s' % self.shipId, self.setShipMaxCannons)
        self.accept('setHullLeftBroadsideConfig-%s' % self.shipId, self.setShipMaxLeftBroadside)
        self.accept('setHullRightBroadsideConfig-%s' % self.shipId, self.setShipMaxRightBroadside)
        if base.config.GetBool('want-deploy-button', 0):
            pass
        1
    def setup(self):
        self.buttonSize = self.manager.standardButtonSize
        self.grid = InventoryUIPlunderGridContainer.InventoryUIPlunderGridContainer(
            self.manager, self.buttonSize * 7, self.buttonSize * 3.0, 2, 3)
        self.grid.reparentTo(self)
        self.grid.setPos(self.sizeX * 0.5 - self.grid.sizeX * 0.4, 0.0, 0.25)
        self.grid.setScale(0.8)
        Gui = loader.loadModel('models/gui/char_gui')
        buttonImage = (Gui.find('**/chargui_text_block_large'),
                       Gui.find('**/chargui_text_block_large_down'),
                       Gui.find('**/chargui_text_block_large_over'),
                       Gui.find('**/chargui_text_block_large'))
        self.takeAllButton = GuiButton.GuiButton(
            parent=self,
            relief=None,
            image=buttonImage,
            image_scale=0.4,
            text=PLocalizer.InventoryPlunderTakeAll,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            text_align=TextNode.ACenter,
            text_pos=(0, -0.01),
            text_scale=PiratesGuiGlobals.TextScaleLarge,
            text_fg=PiratesGuiGlobals.TextFG2,
            text_shadow=PiratesGuiGlobals.TextShadow,
            pos=(self.sizeX * 0.8, 0, 0.2),
            helpText=PLocalizer.InventoryPlunderGiveNothingBack,
            helpPos=(0.1, 0, -0.07),
            helpOpaque=1,
            helpDelay=1.0,
            command=self.takeAllLoot)
        if self.takeAllButton.helpBox:
            self.takeAllButton.helpBox.setPos(0.3, 0, -0.01)
        if self.itemsToTake:
            self.takeAllButton.hide()
        if self.timer:
            self.timerUI = DirectLabel(
                parent=self,
                relief=None,
                pos=(0.64, 0, 0.21),
                text=str(self.timer),
                text_align=TextNode.ACenter,
                text_font=PiratesGlobals.getInterfaceOutlineFont(),
                text_fg=PiratesGuiGlobals.TextFG1,
                text_shadow=PiratesGuiGlobals.TextShadow,
                text_scale=PiratesGuiGlobals.TextScaleTitleSmall,
                text_pos=(0.0, -0.02))
            self.takeAllButton.setPos(Point3(0.825, 0, 0.2))
            self.timerStart = globalClock.getRealTime()
            taskMgr.add(self.__updateTimer,
                        self.taskName('plunderPanelTimeUpdate'))
        maingui = loader.loadModel('models/gui/gui_main')
        box = (maingui.find('**/exit_button'), maingui.find('**/exit_button'),
               maingui.find('**/exit_button_over'),
               maingui.find('**/exit_button'))
        x = maingui.find('**/x2')
        titleText = text = PLocalizer.InventoryPlunderTitle % self.typeName
        if self.customName:
            titleText = self.customName
        self.titleLabel = DirectLabel(
            parent=self,
            relief=None,
            pos=(0.5, 0, 0.68),
            text=titleText,
            text_align=TextNode.ACenter,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            text_fg=PiratesGuiGlobals.TextFG1,
            text_shadow=PiratesGuiGlobals.TextShadow,
            text_scale=PiratesGuiGlobals.TextScaleTitleSmall,
            text_pos=(0.0, -0.02),
            image=maingui.find('**/gui_inv_treasure_loot_bg'),
            image_scale=(0.3, 0.35, 0.35),
            image_pos=(0.04, 0, 0))
        self.closeButton = DirectButton(parent=self,
                                        relief=None,
                                        pos=(self.sizeX + 0.25, 0,
                                             self.sizeZ - 1.08),
                                        image=box,
                                        image_scale=0.5,
                                        geom=x,
                                        geom_scale=0.25,
                                        geom_pos=(-0.32, 0, 0.958),
                                        command=self.manager.closePlunder)
        if self.autoShow:
            self.closeButton.hide()
        self.ratingLabel = DirectLabel(
            parent=self,
            relief=None,
            text=PLocalizer.InventoryPlunderRating,
            text_align=TextNode.ALeft,
            text_font=PiratesGlobals.getInterfaceFont(),
            text_fg=PiratesGuiGlobals.TextFG16,
            text_scale=PiratesGuiGlobals.TextScaleLarge,
            pos=(self.sizeX * 0.1, 0, 0.2))
        if self.rating < 0:
            self.ratingLabel.hide()
        else:
            if self.itemsToTake:
                if self.itemsToTake == 1:
                    self.ratingLabel[
                        'text'] = PLocalizer.InventoryPlunderPickSingular
                else:
                    self.ratingLabel[
                        'text'] = PLocalizer.InventoryPlunderPickPlural % self.itemsToTake
            else:
                toplevelgui = loader.loadModel('models/gui/toplevel_gui')
                rating = self.attachNewNode('rating')
                rating.setPos(self.sizeX * 0.35, 0, 0.21)
                for i in range(0, 5):
                    skull = rating.attachNewNode('skull%s' % i)
                    toplevelgui.find('**/pir_t_gui_gen_goldSkull').copyTo(
                        skull)
                    skull.setScale(0.2)
                    skull.setX(i * 0.05)
                    if i >= self.rating:
                        skull.setColor(0, 0, 0, 0.25)

                rating.flattenStrong()
        self.setupPlunder(self.plunderList)
        self.accept('lootsystem-plunderContainer-Empty',
                    self.checkAllContainers)
        return
示例#12
0
    def showDetails(self, cell, detailsPos, detailsHeight, event=None):
        self.notify.debug('Item showDetails')
        if self.manager.heldItem or self.manager.locked or cell.isEmpty(
        ) or self.isEmpty() or not self.itemTuple:
            self.notify.debug(' early exit')
            return
        inv = localAvatar.getInventory()
        if not inv:
            return
        itemId = self.getId()
        self.helpFrame = DirectFrame(parent=self.manager,
                                     relief=None,
                                     state=DGG.DISABLED,
                                     sortOrder=1)
        self.helpFrame.setBin('gui-popup', -5)
        detailGui = loader.loadModel('models/gui/gui_card_detail')
        topGui = loader.loadModel('models/gui/toplevel_gui')
        coinImage = topGui.find('**/treasure_w_coin*')
        self.SkillIcons = loader.loadModel('models/textureCards/skillIcons')
        self.BuffIcons = loader.loadModel('models/textureCards/buff_icons')
        border = self.SkillIcons.find('**/base')
        halfWidth = 0.3
        halfHeight = 0.2
        basePosX = cell.getX(aspect2d)
        basePosZ = cell.getZ(aspect2d)
        cellSizeX = 0.0
        cellSizeZ = 0.0
        if cell:
            cellSizeX = cell.cellSizeX
            cellSizeZ = cell.cellSizeZ
        textScale = PiratesGuiGlobals.TextScaleMed
        titleScale = PiratesGuiGlobals.TextScaleTitleSmall
        if len(self.getName()) >= 30:
            titleNameScale = PiratesGuiGlobals.TextScaleLarge
        else:
            titleNameScale = PiratesGuiGlobals.TextScaleExtraLarge
        subtitleScale = PiratesGuiGlobals.TextScaleMed
        iconScalar = 1.5
        borderScaler = 0.25
        splitHeight = 0.01
        vMargin = 0.03
        runningVertPosition = 0.3
        runningSize = 0.0
        labels = []
        titleColor = PiratesGuiGlobals.TextFG6
        itemColor = 'itemRed'
        rarity = ItemGlobals.getRarity(itemId)
        rarityText = PLocalizer.getItemRarityName(rarity)
        subtypeText = PLocalizer.getItemSubtypeName(
            ItemGlobals.getSubtype(itemId))
        if rarity == ItemGlobals.CRUDE:
            titleColor = PiratesGuiGlobals.TextFG24
            itemColor = 'itemBrown'
        else:
            if rarity == ItemGlobals.COMMON:
                titleColor = PiratesGuiGlobals.TextFG13
                itemColor = 'itemYellow'
            else:
                if rarity == ItemGlobals.RARE:
                    titleColor = PiratesGuiGlobals.TextFG4
                    itemColor = 'itemGreen'
                else:
                    if rarity == ItemGlobals.FAMED:
                        titleColor = PiratesGuiGlobals.TextFG5
                        itemColor = 'itemBlue'
        titleLabel = DirectLabel(parent=self,
                                 relief=None,
                                 text=self.getName(),
                                 text_scale=titleNameScale,
                                 text_fg=titleColor,
                                 text_shadow=PiratesGuiGlobals.TextShadow,
                                 text_align=TextNode.ACenter,
                                 pos=(0.0, 0.0, runningVertPosition),
                                 text_pos=(0.0, -textScale))
        self.bg.setColor(titleColor)
        tHeight = 0.07
        titleLabel.setZ(runningVertPosition)
        runningVertPosition -= tHeight
        runningSize += tHeight
        labels.append(titleLabel)
        subtitleLabel = DirectLabel(parent=self,
                                    relief=None,
                                    text='\x01slant\x01%s %s\x02' %
                                    (rarityText, subtypeText),
                                    text_scale=subtitleScale,
                                    text_fg=PiratesGuiGlobals.TextFG2,
                                    text_shadow=PiratesGuiGlobals.TextShadow,
                                    text_align=TextNode.ACenter,
                                    pos=(0.0, 0.0, runningVertPosition),
                                    text_pos=(0.0, -textScale))
        subtHeight = 0.05
        subtitleLabel.setZ(subtHeight * 0.5 + runningVertPosition)
        runningVertPosition -= subtHeight
        runningSize += subtHeight
        labels.append(subtitleLabel)
        itemType = ItemGlobals.getType(itemId)
        itemSubtype = ItemGlobals.getSubtype(itemId)
        model = ItemGlobals.getModel(itemId)
        if model:
            if itemType == ItemGlobals.GRENADE:
                self.realItem = loader.loadModel('models/ammunition/' + model)
            else:
                self.realItem = loader.loadModel('models/handheld/' + model)
            if self.realItem:
                spinBlur = self.realItem.find('**/motion_blur')
                if spinBlur:
                    spinBlur.hide()
                if itemSubtype == ItemGlobals.MUSKET:
                    bayonetPart = self.realItem.find('**/bayonet')
                    if bayonetPart:
                        bayonetPart.stash()
                posHpr = ItemGlobals.getModelPosHpr(model)
                if posHpr:
                    self.realItem.setPos(posHpr[0], posHpr[1], posHpr[2])
                    self.realItem.setHpr(posHpr[3], posHpr[4], posHpr[5])
                else:
                    if itemType == ItemGlobals.SWORD:
                        self.realItem.setPos(-1.5, 3.0, -0.3)
                        self.realItem.setHpr(90, 170, -90)
                    else:
                        if itemSubtype in (ItemGlobals.MUSKET,
                                           ItemGlobals.BAYONET):
                            self.realItem.setPos(-1.2, 3.0, -0.1)
                            self.realItem.setHpr(0, 135, 10)
                        else:
                            if itemSubtype == ItemGlobals.BLUNDERBUSS:
                                self.realItem.setPos(-0.3, 2.0, 0.0)
                                self.realItem.setHpr(0, 90, 0)
                            else:
                                if itemType == ItemGlobals.GUN:
                                    self.realItem.setPos(-0.5, 2.0, -0.2)
                                    self.realItem.setHpr(0, 90, 0)
                                else:
                                    if itemType == ItemGlobals.DOLL:
                                        self.realItem.setPos(0.0, 1.9, -0.1)
                                        self.realItem.setHpr(0, 90, 180)
                                    else:
                                        if itemType == ItemGlobals.DAGGER:
                                            self.realItem.setPos(
                                                -1.0, 2.0, -0.3)
                                            self.realItem.setHpr(90, 170, -90)
                                        else:
                                            if itemType == ItemGlobals.GRENADE:
                                                self.realItem.setPos(
                                                    0.0, 3.5, -0.2)
                                                self.realItem.setHpr(0, 0, 0)
                                            else:
                                                if itemType == ItemGlobals.STAFF:
                                                    self.realItem.setPos(
                                                        -0.4, 3.0, -0.3)
                                                    self.realItem.setHpr(
                                                        -90, 15, -90)
                self.realItem.reparentTo(self.portraitSceneGraph)
        iHeight = 0.175
        self.createBuffer()
        self.itemCard.setZ(runningVertPosition - 0.06)
        runningVertPosition -= iHeight
        runningSize += iHeight
        labels.append(self.itemCard)
        itemCost = int(ItemGlobals.getGoldCost(itemId))
        if self.cell:
            if self.cell.container:
                itemCost = int(itemCost *
                               self.cell.container.getItemPriceMult())
            goldLabel = DirectLabel(parent=self,
                                    relief=None,
                                    image=coinImage,
                                    image_scale=0.12,
                                    image_pos=Vec3(0.025, 0, -0.02),
                                    text=str(itemCost),
                                    text_scale=subtitleScale,
                                    text_align=TextNode.ARight,
                                    text_fg=PiratesGuiGlobals.TextFG1,
                                    text_shadow=PiratesGuiGlobals.TextShadow,
                                    pos=(halfWidth - 0.05, 0.0,
                                         runningVertPosition + 0.08),
                                    text_pos=(0.0, -textScale))
            labels.append(goldLabel)
            infoText = PLocalizer.ItemAttackStrength % (
                '\x01%s\x01%s\x02' % (itemColor, ItemGlobals.getPower(itemId)))
            if itemType == ItemGlobals.GUN:
                infoText += '     %s' % (
                    PLocalizer.ItemBarrels %
                    ('\x01%s\x01%s\x02' %
                     (itemColor, ItemGlobals.getBarrels(itemId))))
                infoText += '     %s' % (
                    PLocalizer.ItemRangeStrength %
                    ('\x01%s\x01%s\x02' %
                     (itemColor,
                      PLocalizer.getItemRangeName(
                          WeaponGlobals.getRange(itemId)))))
            infoLabel = DirectLabel(parent=self,
                                    relief=None,
                                    text=infoText,
                                    text_scale=textScale,
                                    text_align=TextNode.ACenter,
                                    pos=(0.0, 0.0, runningVertPosition),
                                    text_pos=(0.0, -textScale))
            iHeight = 0.08
            runningVertPosition -= iHeight
            runningSize += iHeight
            labels.append(infoLabel)
            specialAttack = ItemGlobals.getSpecialAttack(itemId)
            if specialAttack:
                attackIcon = self.SkillIcons.find(
                    '**/%s' % WeaponGlobals.getSkillIcon(specialAttack))
                specialAttackNameLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    image=border,
                    image_scale=0.1,
                    geom=attackIcon,
                    geom_scale=0.1,
                    image_pos=(-0.07, 0.0, -0.05),
                    geom_pos=(-0.07, 0.0, -0.05),
                    text=PLocalizer.getInventoryTypeName(specialAttack),
                    text_scale=PiratesGuiGlobals.TextScaleLarge,
                    text_wordwrap=halfWidth * 2.0 * (0.9 / titleScale),
                    text_align=TextNode.ALeft,
                    text_fg=titleColor,
                    text_font=PiratesGlobals.getInterfaceOutlineFont(),
                    text_shadow=PiratesGuiGlobals.TextShadow,
                    pos=(-halfWidth + 0.12 + textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                specialAttackRankLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=PLocalizer.ItemRank %
                    ItemGlobals.getSpecialAttackRank(itemId),
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.0 * (0.9 / titleScale),
                    text_align=TextNode.ARight,
                    pos=(halfWidth - textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                specialAttackType = WeaponGlobals.getSkillTrack(specialAttack)
                if specialAttackType == WeaponGlobals.BREAK_ATTACK_SKILL_INDEX:
                    specialAttackTypeText = PLocalizer.BreakAttackSkill
                else:
                    if specialAttackType == WeaponGlobals.DEFENSE_SKILL_INDEX:
                        specialAttackTypeText = PLocalizer.DefenseSkill
                    else:
                        specialAttackTypeText = PLocalizer.WeaponSkill
                specialAttackTypeLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=specialAttackTypeText,
                    text_scale=0.0335,
                    text_wordwrap=halfWidth * 2.8 * (0.9 / titleScale),
                    text_align=TextNode.ALeft,
                    pos=(-halfWidth + 0.12 + textScale * 0.5, 0.0,
                         runningVertPosition -
                         PiratesGuiGlobals.TextScaleLarge),
                    text_pos=(0.0, -textScale))
                specialAttackInfo = PLocalizer.SkillDescriptions.get(
                    specialAttack)
                specialAttackDescriptionText = specialAttackInfo[1]
                specialAttackDescriptionLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=specialAttackDescriptionText,
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.8 * (0.9 / titleScale),
                    text_align=TextNode.ALeft,
                    pos=(-halfWidth + 0.12 + textScale * 0.5, 0.0,
                         runningVertPosition -
                         (specialAttackNameLabel.getHeight() +
                          specialAttackTypeLabel.getHeight() - 0.06)),
                    text_pos=(0.0, -textScale))
                saHeight = specialAttackNameLabel.getHeight(
                ) + specialAttackTypeLabel.getHeight(
                ) + specialAttackDescriptionLabel.getHeight() - 0.04
                runningVertPosition -= saHeight
                runningSize += saHeight
                labels.append(specialAttackNameLabel)
                labels.append(specialAttackRankLabel)
                labels.append(specialAttackTypeLabel)
                labels.append(specialAttackDescriptionLabel)
            attributes = ItemGlobals.getAttributes(itemId)
            for i in range(0, len(attributes)):
                attributeIcon = self.SkillIcons.find(
                    '**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))
                if not attributeIcon:
                    attributeIcon = self.BuffIcons.find(
                        '**/%s' %
                        ItemGlobals.getAttributeIcon(attributes[i][0]))
                attributeNameLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    image=border,
                    image_scale=0.05,
                    geom=attributeIcon,
                    geom_scale=0.05,
                    image_pos=(-0.07, 0.0, -0.03),
                    geom_pos=(-0.07, 0.0, -0.03),
                    text=PLocalizer.getItemAttributeName(attributes[i][0]),
                    text_scale=PiratesGuiGlobals.TextScaleLarge,
                    text_wordwrap=halfWidth * 2.0 * (0.9 / titleScale),
                    text_align=TextNode.ALeft,
                    text_fg=titleColor,
                    text_font=PiratesGlobals.getInterfaceOutlineFont(),
                    text_shadow=PiratesGuiGlobals.TextShadow,
                    pos=(-halfWidth + 0.12 + textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                attributeRankLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=PLocalizer.ItemRank % attributes[i][1],
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.0 * (0.9 / titleScale),
                    text_align=TextNode.ARight,
                    pos=(halfWidth - textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                if attributeNameLabel.getHeight() > 0.075:
                    attributeNameSpace = 0.08
                else:
                    attributeNameSpace = PiratesGuiGlobals.TextScaleLarge
                attributeDescriptionLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=PLocalizer.getItemAttributeDescription(
                        attributes[i][0]),
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.8 * (0.9 / titleScale),
                    text_align=TextNode.ALeft,
                    pos=(-halfWidth + 0.12 + textScale * 0.5, 0.0,
                         runningVertPosition - attributeNameSpace),
                    text_pos=(0.0, -textScale))
                aHeight = attributeNameLabel.getHeight(
                ) + attributeDescriptionLabel.getHeight()
                runningVertPosition -= aHeight + splitHeight
                runningSize += aHeight + splitHeight
                labels.append(attributeNameLabel)
                labels.append(attributeRankLabel)
                labels.append(attributeDescriptionLabel)

            skillBoosts = ItemGlobals.getSkillBoosts(itemId)
            for i in range(0, len(skillBoosts)):
                skillId, skillBoost = skillBoosts[i]
                linkedSkills = ItemGlobals.getLinkedSkills(itemId)
                if linkedSkills:
                    for id in linkedSkills:
                        if skillId == WeaponGlobals.getLinkedSkillId(id):
                            skillId = id

                boostIcon = self.SkillIcons.find(
                    '**/%s' % WeaponGlobals.getSkillIcon(skillId))
                boostNameLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    image=border,
                    image_scale=0.05,
                    geom=boostIcon,
                    geom_scale=0.05,
                    image_pos=(-0.07, 0.0, -0.03),
                    geom_pos=(-0.07, 0.0, -0.03),
                    text=PLocalizer.ItemBoost %
                    PLocalizer.getInventoryTypeName(skillId),
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.0 * (0.9 / titleScale),
                    text_align=TextNode.ALeft,
                    pos=(-halfWidth + 0.12 + textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                boostRankLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text='+%s' % str(skillBoost),
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.0 * (0.9 / titleScale),
                    text_align=TextNode.ARight,
                    pos=(halfWidth - textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                bHeight = boostNameLabel.getHeight()
                runningVertPosition -= bHeight + splitHeight
                runningSize += bHeight + splitHeight
                labels.append(boostNameLabel)
                labels.append(boostRankLabel)

            description = PLocalizer.getItemFlavorText(itemId)
            if description != '':
                descriptionLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=description,
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.0 * (0.95 / textScale),
                    text_align=TextNode.ALeft,
                    pos=(-halfWidth + textScale * 0.5, 0.0,
                         runningVertPosition),
                    text_pos=(0.0, -textScale))
                dHeight = descriptionLabel.getHeight() + 0.02
                runningVertPosition -= dHeight
                runningSize += dHeight
                labels.append(descriptionLabel)
            weaponLevel = 0
            weaponRepId = WeaponGlobals.getRepId(itemId)
            weaponRep = inv.getReputation(weaponRepId)
            weaponReq = ItemGlobals.getWeaponRequirement(itemId)
            weaponText = None
            trainingToken = EconomyGlobals.getItemTrainingReq(itemId)
            trainingAmt = inv.getItemQuantity(trainingToken)
            if weaponReq:
                weaponLevel = ReputationGlobals.getLevelFromTotalReputation(
                    weaponRepId, weaponRep)[0]
                if weaponLevel < weaponReq:
                    weaponColor = PiratesGuiGlobals.TextFG6
                else:
                    weaponColor = (0.4, 0.4, 0.4, 1.0)
                weaponText = PLocalizer.ItemLevelRequirement % (
                    weaponReq, PLocalizer.getItemTypeName(itemType))
            else:
                if trainingAmt == 0:
                    weaponColor = PiratesGuiGlobals.TextFG6
                    weaponText = PLocalizer.ItemTrainingRequirement % PLocalizer.getItemTypeName(
                        itemType)
            if trainingAmt == 0:
                if itemType == ItemGlobals.GUN:
                    base.localAvatar.sendRequestContext(
                        InventoryType.GunTrainingRequired)
                elif itemType == ItemGlobals.DOLL:
                    base.localAvatar.sendRequestContext(
                        InventoryType.DollTrainingRequired)
                elif itemType == ItemGlobals.DAGGER:
                    base.localAvatar.sendRequestContext(
                        InventoryType.DaggerTrainingRequired)
                elif itemType == ItemGlobals.STAFF:
                    base.localAvatar.sendRequestContext(
                        InventoryType.StaffTrainingRequired)
            if weaponText:
                weaponReqLabel = DirectLabel(
                    parent=self,
                    relief=None,
                    text=weaponText,
                    text_scale=textScale,
                    text_wordwrap=halfWidth * 2.0 * (1.5 / titleScale),
                    text_fg=weaponColor,
                    text_shadow=PiratesGuiGlobals.TextShadow,
                    text_align=TextNode.ACenter,
                    pos=(0.0, 0.0, runningVertPosition),
                    text_pos=(0.0, -textScale))
                wHeight = weaponReqLabel.getHeight()
                runningVertPosition -= wHeight
                runningSize += wHeight
                labels.append(weaponReqLabel)
            if not Freebooter.getPaidStatus(localAvatar.getDoId()):
                if rarity != ItemGlobals.CRUDE:
                    unlimitedLabel = DirectLabel(
                        parent=self,
                        relief=None,
                        text=PLocalizer.UnlimitedAccessRequirement,
                        text_scale=textScale,
                        text_wordwrap=halfWidth * 2.0 * (1.5 / titleScale),
                        text_fg=PiratesGuiGlobals.TextFG6,
                        text_shadow=PiratesGuiGlobals.TextShadow,
                        text_align=TextNode.ACenter,
                        pos=(0.0, 0.0, runningVertPosition),
                        text_pos=(0.0, -textScale))
                    uHeight = unlimitedLabel.getHeight()
                    runningVertPosition -= uHeight
                    runningSize += uHeight
                    labels.append(unlimitedLabel)
            runningVertPosition -= 0.02
            runningSize += 0.02
            panels = self.helpFrame.attachNewNode('panels')
            topPanel = panels.attachNewNode('middlePanel')
            detailGui.find('**/top_panel').copyTo(topPanel)
            topPanel.setScale(0.08)
            topPanel.reparentTo(self.helpFrame)
            middlePanel = panels.attachNewNode('middlePanel')
            detailGui.find('**/middle_panel').copyTo(middlePanel)
            middlePanel.setScale(0.08)
            middlePanel.reparentTo(self.helpFrame)
            placement = 0
            i = 0
            heightMax = -0.08
            currentHeight = runningVertPosition
            if detailsHeight:
                currentHeight = -detailsHeight
            while currentHeight < heightMax:
                middlePanel = panels.attachNewNode('middlePanel%s' % 1)
                detailGui.find('**/middle_panel').copyTo(middlePanel)
                middlePanel.setScale(0.08)
                middlePanel.reparentTo(self.helpFrame)
                if currentHeight + 0.2 >= heightMax:
                    difference = heightMax - currentHeight
                    placement += 0.168 / 0.2 * difference
                    currentHeight += difference
                else:
                    placement += 0.168
                    currentHeight += 0.2
                middlePanel.setZ(-placement)
                i += 1

            bottomPanel = panels.attachNewNode('bottomPanel')
            detailGui.find('**/bottom_panel').copyTo(bottomPanel)
            bottomPanel.setScale(0.08)
            bottomPanel.setZ(-placement)
            bottomPanel.reparentTo(self.helpFrame)
            colorPanel = panels.attachNewNode('colorPanel')
            detailGui.find('**/color').copyTo(colorPanel)
            colorPanel.setScale(0.08)
            colorPanel.setColor(titleColor)
            colorPanel.reparentTo(self.helpFrame)
            lineBreakTopPanel = panels.attachNewNode('lineBreakTopPanel')
            detailGui.find('**/line_break_top').copyTo(lineBreakTopPanel)
            lineBreakTopPanel.setScale(0.08, 0.08, 0.07)
            lineBreakTopPanel.setZ(0.008)
            lineBreakTopPanel.reparentTo(self.helpFrame)
            lineBreakBottomPanel = panels.attachNewNode('lineBreakBottomPanel')
            detailGui.find('**/line_break_bottom').copyTo(lineBreakBottomPanel)
            lineBreakBottomPanel.setScale(0.08, 0.08, 0.07)
            lineBreakBottomPanel.setZ(-0.015)
            lineBreakBottomPanel.reparentTo(self.helpFrame)
            panels.flattenStrong()
            self.helpFrame['frameSize'] = (-halfWidth, halfWidth,
                                           -(runningSize + vMargin), vMargin)
            totalHeight = self.helpFrame.getHeight() - 0.1
            for label in labels:
                label.reparentTo(self.helpFrame)

            if basePosX > 0.0:
                newPosX = basePosX - (halfWidth + cellSizeX * 0.45)
            else:
                newPosX = basePosX + (halfWidth + cellSizeX * 0.45)
            newPosZ = basePosZ > 0.0 and basePosZ + cellSizeZ * 0.45
        else:
            newPosZ = basePosZ + totalHeight - cellSizeZ * 0.75
        if detailsPos:
            newPosX, newPosZ = detailsPos
        self.helpFrame.setPos(newPosX, 0, newPosZ)
        return
 def __init__(self):
     InventoryPage.InventoryPage.__init__(self)
     self.initialiseoptions(CollectionMain)
     gui = loader.loadModel('models/gui/toplevel_gui')
     ornament = loader.loadModel('models/gui/gui_treasure_window_a')
     ornament.setPos(0.53000000000000003, 0, 0.71999999999999997)
     ornament.setScale(0.315)
     ornament.reparentTo(self)
     ornament.flattenStrong()
     self.treasureList = DirectScrolledFrame(parent = self, relief = None, state = DGG.NORMAL, frameColor = PiratesGuiGlobals.FrameColor, borderWidth = PiratesGuiGlobals.BorderWidth, frameSize = (0, PiratesGuiGlobals.InventoryPanelWidth - 0.10000000000000001, 0, PiratesGuiGlobals.InventoryPanelHeight - 0.10000000000000001 - PiratesGuiGlobals.ScrollbarSize), canvasSize = (0, PiratesGuiGlobals.InventoryPanelWidth - 1.1000000000000001, 0, PiratesGuiGlobals.InventoryPanelHeight - 0.10000000000000001 - PiratesGuiGlobals.ScrollbarSize), verticalScroll_frameColor = PiratesGuiGlobals.ScrollbarColor, verticalScroll_borderWidth = (0.0050000000000000001, 0.0050000000000000001), verticalScroll_frameSize = (0, PiratesGuiGlobals.ScrollbarSize, 0, PiratesGuiGlobals.InventoryPageHeight - 0.40000000000000002), verticalScroll_thumb_frameColor = PiratesGuiGlobals.ButtonColor2, verticalScroll_incButton_frameColor = PiratesGuiGlobals.ButtonColor2, verticalScroll_decButton_frameColor = PiratesGuiGlobals.ButtonColor2, horizontalScroll_frameColor = PiratesGuiGlobals.ScrollbarColor, horizontalScroll_borderWidth = (0.0050000000000000001, 0.0050000000000000001), horizontalScroll_frameSize = (0, PiratesGuiGlobals.InventoryItemGuiWidth + PiratesGuiGlobals.ScrollbarSize, 0, PiratesGuiGlobals.ScrollbarSize), horizontalScroll_thumb_frameColor = PiratesGuiGlobals.ButtonColor2, horizontalScroll_incButton_frameColor = PiratesGuiGlobals.ButtonColor2, horizontalScroll_decButton_frameColor = PiratesGuiGlobals.ButtonColor2, sortOrder = 5)
     self.treasureList.setPos(0.02, 0, -0.02)
     localHeight = PiratesGuiGlobals.InventoryPanelHeight - 0.20000000000000001
     self.card = loader.loadModel('models/gui/treasure_gui')
     tex = gui.find('**/treasure_w_coin*')
     self.goldPic = DirectFrame(parent = self.treasureList.getCanvas(), relief = None, image = tex, image_scale = 0.40000000000000002, image_pos = (-0.050000000000000003, 0, 0), pos = (0.34999999999999998, 0, localHeight - 0.35999999999999999), text = PLocalizer.MoneyName, text_fg = PiratesGuiGlobals.TextFG2, text_align = TextNode.ALeft, text_scale = 0.029999999999999999, text_pos = (-0.20000000000000001, 0.02, 0))
     self.numGold = DirectLabel(parent = self.goldPic, relief = None, text = '0', text_align = TextNode.ALeft, text_scale = 0.040000000000000001, text_fg = PiratesGuiGlobals.TextFG2, textMayChange = 1, pos = (0.040000000000000001, 0, -0.029999999999999999), text_font = PiratesGlobals.getInterfaceOutlineFont())
     if base.cr.config.GetBool('buried-treasure', 0):
         self.buryButton = DirectButton(parent = self, relief = None, image = tex, image_scale = 0.40000000000000002, image_pos = (0, 0, 0), pos = (0.5, 0, localHeight - 0.12), command = self.buryTreasure, text = 'BURY TREASURE', text_fg = PiratesGuiGlobals.TextFG2, text_align = TextNode.ACenter, text_scale = 0.025000000000000001, text_pos = (0, -0.085000000000000006, 0))
     
     tex = gui.find('**/treasure_w_card*')
     self.cardPic = DirectFrame(parent = self.treasureList.getCanvas(), relief = None, image = tex, image_scale = 0.40000000000000002, image_pos = (-0.050000000000000003, 0, 0), pos = (0.76000000000000001, 0, localHeight - 0.35999999999999999), text = PLocalizer.CheatCardName, text_fg = PiratesGuiGlobals.TextFG2, text_align = TextNode.ALeft, text_scale = 0.029999999999999999, text_pos = (-0.23000000000000001, 0.02, 0))
     self.cardPic.setTransparency(1)
     self.numCards = DirectLabel(parent = self.cardPic, relief = None, text = '0', text_align = TextNode.ALeft, text_scale = 0.040000000000000001, text_fg = PiratesGuiGlobals.TextFG2, textMayChange = 1, pos = (0.042000000000000003, 0, -0.029999999999999999), text_font = PiratesGlobals.getInterfaceOutlineFont())
     self.treLabel = DirectLabel(parent = self.treasureList.getCanvas(), relief = None, text = PLocalizer.Treasure, text_align = TextNode.ALeft, text_scale = 0.029999999999999999, text_fg = PiratesGuiGlobals.TextFG2, textMayChange = 1, pos = (0.14399999999999999, 0, localHeight - 0.47999999999999998))
     spotPic = gui.find('**/treasure_w_a_slot')
     blipParent = NodePath('blipParent')
     for colSpot in range(4):
         for rowSpot in range(4):
             if colSpot > 0:
                 blip = spotPic.copyTo(blipParent)
                 blip.setScale(0.45000000000000001)
                 blip.setPos(0.23999999999999999 + 0.17999999999999999 * rowSpot, 0, localHeight - 0.40000000000000002 - 0.17999999999999999 * colSpot)
                 continue
         
     
     blipParent.flattenStrong()
     blipFrame = DirectFrame(parent = self.treasureList.getCanvas(), relief = None, geom = blipParent)
     gui.removeNode()
     self.setPics = { }
示例#14
0
 def __init__(self, shipPage, shipId, **kwargs):
     self.shipPage = shipPage
     self.emptyBottle = True
     self.setShipId(shipId)
     self.timer = None
     self.lBroadsideLimit = 0
     self.rBroadsideLimit = 0
     kwargs.setdefault('relief', None)
     kwargs.setdefault('frameSize', (0, self.Width, 0, self.Height))
     DirectFrame.__init__(self, **kwargs)
     self.initialiseoptions(ShipPanel)
     gui = loader.loadModel('models/gui/toplevel_gui')
     inventoryGui = loader.loadModel('models/gui/gui_icons_inventory')
     chestIcon = inventoryGui.find('**/pir_t_ico_trs_chest_01*')
     cannonIcon = gui.find('**/topgui_icon_ship_cannon_single')
     skillIcons = loader.loadModel('models/textureCards/skillIcons')
     broadsideId = InventoryType.CannonRoundShot
     ammoIconName = WeaponGlobals.getSkillIcon(broadsideId)
     broadsideIcon = skillIcons.find('**/%s' % ammoIconName)
     crewIcon = (gui.find('**/pir_t_gui_gen_friends_pirates'), )
     self.bottleFrame = ShipFrameBottle(parent=self,
                                        shipId=shipId,
                                        relief=None,
                                        state=DGG.DISABLED,
                                        pos=(0.075, 0, 0.75),
                                        scale=0.835)
     gui = loader.loadModel('models/gui/gui_ship_window')
     bottleImage = gui.find('**/ship_bottle')
     self.shipBottle = DirectLabel(parent=self.bottleFrame,
                                   relief=None,
                                   state=DGG.DISABLED,
                                   geom=bottleImage,
                                   geom_scale=0.3,
                                   geom_pos=(0, 0, 0),
                                   pos=(0.5, 0, -0.0))
     self.nameLabel = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         text=PLocalizer.makeHeadingString(PLocalizer.EmptyBottle, 2),
         text_fg=PiratesGuiGlobals.TextFG1,
         text_scale=PiratesGuiGlobals.TextScaleTitleSmall,
         text_align=TextNode.ACenter,
         text_shadow=(0, 0, 0, 1),
         text_wordwrap=30,
         textMayChange=1,
         text_font=PiratesGlobals.getPirateFont(),
         pos=(0.55, 0, 1.22))
     self.classLabel = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         text=PLocalizer.makeHeadingString(PLocalizer.EmptyBottleDesc, 1),
         text_scale=PiratesGuiGlobals.TextScaleMed,
         text_align=TextNode.ACenter,
         text_fg=PiratesGuiGlobals.TextFG2,
         text_shadow=(0, 0, 0, 1),
         text_wordwrap=30,
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceFont(),
         pos=(0.55, 0, 1.18))
     self.timer = PiratesTimer.PiratesTimer(showMinutes=True,
                                            mode=None,
                                            titleText='',
                                            titleFg='',
                                            infoText='',
                                            cancelText='',
                                            cancelCallback=None)
     self.timer.setFontColor(PiratesGuiGlobals.TextFG2)
     self.timer.reparentTo(self)
     self.timer.setPos(0.45, 0, 0.94)
     self.timer.setScale(0.6)
     self.timer.stash()
     self.hpMeter = DirectWaitBar(parent=self,
                                  relief=DGG.RAISED,
                                  state=DGG.DISABLED,
                                  range=1,
                                  value=0,
                                  frameColor=(0.0, 0.0, 0.0, 0.0),
                                  barColor=(0.1, 0.7, 0.1, 1),
                                  frameSize=(0, 0.31, 0, 0.0186),
                                  text='',
                                  text_align=TextNode.ARight,
                                  text_scale=0.03,
                                  text_fg=(1, 1, 1, 1),
                                  text_shadow=(0, 0, 0, 1),
                                  text_pos=(0.3, 0.03),
                                  pos=(0.55, 0.0, 0.45),
                                  scale=1.2)
     hpLabel = DirectLabel(parent=self.hpMeter,
                           relief=None,
                           state=DGG.DISABLED,
                           text=PLocalizer.HP,
                           text_scale=0.03,
                           text_align=TextNode.ALeft,
                           text_pos=(0.015, 0.03),
                           text_fg=(1, 1, 1, 1),
                           text_shadow=(0, 0, 0, 1))
     self.speedMeter = DirectWaitBar(parent=self,
                                     relief=DGG.RAISED,
                                     state=DGG.DISABLED,
                                     range=1,
                                     value=0,
                                     frameColor=(0.0, 0.0, 0.0, 0.0),
                                     barColor=(0.7, 0.7, 0.1, 1),
                                     frameSize=(0, 0.31, 0, 0.0186),
                                     text='',
                                     text_align=TextNode.ARight,
                                     text_scale=0.03,
                                     text_fg=(1, 1, 1, 1),
                                     text_shadow=(0, 0, 0, 1),
                                     text_pos=(0.3, 0.03),
                                     pos=(0.55, 0.0, 0.35),
                                     scale=1.2)
     speedLabel = DirectLabel(parent=self.speedMeter,
                              relief=None,
                              state=DGG.DISABLED,
                              text=PLocalizer.Sails,
                              text_scale=0.03,
                              text_align=TextNode.ALeft,
                              text_pos=(0.015, 0.03),
                              text_fg=(1, 1, 1, 1),
                              text_shadow=(0, 0, 0, 1))
     self.customHullLabel = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=chestIcon,
         geom_scale=0.15,
         geom_pos=(0, 0, 0),
         text='',
         text_scale=0.045,
         text_align=TextNode.ACenter,
         text_pos=(0, -0.07),
         text_fg=PiratesGuiGlobals.TextFG1,
         text_shadow=(0, 0, 0, 1),
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         pos=(0.35, 0, 0.68))
     self.customHullLabel.hide()
     self.customRiggingLabel = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=chestIcon,
         geom_scale=0.15,
         geom_pos=(0, 0, 0),
         text='',
         text_scale=0.045,
         text_align=TextNode.ACenter,
         text_pos=(0, -0.07),
         text_fg=PiratesGuiGlobals.TextFG1,
         text_shadow=(0, 0, 0, 1),
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         pos=(0.75, 0, 0.68))
     self.customRiggingLabel.hide()
     textPos = (0.0, -0.16)
     self.plunderLimit = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=chestIcon,
         geom_scale=0.1,
         geom_pos=(0, 0, -0.05),
         text='',
         text_scale=0.045,
         text_align=TextNode.ACenter,
         text_pos=textPos,
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1),
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         pos=(0.2, 0, 0.2))
     plunderLabel = DirectLabel(parent=self.plunderLimit,
                                relief=None,
                                state=DGG.DISABLED,
                                text=PLocalizer.Cargo,
                                text_scale=0.036,
                                text_align=TextNode.ACenter,
                                text_pos=(0, 0.04),
                                text_fg=(1, 1, 1, 1),
                                text_shadow=(0, 0, 0, 1))
     self.cannonLimit = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=cannonIcon,
         geom_scale=0.45,
         geom_pos=(0, 0, -0.05),
         text='',
         text_scale=0.045,
         text_align=TextNode.ACenter,
         text_pos=textPos,
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1),
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         pos=(0.37, 0, 0.2))
     cannonLabel = DirectLabel(parent=self.cannonLimit,
                               relief=None,
                               state=DGG.DISABLED,
                               text=PLocalizer.Cannon,
                               text_scale=0.036,
                               text_align=TextNode.ACenter,
                               text_pos=(0, 0.04),
                               text_fg=(1, 1, 1, 1),
                               text_shadow=(0, 0, 0, 1))
     self.cannonLabel = cannonLabel
     self.broadsideLimit = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=broadsideIcon,
         geom_scale=0.15,
         geom_pos=(0, 0, -0.05),
         text='',
         text_scale=0.045,
         text_align=TextNode.ACenter,
         text_pos=textPos,
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1),
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         pos=(0.81, 0, 0.2))
     broadsideLabel = DirectLabel(parent=self.broadsideLimit,
                                  relief=None,
                                  state=DGG.DISABLED,
                                  text=PLocalizer.Broadsides,
                                  text_scale=0.036,
                                  text_align=TextNode.ACenter,
                                  text_fg=(1, 1, 1, 1),
                                  text_shadow=(0, 0, 0, 1),
                                  text_pos=(0.0, 0.04))
     self.broadsideLabel = broadsideLabel
     self.crewLimit = DirectLabel(
         parent=self,
         relief=None,
         state=DGG.DISABLED,
         geom=crewIcon,
         geom_scale=0.4,
         geom_pos=(0, 0, 0.1),
         text='',
         text_scale=0.045,
         text_align=TextNode.ACenter,
         text_fg=(1, 1, 1, 1),
         text_shadow=(0, 0, 0, 1),
         textMayChange=1,
         text_font=PiratesGlobals.getInterfaceOutlineFont(),
         pos=(0.56, 0, 0.04))
     crewLabel = DirectLabel(parent=self.crewLimit,
                             relief=None,
                             state=DGG.DISABLED,
                             text=PLocalizer.Crew,
                             text_scale=0.036,
                             text_align=TextNode.ACenter,
                             text_pos=(0.0, 0.2),
                             text_fg=(1, 1, 1, 1),
                             text_shadow=(0, 0, 0, 1))
     self.crewLabel = crewLabel
     shipOV = base.cr.getOwnerView(self.shipId)
     if shipOV:
         self.setShipName(shipOV.name)
         self.setShipClass(shipOV.shipClass)
         self.setShipHp(shipOV.Hp, shipOV.maxHp)
         self.setShipSp(shipOV.Sp, shipOV.maxSp)
         self.setShipCrew(shipOV.crew, shipOV.maxCrew)
         self.setShipCargo([], shipOV.maxCargo)
         if hasattr(shipOV, 'cannonConfig'):
             self.setShipMaxCannons(shipOV.cannonConfig)
             self.setShipMaxBroadside(shipOV.lBroadsideConfig,
                                      shipOV.rBroadsideConfig)
         self.updateIcons()
     if self.emptyBottle:
         self.hpMeter.hide()
         self.speedMeter.hide()
         self.plunderLimit.hide()
         self.cannonLimit.hide()
         self.broadsideLimit.hide()
         self.crewLimit.hide()
     self.accept('setName-%s' % self.shipId, self.setShipName)
     self.accept('setShipClass-%s' % self.shipId, self.setShipClass)
     self.accept('setShipHp-%s' % self.shipId, self.setShipHp)
     self.accept('setShipSp-%s' % self.shipId, self.setShipSp)
     self.accept('setShipCargo-%s' % self.shipId, self.setShipCargo)
     self.accept('setShipCrew-%s' % self.shipId, self.setShipCrew)
     self.accept('setShipTimer-%s' % self.shipId, self.setShipTimer)
     self.accept('setHullCannonConfig-%s' % self.shipId,
                 self.setShipMaxCannons)
     self.accept('setHullLeftBroadsideConfig-%s' % self.shipId,
                 self.setShipMaxLeftBroadside)
     self.accept('setHullRightBroadsideConfig-%s' % self.shipId,
                 self.setShipMaxRightBroadside)
     self.accept('ShipChanged-%s' % self.shipId, self.handleShipChanged)
     if base.config.GetBool('want-deploy-button', 0):
         pass
     return
 def __init__(self, parent = None, type = PiratesGuiGlobals.REWARD_PANEL_BLACK_PEARL, doneCallback = None, **kw):
     optiondefs = (('pad', (0.55000000000000004, 0.47499999999999998), self.resetFrameSize), ('pos', (0.40000000000000002, 0, 0), None))
     self.defineoptions(kw, optiondefs)
     PDialog.__init__(self, parent)
     self.type = type
     if doneCallback:
         self.doneCallback = doneCallback
     else:
         self.doneCallback = self.cleanup
     self.showWeaponsTrack = None
     skillIcons = loader.loadModel('models/textureCards/skillIcons')
     weaponIcons = loader.loadModel('models/gui/gui_icons_weapon')
     isWeapon = TextDict[type]['isWeapon']
     if isWeapon:
         background = skillIcons.find('**/box_base_over')
         background.setTransparency(0.5)
         icon = weaponIcons.find('**/' + TextDict[type]['icon'])
         icon.setScale(0.75)
     else:
         background = skillIcons.find('**/base_over')
         icon = skillIcons.find('**/' + TextDict[type]['icon'])
     icon.reparentTo(background)
     self.congratsText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, textMayChange = 1, text = PLocalizer.RewardCongratulations, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_scale = 0.12, text_fg = PiratesGuiGlobals.TextFG1, pos = (0.0, 0, 0.34000000000000002))
     self.completeText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, textMayChange = 1, text = TextDict[type]['title'], text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_scale = 0.050000000000000003, text_fg = PiratesGuiGlobals.TextFG2, pos = (0, 0, 0.26000000000000001))
     self.iconLabel = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, geom = background, geom_scale = 0.29999999999999999, text = TextDict[type]['summary'], text_font = PiratesGlobals.getInterfaceFont(), text_align = TextNode.ACenter, text_scale = 0.040000000000000001, text_fg = PiratesGuiGlobals.TextFG1, text_pos = (0, 0.20000000000000001), pos = (0, 0, -0.029999999999999999))
     self.descriptionText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, textMayChange = 1, text = TextDict[type]['description'], text_font = PiratesGlobals.getInterfaceFont(), text_align = TextNode.ACenter, text_scale = 0.037999999999999999, text_fg = PiratesGuiGlobals.TextFG1, pos = (0, 0, -0.26000000000000001))
     self.nextButton = GuiButton.GuiButton(parent = self, state = DGG.NORMAL, text = PLocalizer.lOk, textMayChange = 1, text_scale = PiratesGuiGlobals.TextScaleMed, text_pos = (0, -0.01), pos = (0, 0, -0.5), command = self.doneCallback)
     self.borderFrame['borderScale'] = 1
     self.setupCustomReward()
     self.initialiseoptions(RewardPanel)
     self.setScale(1.25)
 def makeCheckbox(self, pos, text, command, initialState, extraArgs, levelText):
     charGui = loader.loadModel('models/gui/toplevel_gui')
     buttonImage = (charGui.find('**/generic_button'), charGui.find('**/generic_button'), charGui.find('**/generic_button'), charGui.find('**/generic_button'))
     geomCheck = [
         charGui.find('**/generic_check'),
         charGui.find('**/generic_check'),
         charGui.find('**/generic_check'),
         None]
     c = DirectCheckButton(parent = self, relief = None, scale = 0.064000000000000001, boxBorder = 0.080000000000000002, boxRelief = None, boxImage = geomCheck, boxImageScale = 6, boxImageColor = VBase4(0, 1, 0, 1), pos = pos, text = text, text_fg = PiratesGuiGlobals.TextFG1, text_scale = 0.5, text_pos = (-2.3999999999999999, 0, -2.7999999999999998), text_align = TextNode.ALeft, text_font = PiratesGlobals.getInterfaceOutlineFont(), indicator_pos = (2.2000000000000002, 0, 0.14999999999999999), command = command, indicatorValue = initialState, extraArgs = extraArgs, text0_fg = PiratesGuiGlobals.TextFG1, text1_fg = PiratesGuiGlobals.TextFG1, text2_fg = PiratesGuiGlobals.TextFG1, text3_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, image = buttonImage, image_pos = (0, 0, 0.14999999999999999), image_scale = (6, 1, 2.4500000000000002), state = DGG.DISABLED)
     l = DirectLabel(parent = c, text = levelText, text_font = PiratesGlobals.getInterfaceFont(), text_scale = 0.5, text_align = TextNode.ALeft, frameColor = (0.80000000000000004, 0.69999999999999996, 0.5, 1), pos = (-0.29999999999999999, 0, 0))
     c.setIndicatorValue()
     del charGui
     return c
示例#17
0
    def __init__(self, shipPage, shipId, **kwargs):
        self.shipPage = shipPage
        self.emptyBottle = True
        self.setShipId(shipId)
        self.timer = None
        self.lBroadsideLimit = 0
        self.rBroadsideLimit = 0
        kwargs.setdefault("relief", None)
        kwargs.setdefault("frameSize", (0, self.Width, 0, self.Height))
        DirectFrame.__init__(self, **None)
        self.initialiseoptions(ShipPanel)
        gui = loader.loadModel("models/gui/toplevel_gui")
        inventoryGui = loader.loadModel("models/gui/gui_icons_inventory")
        chestIcon = inventoryGui.find("**/pir_t_ico_trs_chest_01*")
        cannonIcon = gui.find("**/topgui_icon_ship_cannon_single")
        skillIcons = loader.loadModel("models/textureCards/skillIcons")
        broadsideId = InventoryType.CannonRoundShot
        ammoIconName = WeaponGlobals.getSkillIcon(broadsideId)
        broadsideIcon = skillIcons.find("**/%s" % ammoIconName)
        crewIcon = (gui.find("**/pir_t_gui_gen_friends_pirates"),)
        self.bottleFrame = ShipFrameBottle(
            parent=self,
            shipId=shipId,
            relief=None,
            state=DGG.DISABLED,
            pos=(0.074999999999999997, 0, 0.75),
            scale=0.83499999999999996,
        )
        gui = loader.loadModel("models/gui/gui_ship_window")
        bottleImage = gui.find("**/ship_bottle")
        self.shipBottle = DirectLabel(
            parent=self.bottleFrame,
            relief=None,
            state=DGG.DISABLED,
            geom=bottleImage,
            geom_scale=0.29999999999999999,
            geom_pos=(0, 0, 0),
            pos=(0.5, 0, -0.0),
        )
        self.nameLabel = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.makeHeadingString(PLocalizer.EmptyBottle, 2),
            text_fg=PiratesGuiGlobals.TextFG1,
            text_scale=PiratesGuiGlobals.TextScaleTitleSmall,
            text_align=TextNode.ACenter,
            text_shadow=(0, 0, 0, 1),
            text_wordwrap=30,
            textMayChange=1,
            text_font=PiratesGlobals.getPirateFont(),
            pos=(0.55000000000000004, 0, 1.22),
        )
        self.classLabel = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.makeHeadingString(PLocalizer.EmptyBottleDesc, 1),
            text_scale=PiratesGuiGlobals.TextScaleMed,
            text_align=TextNode.ACenter,
            text_fg=PiratesGuiGlobals.TextFG2,
            text_shadow=(0, 0, 0, 1),
            text_wordwrap=30,
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceFont(),
            pos=(0.55000000000000004, 0, 1.1799999999999999),
        )
        self.timer = PiratesTimer.PiratesTimer(
            showMinutes=True, mode=None, titleText="", titleFg="", infoText="", cancelText="", cancelCallback=None
        )
        self.timer.setFontColor(PiratesGuiGlobals.TextFG2)
        self.timer.reparentTo(self)
        self.timer.setPos(0.45000000000000001, 0, 0.93999999999999995)
        self.timer.setScale(0.59999999999999998)
        self.timer.stash()
        self.hpMeter = DirectWaitBar(
            parent=self,
            relief=DGG.RAISED,
            state=DGG.DISABLED,
            range=1,
            value=0,
            frameColor=(0.0, 0.0, 0.0, 0.0),
            barColor=(0.10000000000000001, 0.69999999999999996, 0.10000000000000001, 1),
            frameSize=(0, 0.31, 0, 0.018599999999999998),
            text="",
            text_align=TextNode.ARight,
            text_scale=0.029999999999999999,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_pos=(0.29999999999999999, 0.029999999999999999),
            pos=(0.55000000000000004, 0.0, 0.45000000000000001),
            scale=1.2,
        )
        hpLabel = DirectLabel(
            parent=self.hpMeter,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.HP,
            text_scale=0.029999999999999999,
            text_align=TextNode.ALeft,
            text_pos=(0.014999999999999999, 0.029999999999999999),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
        )
        self.speedMeter = DirectWaitBar(
            parent=self,
            relief=DGG.RAISED,
            state=DGG.DISABLED,
            range=1,
            value=0,
            frameColor=(0.0, 0.0, 0.0, 0.0),
            barColor=(0.69999999999999996, 0.69999999999999996, 0.10000000000000001, 1),
            frameSize=(0, 0.31, 0, 0.018599999999999998),
            text="",
            text_align=TextNode.ARight,
            text_scale=0.029999999999999999,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_pos=(0.29999999999999999, 0.029999999999999999),
            pos=(0.55000000000000004, 0.0, 0.34999999999999998),
            scale=1.2,
        )
        speedLabel = DirectLabel(
            parent=self.speedMeter,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.Sails,
            text_scale=0.029999999999999999,
            text_align=TextNode.ALeft,
            text_pos=(0.014999999999999999, 0.029999999999999999),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
        )
        self.customHullLabel = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            geom=chestIcon,
            geom_scale=0.14999999999999999,
            geom_pos=(0, 0, 0),
            text="",
            text_scale=0.044999999999999998,
            text_align=TextNode.ACenter,
            text_pos=(0, -0.070000000000000007),
            text_fg=PiratesGuiGlobals.TextFG1,
            text_shadow=(0, 0, 0, 1),
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            pos=(0.34999999999999998, 0, 0.68000000000000005),
        )
        self.customHullLabel.hide()
        self.customRiggingLabel = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            geom=chestIcon,
            geom_scale=0.14999999999999999,
            geom_pos=(0, 0, 0),
            text="",
            text_scale=0.044999999999999998,
            text_align=TextNode.ACenter,
            text_pos=(0, -0.070000000000000007),
            text_fg=PiratesGuiGlobals.TextFG1,
            text_shadow=(0, 0, 0, 1),
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            pos=(0.75, 0, 0.68000000000000005),
        )
        self.customRiggingLabel.hide()
        textPos = (0.0, -0.16)
        self.plunderLimit = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            geom=chestIcon,
            geom_scale=0.10000000000000001,
            geom_pos=(0, 0, -0.050000000000000003),
            text="",
            text_scale=0.044999999999999998,
            text_align=TextNode.ACenter,
            text_pos=textPos,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            pos=(0.20000000000000001, 0, 0.20000000000000001),
        )
        plunderLabel = DirectLabel(
            parent=self.plunderLimit,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.Cargo,
            text_scale=0.035999999999999997,
            text_align=TextNode.ACenter,
            text_pos=(0, 0.040000000000000001),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
        )
        self.cannonLimit = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            geom=cannonIcon,
            geom_scale=0.45000000000000001,
            geom_pos=(0, 0, -0.050000000000000003),
            text="",
            text_scale=0.044999999999999998,
            text_align=TextNode.ACenter,
            text_pos=textPos,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            pos=(0.37, 0, 0.20000000000000001),
        )
        cannonLabel = DirectLabel(
            parent=self.cannonLimit,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.Cannon,
            text_scale=0.035999999999999997,
            text_align=TextNode.ACenter,
            text_pos=(0, 0.040000000000000001),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
        )
        self.cannonLabel = cannonLabel
        self.broadsideLimit = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            geom=broadsideIcon,
            geom_scale=0.14999999999999999,
            geom_pos=(0, 0, -0.050000000000000003),
            text="",
            text_scale=0.044999999999999998,
            text_align=TextNode.ACenter,
            text_pos=textPos,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            pos=(0.81000000000000005, 0, 0.20000000000000001),
        )
        broadsideLabel = DirectLabel(
            parent=self.broadsideLimit,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.Broadsides,
            text_scale=0.035999999999999997,
            text_align=TextNode.ACenter,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_pos=(0.0, 0.040000000000000001),
        )
        self.broadsideLabel = broadsideLabel
        self.crewLimit = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            geom=crewIcon,
            geom_scale=0.40000000000000002,
            geom_pos=(0, 0, 0.10000000000000001),
            text="",
            text_scale=0.044999999999999998,
            text_align=TextNode.ACenter,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            textMayChange=1,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            pos=(0.56000000000000005, 0, 0.040000000000000001),
        )
        crewLabel = DirectLabel(
            parent=self.crewLimit,
            relief=None,
            state=DGG.DISABLED,
            text=PLocalizer.Crew,
            text_scale=0.035999999999999997,
            text_align=TextNode.ACenter,
            text_pos=(0.0, 0.20000000000000001),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
        )
        self.crewLabel = crewLabel
        shipOV = base.cr.getOwnerView(self.shipId)
        if shipOV:
            self.setShipName(shipOV.name)
            self.setShipClass(shipOV.shipClass)
            self.setShipHp(shipOV.Hp, shipOV.maxHp)
            self.setShipSp(shipOV.Sp, shipOV.maxSp)
            self.setShipCrew(shipOV.crew, shipOV.maxCrew)
            self.setShipCargo([], shipOV.maxCargo)
            if hasattr(shipOV, "cannonConfig"):
                self.setShipMaxCannons(shipOV.cannonConfig)
                self.setShipMaxBroadside(shipOV.lBroadsideConfig, shipOV.rBroadsideConfig)

            self.updateIcons()

        if self.emptyBottle:
            self.hpMeter.hide()
            self.speedMeter.hide()
            self.plunderLimit.hide()
            self.cannonLimit.hide()
            self.broadsideLimit.hide()
            self.crewLimit.hide()

        self.accept("setName-%s" % self.shipId, self.setShipName)
        self.accept("setShipClass-%s" % self.shipId, self.setShipClass)
        self.accept("setShipHp-%s" % self.shipId, self.setShipHp)
        self.accept("setShipSp-%s" % self.shipId, self.setShipSp)
        self.accept("setShipCargo-%s" % self.shipId, self.setShipCargo)
        self.accept("setShipCrew-%s" % self.shipId, self.setShipCrew)
        self.accept("setShipTimer-%s" % self.shipId, self.setShipTimer)
        self.accept("setHullCannonConfig-%s" % self.shipId, self.setShipMaxCannons)
        self.accept("setHullLeftBroadsideConfig-%s" % self.shipId, self.setShipMaxLeftBroadside)
        self.accept("setHullRightBroadsideConfig-%s" % self.shipId, self.setShipMaxRightBroadside)
        self.accept("ShipChanged-%s" % self.shipId, self.handleShipChanged)
        if base.config.GetBool("want-deploy-button", 0):
            pass
        1
示例#18
0
 def __init__(self, parent, **kw):
     optiondefs = (('relief', None, None), )
     self.defineoptions(kw, optiondefs)
     DirectFrame.__init__(self, parent, **kw)
     self.initialiseoptions(RedeemCodeGUI)
     gui_main = loader.loadModel('models/gui/gui_main')
     topImage = gui_main.find('**/game_options_panel/top')
     topImage.setPos(0.52, 0, -0.15)
     gui_main.removeNode()
     self.artFrame = DirectFrame(parent=aspect2dp,
                                 relief=None,
                                 image=topImage,
                                 image_scale=(0.24, 0.24, 0.24),
                                 pos=(0.1, 0.0, -0.2))
     self.artFrame.setBin('gui-fixed', 2)
     self.blackout = DirectFrame(parent=aspect2dp,
                                 state=DGG.NORMAL,
                                 frameSize=(-5, 5, -5, 5),
                                 frameColor=(0.0, 0.0, 0.0, 0.4),
                                 pos=(0.0, 0.0, 0.0))
     self.enterCode = GuiButton.GuiButton(parent=self.artFrame,
                                          text=PLocalizer.lConfirm,
                                          pos=(0.385, 0.0, -0.025),
                                          command=self.confirmCode)
     self.cancelCode = GuiButton.GuiButton(parent=self.artFrame,
                                           text=PLocalizer.lCancel,
                                           pos=(0.65, 0.0, -0.025),
                                           command=self.hideCode)
     DirectLabel(parent=self.artFrame,
                 relief=None,
                 text=PLocalizer.ShopEnterCode,
                 text_align=TextNode.ACenter,
                 text_scale=PiratesGuiGlobals.TextScaleTitleSmall * 0.9,
                 text_pos=(0.51, 0.335),
                 text_fg=PiratesGuiGlobals.TextFG2,
                 text_shadow=PiratesGuiGlobals.TextShadow,
                 text_font=PiratesGlobals.getInterfaceOutlineFont(),
                 textMayChange=0)
     DirectLabel(parent=self.artFrame,
                 relief=None,
                 text=PLocalizer.ShopCodeInst,
                 text_align=TextNode.ACenter,
                 text_scale=PiratesGuiGlobals.TextScaleLarge * 1.1,
                 text_pos=(0.51, 0.25),
                 text_fg=PiratesGuiGlobals.TextFG2,
                 text_shadow=PiratesGuiGlobals.TextShadow,
                 text_font=PiratesGlobals.getInterfaceOutlineFont(),
                 textMayChange=0,
                 text_wordwrap=12)
     self.codeInput = DirectEntry(
         parent=self.artFrame,
         relief=DGG.GROOVE,
         scale=PiratesGuiGlobals.TextScaleExtraLarge,
         pos=(0.52, 0, 0.06),
         borderWidth=PiratesGuiGlobals.BorderWidth,
         frameColor=(0.0, 0.0, 0.0, 1.0),
         text_align=TextNode.ACenter,
         width=15,
         numLines=1,
         focus=1,
         cursorKeys=1,
         text_fg=(1, 1, 1, 1),
         suppressKeys=1,
         suppressMouse=1,
         autoCapitalize=0,
         command=self.confirmCode)
     self.alertDialog = None
     self.accept('codeRedeemed', self.__handleCodeRedeem)
     return
示例#19
0
 def __init__(self, inventoryUIManager):
     self.inventoryUIManager = inventoryUIManager
     InventoryPage.InventoryPage.__init__(self)
     self.initialiseoptions(InventoryBagPage)
     self.containerList = []
     self.containersToShowTrash = []
     self.treasureTab = None
     self.isReady = 0
     self.treasurePageReopen = 0
     self.openedContainer = None
     self.redeemCodeGUI = None
     self.buttonSize = self.inventoryUIManager.standardButtonSize
     self.weaponBag = self.addContainer(InventoryUIWeaponContainer.InventoryUIWeaponContainer(self.inventoryUIManager, self.buttonSize * 6.0, self.buttonSize * 5.0, 6, 5, slotList = range(Locations.RANGE_WEAPONS[0], Locations.RANGE_WEAPONS[0] + 30)))
     self.clothingBag = self.addContainer(InventoryUIClothingContainer.InventoryUIClothingContainer(self.inventoryUIManager, self.buttonSize * 5.0, self.buttonSize * 7.0, 5, 7, slotList = range(Locations.RANGE_CLOTHES[0], Locations.RANGE_CLOTHES[0] + 35)))
     self.jewelryBag = self.addContainer(InventoryUIJewelryContainer.InventoryUIJewelryContainer(self.inventoryUIManager, self.buttonSize * 4.0, self.buttonSize * 7.0, 4, 7, slotList = range(Locations.RANGE_JEWELERY_AND_TATTOO[0], Locations.RANGE_JEWELERY_AND_TATTOO[0] + 28)))
     cardRange = range(UberDogGlobals.InventoryType.begin_Cards, UberDogGlobals.InventoryType.end_Cards)
     cardRange.reverse()
     self.potionBag = self.addContainer(InventoryUIConsumableContainerLocatable.InventoryUIConsumableContainerLocatable(self.inventoryUIManager, self.buttonSize * 6.0, self.buttonSize * 7.0, 6, 7, slotList = range(Locations.RANGE_CONSUMABLE[0], Locations.RANGE_CONSUMABLE[0] + 42)))
     self.ammoBag = self.addContainer(InventoryUIAmmoContainer.InventoryUIAmmoContainer(self.inventoryUIManager, self.buttonSize * 7.0, self.buttonSize * 6.0, maxCountX = 7, itemList = WeaponGlobals.getAllAmmoSkills()), showTrash = 0)
     self.materialBag = self.addContainer(InventoryUIMaterialContainer.InventoryUIMaterialContainer(self.inventoryUIManager, self.buttonSize * 7.0, self.buttonSize * 6.0, maxCountX = 7, itemList = WeaponGlobals.getAllAmmoSkills()), showTrash = 0)
     self.cardBag = self.addContainer(InventoryUICardContainer.InventoryUICardContainer(self.inventoryUIManager, self.buttonSize * 4.0, self.buttonSize * 13.0, 4, 13, minCountZ = 13, maxCountX = 4, itemList = cardRange), showTrash = 0)
     hotkeySlotStart = Locations.RANGE_EQUIP_WEAPONS[0]
     weaponKeySlotList = []
     for weaponIndex in range(Locations.RANGE_EQUIP_WEAPONS[0], Locations.RANGE_EQUIP_WEAPONS[1] + 1):
         weaponKeySlotList.append(('F%s' % weaponIndex, 'f%s' % weaponIndex, weaponIndex))
     
     weaponKeySlotList.append((PLocalizer.InventoryPageItemSlot, '', Locations.RANGE_EQUIP_ITEMS[0]))
     self.inventoryPanelHotkey = InventoryUIBeltGrid.InventoryUIBeltGrid(self.inventoryUIManager, self.buttonSize * float(len(weaponKeySlotList)), self.buttonSize, len(weaponKeySlotList), 1, weaponKeySlotList)
     self.inventoryPanelHotkey.setPos(0.42499999999999999 - 0.5 * self.inventoryPanelHotkey.sizeX, 0.0, 0.89500000000000002)
     self.inventoryPanelHotkey.reparentTo(self.weaponBag)
     self.inventoryPanelTrash = InventoryUITrashContainer.InventoryUITrashContainer(self.inventoryUIManager, self.buttonSize, self.buttonSize)
     self.inventoryPanelTrash.setup()
     self.inventoryPanelTrash.setPos(0.070000000000000007, 0.0, -0.029999999999999999)
     self.inventoryPanelTrash.reparentTo(self)
     self.inventoryPanelDrinker = InventoryUIDrinker.InventoryUIDrinker(self.inventoryUIManager, self.buttonSize, self.buttonSize)
     self.inventoryPanelDrinker.setup()
     self.inventoryPanelDrinker.setPos(0.29999999999999999, 0.0, -0.029999999999999999)
     self.inventoryPanelDrinker.reparentTo(self)
     self.inventoryPanelDressing = InventoryUIDressingContainer.InventoryUIDressingContainer(self.inventoryUIManager, self.buttonSize, self.buttonSize * 7.0, slotList = range(Locations.RANGE_EQUIP_CLOTHES[0], Locations.RANGE_EQUIP_CLOTHES[1] + 1))
     self.inventoryPanelDressing.setPos(-0.22500000000000001, 0.0, -0.0)
     self.inventoryPanelDressing.reparentTo(self.clothingBag)
     self.inventoryPanelJewelryDressing = InventoryUIJewelryDressingContainer.InventoryUIJewelryDressingContainer(self.inventoryUIManager, self.buttonSize * 2.0, self.buttonSize * 4.0, slotList = range(Locations.RANGE_EQUIP_JEWELRY[0], Locations.RANGE_EQUIP_JEWELRY[1] + 1))
     self.inventoryPanelJewelryDressing.setPos(-0.37, 0.0, 0.40999999999999998)
     self.inventoryPanelJewelryDressing.reparentTo(self.jewelryBag)
     self.inventoryPanelTattooDressing = InventoryUITattooDressingContainer.InventoryUITattooDressingContainer(self.inventoryUIManager, self.buttonSize * 2.0, self.buttonSize * 2.0, slotList = range(Locations.RANGE_EQUIP_TATTOO[0], Locations.RANGE_EQUIP_TATTOO[1] + 1))
     self.inventoryPanelTattooDressing.setPos(-0.37, 0.0, 0.0)
     self.inventoryPanelTattooDressing.reparentTo(self.jewelryBag)
     self.inventoryPanelGold = InventoryUIGoldContainer.InventoryUIGoldContainer(self.inventoryUIManager, self.buttonSize, self.buttonSize)
     self.inventoryPanelGold.setPos(0.84999999999999998, 0.0, -0.029999999999999999)
     self.inventoryPanelGold.reparentTo(self)
     self.backTabParent = self.attachNewNode('backTabs')
     self.frontTabParent = self.attachNewNode('frontTab', sort = 2)
     self.tabBar = None
     self.tabCount = 0
     for container in self.containerList:
         container.setPos(0.14000000000000001, 0.0, 0.44)
         container.setX(0.54000000000000004 - 0.5 * container.sizeX)
         container.setZ(1.2 - container.getTotalHeight())
         container.reparentTo(self)
     
     self.weaponBag.setZ(0.20000000000000001)
     self.clothingBag.setPos(self.buttonSize * 2.0 + 0.029999999999999999, 0.0, 0.20000000000000001)
     self.jewelryBag.setPos(self.buttonSize * 3.0 + 0.040000000000000001, 0.0, 0.20999999999999999)
     self.ammoBag.setPos(self.buttonSize * 0.5 - 0.029999999999999999, 0.0, 0.248)
     self.cardBag.setPos(self.buttonSize * 1.5 - 0.02, 0.0, self.buttonSize * 2.0)
     Gui = loader.loadModel('models/gui/char_gui')
     buttonImage = (Gui.find('**/chargui_text_block_large'), Gui.find('**/chargui_text_block_large_down'), Gui.find('**/chargui_text_block_large_over'), Gui.find('**/chargui_text_block_large'))
     self.redeemCodeButton = DirectButton(parent = self, relief = None, image = buttonImage, image_scale = 0.45000000000000001, text = PLocalizer.InventoryRedeemCode, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_pos = (0, -0.01), text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, pos = (0.68000000000000005, 0, 0.040000000000000001), command = self.showRedeemCodeGUI)
     self.redeemCodeButton.hide()
     self.faceCameraButton = DirectButton(parent = self, relief = None, image = buttonImage, image_scale = 0.45000000000000001, text = PLocalizer.InventoryFaceCamera, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_pos = (0, -0.01), text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, pos = (0.37, 0, 0.040000000000000001), command = self.faceCamera)
     self.faceCameraButton.hide()
     self.notLoadedWarning = DirectLabel(parent = self, relief = DGG.SUNKEN, borderWidth = (0, 0), frameColor = (0.5, 0.14999999999999999, 0.050000000000000003, 1), text = PLocalizer.InventoryNotLoaded, text_align = TextNode.ALeft, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_scale = 0.044999999999999998, text_fg = (1, 1, 1, 1), text_wordwrap = 20.0, state = DGG.DISABLED, pos = (0.10000000000000001, 0, 0.75))
     self.accept('openingContainer', self.onOpen)
     self.acceptOnce('localPirate-created', self.askInventory)
     self.accept('pickedUpItem', self.onLocatable)
     self.invRequestId = None
示例#20
0
 def createHelpbox(self, args = None):
     if self.helpFrame:
         return None
     
     itemType = EconomyGlobals.getItemType(self.data[0])
     if itemType <= ItemType.WAND or itemType == ItemType.POTION:
         itemId = self.data[0]
         self.helpFrame = DirectFrame(parent = aspect2d, relief = None, state = DGG.DISABLED, sortOrder = 1)
         detailGui = loader.loadModel('models/gui/gui_card_detail')
         topGui = loader.loadModel('models/gui/toplevel_gui')
         coinImage = topGui.find('**/treasure_w_coin*')
         self.SkillIcons = loader.loadModel('models/textureCards/skillIcons')
         self.BuffIcons = loader.loadModel('models/textureCards/buff_icons')
         border = self.SkillIcons.find('**/base')
         halfWidth = 0.29999999999999999
         halfHeight = 0.20000000000000001
         textScale = PiratesGuiGlobals.TextScaleMed
         titleScale = PiratesGuiGlobals.TextScaleTitleSmall
         titleNameScale = PiratesGuiGlobals.TextScaleExtraLarge
         subtitleScale = PiratesGuiGlobals.TextScaleMed
         iconScalar = 1.5
         borderScaler = 0.25
         splitHeight = 0.01
         vMargin = 0.029999999999999999
         runningVertPosition = 0.29999999999999999
         runningSize = 0.0
         labels = []
         titleColor = PiratesGuiGlobals.TextFG6
         itemColor = 'itemRed'
         rarity = ItemGlobals.getRarity(itemId)
         rarityText = PLocalizer.getItemRarityName(rarity)
         subtypeText = PLocalizer.getItemSubtypeName(ItemGlobals.getSubtype(itemId))
         if rarity == ItemGlobals.CRUDE:
             titleColor = PiratesGuiGlobals.TextFG24
             itemColor = 'itemBrown'
         elif rarity == ItemGlobals.COMMON:
             titleColor = PiratesGuiGlobals.TextFG13
             itemColor = 'itemYellow'
         elif rarity == ItemGlobals.RARE:
             titleColor = PiratesGuiGlobals.TextFG4
             itemColor = 'itemGreen'
         elif rarity == ItemGlobals.FAMED:
             titleColor = PiratesGuiGlobals.TextFG5
             itemColor = 'itemBlue'
         
         titleLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.getItemName(itemId), text_scale = titleNameScale, text_fg = titleColor, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         self.bg.setColor(titleColor)
         tHeight = 0.070000000000000007
         titleLabel.setZ(runningVertPosition)
         runningVertPosition -= tHeight
         runningSize += tHeight
         labels.append(titleLabel)
         subtitleLabel = DirectLabel(parent = self, relief = None, text = '\x01slant\x01%s %s\x02' % (rarityText, subtypeText), text_scale = subtitleScale, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
         subtHeight = 0.050000000000000003
         subtitleLabel.setZ(subtHeight * 0.5 + runningVertPosition)
         runningVertPosition -= subtHeight
         runningSize += subtHeight
         labels.append(subtitleLabel)
         itemType = ItemGlobals.getType(itemId)
         itemSubtype = ItemGlobals.getSubtype(itemId)
         model = ItemGlobals.getModel(itemId)
         if model:
             if itemType == ItemGlobals.GRENADE:
                 self.realItem = loader.loadModel('models/ammunition/' + model)
             elif itemType == ItemGlobals.POTION:
                 self.realItem = loader.loadModel('models/inventory/' + model)
             else:
                 self.realItem = loader.loadModel('models/handheld/' + model)
             if self.realItem:
                 spinBlur = self.realItem.find('**/motion_blur')
                 if spinBlur:
                     spinBlur.hide()
                 
                 if itemSubtype == ItemGlobals.MUSKET:
                     bayonetPart = self.realItem.find('**/bayonet')
                     if bayonetPart:
                         bayonetPart.stash()
                     
                 
                 posHpr = ItemGlobals.getModelPosHpr(model)
                 if posHpr:
                     self.realItem.setPos(posHpr[0], posHpr[1], posHpr[2])
                     self.realItem.setHpr(posHpr[3], posHpr[4], posHpr[5])
                 elif itemType == ItemGlobals.SWORD:
                     self.realItem.setPos(-1.5, 3.0, -0.29999999999999999)
                     self.realItem.setHpr(90, 170, -90)
                 elif itemSubtype in (ItemGlobals.MUSKET, ItemGlobals.BAYONET):
                     self.realItem.setPos(-1.2, 3.0, -0.10000000000000001)
                     self.realItem.setHpr(0, 135, 10)
                 elif itemSubtype == ItemGlobals.BLUNDERBUSS:
                     self.realItem.setPos(-0.29999999999999999, 2.0, 0.0)
                     self.realItem.setHpr(0, 90, 0)
                 elif itemType == ItemGlobals.GUN:
                     self.realItem.setPos(-0.5, 2.0, -0.20000000000000001)
                     self.realItem.setHpr(0, 90, 0)
                 elif itemType == ItemGlobals.DOLL:
                     self.realItem.setPos(0.0, 1.8999999999999999, -0.10000000000000001)
                     self.realItem.setHpr(0, 90, 180)
                 elif itemType == ItemGlobals.DAGGER:
                     self.realItem.setPos(-1.0, 2.0, -0.29999999999999999)
                     self.realItem.setHpr(90, 170, -90)
                 elif itemType == ItemGlobals.GRENADE:
                     self.realItem.setPos(0.0, 3.5, -0.20000000000000001)
                     self.realItem.setHpr(0, 0, 0)
                 elif itemType == ItemGlobals.STAFF:
                     self.realItem.setPos(-0.40000000000000002, 3.0, -0.29999999999999999)
                     self.realItem.setHpr(-90, 15, -90)
                 elif itemSubtype == ItemGlobals.RAM:
                     self.realItem.setPos(-1.5, 1.5, -0.59999999999999998)
                     self.realItem.setHpr(70, 160, -90)
                 elif itemType == ItemGlobals.POTION:
                     self.realItem.setPos(0.0, 2.5, -0.40000000000000002)
                     self.realItem.setHpr(45, 0, 0)
                 else:
                     self.realItem.setPos(0.0, 1.5, -0.059999999999999998)
                     self.realItem.setHpr(0, 90, 0)
                 self.realItem.reparentTo(self.portraitSceneGraph)
             
         
         iHeight = 0.17499999999999999
         self.createBuffer()
         self.itemCard.setZ(runningVertPosition - 0.059999999999999998)
         runningVertPosition -= iHeight
         runningSize += iHeight
         labels.append(self.itemCard)
         goldLabel = DirectLabel(parent = self, relief = None, image = coinImage, image_scale = 0.12, image_pos = Vec3(0.025000000000000001, 0, -0.02), text = str(int(ItemGlobals.getGoldCost(itemId) * ItemGlobals.GOLD_SALE_MULTIPLIER)), text_scale = subtitleScale, text_align = TextNode.ARight, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, pos = (halfWidth - 0.050000000000000003, 0.0, runningVertPosition + 0.080000000000000002), text_pos = (0.0, -textScale))
         labels.append(goldLabel)
         infoText = PLocalizer.ItemAttackStrength % '\x01%s\x01%s\x02' % (itemColor, ItemGlobals.getPower(itemId))
         if itemType == ItemGlobals.GUN:
             infoText += '     %s' % PLocalizer.ItemBarrels % '\x01%s\x01%s\x02' % (itemColor, ItemGlobals.getBarrels(itemId))
             infoText += '     %s' % PLocalizer.ItemRangeStrength % '\x01%s\x01%s\x02' % (itemColor, PLocalizer.getItemRangeName(WeaponGlobals.getRange(itemId)))
         
         if itemType != ItemGlobals.POTION:
             infoLabel = DirectLabel(parent = self, relief = None, text = infoText, text_scale = textScale, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             iHeight = 0.080000000000000002
             runningVertPosition -= iHeight
             runningSize += iHeight
             labels.append(infoLabel)
         
         specialAttack = None
         if itemType != ItemGlobals.POTION:
             specialAttack = ItemGlobals.getSpecialAttack(itemId)
         
         if specialAttack:
             attackIcon = self.SkillIcons.find('**/%s' % WeaponGlobals.getSkillIcon(specialAttack))
             specialAttackNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.10000000000000001, geom = attackIcon, geom_scale = 0.10000000000000001, image_pos = (-0.070000000000000007, 0.0, -0.050000000000000003), geom_pos = (-0.070000000000000007, 0.0, -0.050000000000000003), text = PLocalizer.getInventoryTypeName(specialAttack), text_scale = PiratesGuiGlobals.TextScaleLarge, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, text_fg = titleColor, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_shadow = PiratesGuiGlobals.TextShadow, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             specialAttackRankLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.ItemRank % ItemGlobals.getSpecialAttackRank(itemId), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             specialAttackType = WeaponGlobals.getSkillTrack(specialAttack)
             if specialAttackType == WeaponGlobals.BREAK_ATTACK_SKILL_INDEX:
                 specialAttackTypeText = PLocalizer.BreakAttackSkill
             elif specialAttackType == WeaponGlobals.DEFENSE_SKILL_INDEX:
                 specialAttackTypeText = PLocalizer.DefenseSkill
             else:
                 specialAttackTypeText = PLocalizer.WeaponSkill
             specialAttackTypeLabel = DirectLabel(parent = self, relief = None, text = specialAttackTypeText, text_scale = 0.033500000000000002, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - PiratesGuiGlobals.TextScaleLarge), text_pos = (0.0, -textScale))
             specialAttackInfo = PLocalizer.SkillDescriptions.get(specialAttack)
             specialAttackDescriptionText = specialAttackInfo[1]
             specialAttackDescriptionLabel = DirectLabel(parent = self, relief = None, text = specialAttackDescriptionText, text_scale = textScale, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - specialAttackNameLabel.getHeight() + specialAttackTypeLabel.getHeight() - 0.059999999999999998), text_pos = (0.0, -textScale))
             saHeight = specialAttackNameLabel.getHeight() + specialAttackTypeLabel.getHeight() + specialAttackDescriptionLabel.getHeight() - 0.040000000000000001
             runningVertPosition -= saHeight
             runningSize += saHeight
             labels.append(specialAttackNameLabel)
             labels.append(specialAttackRankLabel)
             labels.append(specialAttackTypeLabel)
             labels.append(specialAttackDescriptionLabel)
         
         attributes = ItemGlobals.getAttributes(itemId)
         for i in range(0, len(attributes)):
             attributeIcon = self.SkillIcons.find('**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))
             if not attributeIcon:
                 attributeIcon = self.BuffIcons.find('**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))
             
             attributeNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.050000000000000003, geom = attributeIcon, geom_scale = 0.050000000000000003, image_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), geom_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), text = PLocalizer.getItemAttributeName(attributes[i][0]), text_scale = PiratesGuiGlobals.TextScaleLarge, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, text_fg = titleColor, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_shadow = PiratesGuiGlobals.TextShadow, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             attributeRankLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.ItemRank % attributes[i][1], text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             if attributeNameLabel.getHeight() > 0.074999999999999997:
                 attributeNameSpace = 0.080000000000000002
             else:
                 attributeNameSpace = PiratesGuiGlobals.TextScaleLarge
             attributeDescriptionLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.getItemAttributeDescription(attributes[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - attributeNameSpace), text_pos = (0.0, -textScale))
             aHeight = attributeNameLabel.getHeight() + attributeDescriptionLabel.getHeight()
             runningVertPosition -= aHeight + splitHeight
             runningSize += aHeight + splitHeight
             labels.append(attributeNameLabel)
             labels.append(attributeRankLabel)
             labels.append(attributeDescriptionLabel)
         
         skillBoosts = ItemGlobals.getSkillBoosts(itemId)
         for i in range(0, len(skillBoosts)):
             boostIcon = self.SkillIcons.find('**/%s' % WeaponGlobals.getSkillIcon(skillBoosts[i][0]))
             boostNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.050000000000000003, geom = boostIcon, geom_scale = 0.050000000000000003, image_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), geom_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), text = PLocalizer.ItemBoost % PLocalizer.getInventoryTypeName(skillBoosts[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             boostRankLabel = DirectLabel(parent = self, relief = None, text = '+%s' % str(skillBoosts[i][1]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             bHeight = boostNameLabel.getHeight()
             runningVertPosition -= bHeight + splitHeight
             runningSize += bHeight + splitHeight
             labels.append(boostNameLabel)
             labels.append(boostRankLabel)
         
         description = PLocalizer.getItemFlavorText(itemId)
         if description != '':
             descriptionLabel = DirectLabel(parent = self, relief = None, text = description, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.94999999999999996 / textScale), text_align = TextNode.ALeft, pos = (-halfWidth + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             dHeight = descriptionLabel.getHeight() + 0.02
             runningVertPosition -= dHeight
             runningSize += dHeight
             labels.append(descriptionLabel)
         
         inv = localAvatar.getInventory()
         weaponLevel = 0
         weaponRepId = WeaponGlobals.getRepId(itemId)
         weaponRep = inv.getReputation(weaponRepId)
         weaponReq = ItemGlobals.getWeaponRequirement(itemId)
         weaponText = None
         trainingToken = EconomyGlobals.getItemTrainingReq(itemId)
         trainingAmt = inv.getItemQuantity(trainingToken)
         if weaponReq:
             weaponLevel = ReputationGlobals.getLevelFromTotalReputation(weaponRepId, weaponRep)[0]
             if weaponLevel < weaponReq:
                 weaponColor = PiratesGuiGlobals.TextFG6
             else:
                 weaponColor = (0.40000000000000002, 0.40000000000000002, 0.40000000000000002, 1.0)
                 weaponText = PLocalizer.ItemLevelRequirement % (weaponReq, PLocalizer.getItemTypeName(itemType))
         elif trainingAmt == 0:
             weaponColor = PiratesGuiGlobals.TextFG6
             weaponText = PLocalizer.ItemTrainingRequirement % PLocalizer.getItemTypeName(itemType)
         
         if trainingAmt == 0:
             if itemType == ItemGlobals.GUN:
                 base.localAvatar.sendRequestContext(InventoryType.GunTrainingRequired)
             elif itemType == ItemGlobals.DOLL:
                 base.localAvatar.sendRequestContext(InventoryType.DollTrainingRequired)
             elif itemType == ItemGlobals.DAGGER:
                 base.localAvatar.sendRequestContext(InventoryType.DaggerTrainingRequired)
             elif itemType == ItemGlobals.STAFF:
                 base.localAvatar.sendRequestContext(InventoryType.StaffTrainingRequired)
             
         
         if weaponText:
             weaponReqLabel = DirectLabel(parent = self, relief = None, text = weaponText, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (1.5 / titleScale), text_fg = weaponColor, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
             wHeight = weaponReqLabel.getHeight()
             runningVertPosition -= wHeight
             runningSize += wHeight
             labels.append(weaponReqLabel)
         
         if not Freebooter.getPaidStatus(localAvatar.getDoId()):
             if rarity != ItemGlobals.CRUDE:
                 unlimitedLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.UnlimitedAccessRequirement, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (1.5 / titleScale), text_fg = PiratesGuiGlobals.TextFG6, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
                 uHeight = unlimitedLabel.getHeight()
                 runningVertPosition -= uHeight
                 runningSize += uHeight
                 labels.append(unlimitedLabel)
             
         
         runningVertPosition -= 0.02
         runningSize += 0.02
         panels = self.helpFrame.attachNewNode('panels')
         topPanel = panels.attachNewNode('middlePanel')
         detailGui.find('**/top_panel').copyTo(topPanel)
         topPanel.setScale(0.080000000000000002)
         topPanel.reparentTo(self.helpFrame)
         middlePanel = panels.attachNewNode('middlePanel')
         detailGui.find('**/middle_panel').copyTo(middlePanel)
         middlePanel.setScale(0.080000000000000002)
         middlePanel.reparentTo(self.helpFrame)
         placement = 0
         i = 0
         heightMax = -0.080000000000000002
         currentHeight = runningVertPosition
         while currentHeight < heightMax:
             middlePanel = panels.attachNewNode('middlePanel%s' % 1)
             detailGui.find('**/middle_panel').copyTo(middlePanel)
             middlePanel.setScale(0.080000000000000002)
             middlePanel.reparentTo(self.helpFrame)
             if currentHeight + 0.20000000000000001 >= heightMax:
                 difference = heightMax - currentHeight
                 placement += (0.16800000000000001 / 0.20000000000000001) * difference
                 currentHeight += difference
             else:
                 placement += 0.16800000000000001
                 currentHeight += 0.20000000000000001
             middlePanel.setZ(-placement)
             i += 1
         bottomPanel = panels.attachNewNode('bottomPanel')
         detailGui.find('**/bottom_panel').copyTo(bottomPanel)
         bottomPanel.setScale(0.080000000000000002)
         bottomPanel.setZ(-placement)
         bottomPanel.reparentTo(self.helpFrame)
         colorPanel = panels.attachNewNode('colorPanel')
         detailGui.find('**/color').copyTo(colorPanel)
         colorPanel.setScale(0.080000000000000002)
         colorPanel.setColor(titleColor)
         colorPanel.reparentTo(self.helpFrame)
         lineBreakTopPanel = panels.attachNewNode('lineBreakTopPanel')
         detailGui.find('**/line_break_top').copyTo(lineBreakTopPanel)
         lineBreakTopPanel.setScale(0.080000000000000002, 0.080000000000000002, 0.070000000000000007)
         lineBreakTopPanel.setZ(0.0080000000000000002)
         lineBreakTopPanel.reparentTo(self.helpFrame)
         if itemType != ItemGlobals.POTION:
             lineBreakBottomPanel = panels.attachNewNode('lineBreakBottomPanel')
             detailGui.find('**/line_break_bottom').copyTo(lineBreakBottomPanel)
             lineBreakBottomPanel.setScale(0.080000000000000002, 0.080000000000000002, 0.070000000000000007)
             lineBreakBottomPanel.setZ(-0.014999999999999999)
             lineBreakBottomPanel.reparentTo(self.helpFrame)
         
         panels.flattenStrong()
         self.helpFrame['frameSize'] = (-halfWidth, halfWidth, -(runningSize + vMargin), vMargin)
         totalHeight = self.helpFrame.getHeight() - 0.10000000000000001
         for label in labels:
             label.reparentTo(self.helpFrame)
         
         self.helpFrame.setBin('gui-popup', 0)
         self.helpFrame.setPos(self, 0.55000000000000004, 0, -0.29999999999999999)
         zOffset = -0.5 - self.helpFrame.getPos(aspect2d)[2]
         if zOffset >= 0.0:
             self.helpFrame.setPos(self, 0.55000000000000004, 0, zOffset - 0.29999999999999999)
         
     else:
         weaponInfo = PLocalizer.WeaponDescriptions.get(self.data[0])
         weaponDesc = weaponInfo
         self.helpText = DirectFrame(parent = self, relief = None, text = weaponDesc, state = DGG.DISABLED, text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleSmall, text_fg = PiratesGuiGlobals.TextFG2, text_wordwrap = 13, textMayChange = 0, sortOrder = 91)
         height = -self.helpText.getHeight()
         self.helpFrame = BorderFrame(parent = aspect2d, state = DGG.DISABLED, frameSize = (-0.029999999999999999, 0.42999999999999999, height, 0.050000000000000003), sortOrder = 90, borderScale = 0.20000000000000001)
         self.helpText.reparentTo(self.helpFrame)
         self.helpFrame.setBin('gui-popup', 0)
         self.helpFrame.setPos(self, 0.25, 0, -0.035000000000000003)
    def __init__(self, chatManager, whiteListEntry):
        optiondefs = (('relief', None, None), ('state', DGG.NORMAL, self.setState), ('frameSize', (0, 0.90000000000000002, 0, 0.59999999999999998), None), ('frameColor', (1, 0, 1, 0.20000000000000001), None))
        self.defineoptions({ }, optiondefs)
        DirectFrame.__init__(self, parent = NodePath())
        self.initialiseoptions(ChatPanel)
        FSM.__init__(self, 'ChatPanel')
        base.chatPanel = self
        self.chatManager = chatManager
        self.index = 0
        self.runningLineCount = 0
        self.runningLineCountLastId = -1
        self.lineCountList = [
            0]
        self.wrappedText = []
        self.chatFont = PiratesGlobals.getInterfaceFont()
        self.nameFont = PiratesGlobals.getInterfaceFont()
        self.shadowOffset = (0.089999999999999997, 0.089999999999999997)
        self.shadowColor = (0.0, 0.0, 0.0, 1.0)
        self.fontColorStyle = 1
        if base.config.GetBool('want-random-chatStyle', 0):
            self.chatFont = random.choice([
                PiratesGlobals.getInterfaceFont(),
                PiratesGlobals.getInterfaceOutlineFont()])
            self.nameFont = random.choice([
                PiratesGlobals.getInterfaceFont(),
                PiratesGlobals.getInterfaceOutlineFont()])
            self.shadowOffset = random.choice([
                (0.089999999999999997, 0.089999999999999997),
                (0.0, 0.0)])
            self.fontColorStyle = random.choice([
                0,
                1,
                2])

        self.lineDict = { }
        self.renderedLineDict = { }
        self.renderedLines = []
        self.wordWrapper = TextNode('wrapper')
        self.wordWrapper.setFont(self.chatFont)
        self.wordWrapper.setWordwrap(self.WrapWidth)
        self.wordWrapper.setTabWidth(1.0)
        self.fadeIval = None
        self.fadeTextIval = None
        self.preferredMode = 'Short'
        self.linesShown = True
        self.holdLinesShown = None
        self.wantSmallFont = 0
        self.currentFontSize = self.TextScale
        self.currentWordWrap = self.WrapWidth
        self.resizeDelayTaskName = 'ChatPanel_Resize'
        self.sCloseButton = None
        self.tCloseButton = None
        self.minButton = None
        self.maxButton = None
        self.setupGui()
        self.chatBar = ChatBar(parent = self, chatMgr = chatManager, whiteListEntry = whiteListEntry)
        self.setBoxWidth(base.options.chatbox_scale)
        self.checkEmotes()
        self.needSlider = 0
        self.reparentTo(base.a2dBottomLeft)
        self.accept('NewOpenMessage', self._ChatPanel__handleOpenMessage)
        self.accept('SetChatBoxWidth', self.setBoxWidth)
        self.accept('SetChatBoxStyle', self.setChatStyle)
        self.accept('GUIHidden', self._ChatPanel__handleGlobalGuiHide)
        self.accept('GUIShown', self._ChatPanel__handleGlobalGuiShow)
 def _createIface(self):
     self.descText = DirectLabel(parent = self, relief = None, text = self.item.get('Text'), text_align = TextNode.ALeft, text_scale = 0.050000000000000003, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.02, 0, self.height / 2), text_font = PiratesGlobals.getInterfaceOutlineFont())
     self.valueText = DirectLabel(parent = self, relief = None, text = str(self.item.get('Value1')), text_align = TextNode.ALeft, text_scale = 0.050000000000000003, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (self.width * 0.65000000000000002, 0, self.height / 2), text_font = PiratesGlobals.getInterfaceOutlineFont())
     if self.item.get('Type') == 'Title':
         self.descText['text_scale'] = 0.055
         self.descText['text_fg'] = PiratesGuiGlobals.TextFG1
         self.descText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         self.valueText['text_scale'] = 0.044999999999999998
         self.valueText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         if self.item.has_key('Value2'):
             self.valueText2 = DirectLabel(parent = self, relief = None, text = str(self.item.get('Value2')), text_align = TextNode.ALeft, text_scale = 0.050000000000000003, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (self.width * 0.80000000000000004, 0, self.height / 2), text_font = PiratesGlobals.getInterfaceOutlineFont())
         
         if self.valueText2:
             self.valueText2['text_scale'] = 0.044999999999999998
             self.valueText2['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         
     elif self.item.get('Type') == 'Entry':
         self.descText['text_pos'] = (self.width * 0.059999999999999998, 0, 0)
         if self.item.has_key('Value2'):
             self.valueText2 = DirectLabel(parent = self, relief = None, text = str(self.item.get('Value2')), text_align = TextNode.ALeft, text_scale = 0.050000000000000003, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (self.width * 0.80000000000000004, 0, self.height / 2), text_font = PiratesGlobals.getInterfaceOutlineFont())
         
     elif self.item.get('Type') == 'Space':
         self.descText['text_scale'] = 0.02
         self.descText['text'] = ' '
         self.valueText['text_scale'] = 0.02
         self.valueText['text'] = ' '
     elif self.item.get('Type') == 'Button':
         self.descText['text_pos'] = (self.width * 0.059999999999999998, 0, 0)
         self.valueText['text'] = ' '
         self.button = DirectButton(parent = self, relief = DGG.RIDGE, text = self.item.get('Text'), text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, frameColor = PiratesGuiGlobals.ButtonColor1, command = self.item.get('Value2'), pos = (self.width * 0.65000000000000002, 0, self.height / 2), borderWidth = (0.01, 0.01), pad = (0.0050000000000000001, 0.0050000000000000001), textMayChange = 1)
         if self.item.get('State') == 'off':
             self.button['state'] = DGG.DISABLED
             self.button['text_fg'] = PiratesGuiGlobals.TextFG3
         elif self.item.get('State') == 'oneShot':
             self.button.bind(DGG.B1RELEASE, self.disableButton)
         
     elif self.item.get('Type') == 'Cargo':
         itemId = self.item.get('Value1')
         iconId = EconomyGlobals.getCargoCategory(itemId)
         if not iconId:
             self.notify.error('Invalid Item in Cargo! item: %s' % (self.item,))
         
         icon = self.icons.get(iconId)
         self.descText['geom'] = self.getCargoIcon(icon[0])
         self.descText['geom_scale'] = 0.089999999999999997 * self.height * 10
         self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
         self.descText['text_pos'] = (0.23999999999999999, 0, 0)
         self.descText['text'] = icon[1]
         self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
         self.descText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         self.descText['text_scale'] = 0.050000000000000003 * self.height * 10
         self.descText.setTransparency(1)
         self.valueText['text'] = PLocalizer.UnknownGoldValue
         self.valueText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         self.valueText['text_scale'] = 0.050000000000000003 * self.height * 10
         icon = self.icons.get(ItemId.CARGO_CRATE)
         self.descText2 = DirectLabel(parent = self, relief = None, text = '?', text_align = TextNode.ACenter, text_scale = 0.050000000000000003 * self.height * 10, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.080000000000000002, 0, self.height / 2), geom = self.getCargoIcon(icon[0]), geom_scale = 0.089999999999999997 * self.height * 10, geom_pos = (0.10000000000000001, 0, 0.01), text_pos = (0.10000000000000001, 0, 0), geom_color = Vec4(0, 0, 0, 1), text_font = PiratesGlobals.getInterfaceOutlineFont())
     elif self.item.get('Type') == 'Gold':
         amount = self.item.get('Value2')
         itemName = PLocalizer.LootGold % amount
         self.descText['geom'] = self.getGoldIcon()
         self.descText['geom_scale'] = 0.14999999999999999 * self.height * 10
         self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
         self.descText['text_pos'] = (0.23999999999999999, 0, 0)
         self.descText['text'] = itemName
         self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
         self.descText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         self.descText['text_scale'] = 0.050000000000000003 * self.height * 10
         self.descText.setTransparency(1)
         self.valueText['text'] = ' '
     elif self.item.get('Type') == 'Weapon':
         itemId = self.item.get('Value1')
         itemName = PLocalizer.InventoryTypeNames.get(itemId)
         iconName = EconomyGlobals.getItemIcons(itemId)
         self.descText['geom'] = self.getWeaponIcon(iconName)
         self.descText['geom_scale'] = 0.089999999999999997 * self.height * 10
         self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
         self.descText['text_pos'] = (0.23999999999999999, 0, 0)
         self.descText['text'] = itemName
         self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
         self.descText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         self.descText['text_scale'] = 0.050000000000000003 * self.height * 10
         self.descText.setTransparency(1)
         self.valueText['text'] = ' '
     elif self.item.get('Type') == 'Ammo':
         itemId = self.item.get('Value1')
         amount = self.item.get('Value2')
         itemName = '%s %s' % (amount, PLocalizer.InventoryTypeNames.get(itemId))
         iconName = WeaponGlobals.getSkillIcon(itemId)
         self.descText['geom'] = self.getAmmoIcon(iconName)
         self.descText['geom_scale'] = 0.089999999999999997 * self.height * 10
         self.descText['geom_pos'] = (0.050000000000000003, 0, 0.01)
         self.descText['text_pos'] = (0.23999999999999999, 0, 0)
         self.descText['text'] = itemName
         self.descText['text_fg'] = PiratesGuiGlobals.TextFG2
         self.descText['text_font'] = PiratesGlobals.getInterfaceOutlineFont()
         self.descText['text_scale'] = 0.050000000000000003 * self.height * 10
         self.descText.setTransparency(1)
         self.valueText['text'] = ' '
示例#23
0
    def __init__(self, background=1, extraArgs=[]):
        panelName = PLocalizer.LootPlundered
        StackMessage.__init__(self,
                              text='',
                              text_wordwrap=14,
                              time=PiratesGuiGlobals.LootPopupTime,
                              frameSize=(0, self.width, 0, -(self.height), 0))
        self.initialiseoptions(LootPopupPanel)
        self.loot = []
        self.titleLabel = DirectLabel(
            parent=self,
            relief=None,
            text=panelName,
            text_align=TextNode.ALeft,
            text_scale=PiratesGuiGlobals.TextScaleMed,
            text_fg=PiratesGuiGlobals.TextFG1,
            text_shadow=PiratesGuiGlobals.TextShadow,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            textMayChange=1,
            text_wordwrap=14,
            sortOrder=21)
        if not LootPopupPanel.lootSfx:
            LootPopupPanel.lootSfx = loadSfx(SoundGlobals.SFX_GUI_LOOT)
            LootPopupPanel.lootSfx.setVolume(0.75)
            card = loader.loadModel('models/textureCards/icons')
            topgui = loader.loadModel('models/gui/toplevel_gui')
            inventoryGui = loader.loadModel('models/gui/gui_icons_inventory')
            LootPopupPanel.BountyTex = loader.loadModel(
                'models/gui/avatar_chooser_rope').find('**/avatar_c_B_delete')
            LootPopupPanel.CoinTex = topgui.find('**/treasure_w_coin*')
            LootPopupPanel.CrateTex = topgui.find('**/icon_crate*')
            LootPopupPanel.ChestTex = card.find('**/icon_chest')
            LootPopupPanel.RoyalChestTex = card.find(
                '**/topgui_icon_ship_chest03*')
            LootPopupPanel.LootSacTex = inventoryGui.find(
                '**/pir_t_ico_trs_sack*')
            LootPopupPanel.LootChestTex = inventoryGui.find(
                '**/pir_t_ico_trs_chest_01*')
            LootPopupPanel.LootSkullChestTex = inventoryGui.find(
                '**/pir_t_ico_trs_chest_02*')
            LootPopupPanel.TreasureGui = loader.loadModel(
                'models/gui/treasure_gui')
            LootPopupPanel.TailorGui = loader.loadModel(
                'models/textureCards/tailorIcons')
            LootPopupPanel.JewelerIconsA = loader.loadModel(
                'models/gui/char_gui')
            LootPopupPanel.JewelerIconsB = loader.loadModel(
                'models/textureCards/shopIcons')
            LootPopupPanel.TattooIcons = loader.loadModel(
                'models/textureCards/tattooIcons')
            LootPopupPanel.WeaponIcons = loader.loadModel(
                'models/gui/gui_icons_weapon')

        if not background:
            self.frameParent.hide()
            self['relief'] = None
            self.titleLabel['relief'] = None

        self.icons = {
            ItemId.CARGO_CRATE: (LootPopupPanel.CrateTex, PLocalizer.Crate),
            ItemId.CARGO_CHEST: (LootPopupPanel.ChestTex, PLocalizer.Chest),
            ItemId.CARGO_SKCHEST:
            (LootPopupPanel.RoyalChestTex, PLocalizer.SkChest),
            ItemId.CARGO_LOOTSAC:
            (LootPopupPanel.LootSacTex, PLocalizer.Crate),
            ItemId.CARGO_LOOTCHEST:
            (LootPopupPanel.LootChestTex, PLocalizer.Chest),
            ItemId.CARGO_LOOTSKCHEST:
            (LootPopupPanel.LootSkullChestTex, PLocalizer.SkChest),
            ItemId.CARGO_SHIPUPGRADECHEST: (LootPopupPanel.LootChestTex,
                                            PLocalizer.Chest),
            ItemId.CARGO_SHIPUPGRADESKCHEST: (LootPopupPanel.LootSkullChestTex,
                                              PLocalizer.SkChest),
            ItemId.GOLD: (LootPopupPanel.CoinTex, PLocalizer.MoneyName),
            ItemId.BOUNTY: (LootPopupPanel.BountyTex,
                            PLocalizer.PVPInfamySpendable)
        }
        self.titleLabel['text_scale'] = PiratesGuiGlobals.TextScaleLarge
        self.repackPanels()
 def setup(self):
     self.buttonSize = self.manager.standardButtonSize
     self.grid = InventoryUIPlunderGridContainer.InventoryUIPlunderGridContainer(self.manager, self.buttonSize * 7, self.buttonSize * 3.0, 2, 3)
     self.grid.reparentTo(self)
     self.grid.setPos(self.sizeX * 0.5 - self.grid.sizeX * 0.40000000000000002, 0.0, 0.25)
     self.grid.setScale(0.80000000000000004)
     Gui = loader.loadModel('models/gui/char_gui')
     buttonImage = (Gui.find('**/chargui_text_block_large'), Gui.find('**/chargui_text_block_large_down'), Gui.find('**/chargui_text_block_large_over'), Gui.find('**/chargui_text_block_large'))
     self.takeAllButton = GuiButton.GuiButton(parent = self, relief = None, image = buttonImage, image_scale = 0.40000000000000002, text = PLocalizer.InventoryPlunderTakeAll, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_align = TextNode.ACenter, text_pos = (0, -0.01), text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, pos = (self.sizeX * 0.80000000000000004, 0, 0.20000000000000001), helpText = PLocalizer.InventoryPlunderGiveNothingBack, helpPos = (0.10000000000000001, 0, -0.070000000000000007), helpOpaque = 1, helpDelay = 1.0, command = self.takeAllLoot)
     if self.takeAllButton.helpBox:
         self.takeAllButton.helpBox.setPos(0.29999999999999999, 0, -0.01)
     
     if self.itemsToTake:
         self.takeAllButton.hide()
     
     if self.timer:
         self.timerUI = DirectLabel(parent = self, relief = None, pos = (0.64000000000000001, 0, 0.20999999999999999), text = str(self.timer), text_align = TextNode.ACenter, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_scale = PiratesGuiGlobals.TextScaleTitleSmall, text_pos = (0.0, -0.02))
         self.takeAllButton.setPos(Point3(0.82499999999999996, 0, 0.20000000000000001))
         self.timerStart = globalClock.getRealTime()
         taskMgr.add(self._InventoryPlunderPanel__updateTimer, self.taskName('plunderPanelTimeUpdate'))
     
     maingui = loader.loadModel('models/gui/gui_main')
     box = (maingui.find('**/exit_button'), maingui.find('**/exit_button'), maingui.find('**/exit_button_over'), maingui.find('**/exit_button'))
     x = maingui.find('**/x2')
     titleText = PLocalizer.InventoryPlunderTitle % self.typeName
     text = PLocalizer.InventoryPlunderTitle % self.typeName
     if self.customName:
         titleText = self.customName
     
     self.titleLabel = DirectLabel(parent = self, relief = None, pos = (0.5, 0, 0.68000000000000005), text = titleText, text_align = TextNode.ACenter, text_font = PiratesGlobals.getInterfaceOutlineFont(), text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_scale = PiratesGuiGlobals.TextScaleTitleSmall, text_pos = (0.0, -0.02), image = maingui.find('**/gui_inv_treasure_loot_bg'), image_scale = (0.29999999999999999, 0.34999999999999998, 0.34999999999999998), image_pos = (0.040000000000000001, 0, 0))
     self.closeButton = DirectButton(parent = self, relief = None, pos = (self.sizeX + 0.25, 0, self.sizeZ - 1.0800000000000001), image = box, image_scale = 0.5, geom = x, geom_scale = 0.25, geom_pos = (-0.32000000000000001, 0, 0.95799999999999996), command = self.manager.closePlunder)
     if self.autoShow:
         self.closeButton.hide()
     
     self.ratingLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.InventoryPlunderRating, text_align = TextNode.ALeft, text_font = PiratesGlobals.getInterfaceFont(), text_fg = PiratesGuiGlobals.TextFG16, text_scale = PiratesGuiGlobals.TextScaleLarge, pos = (self.sizeX * 0.10000000000000001, 0, 0.20000000000000001))
     if self.rating < 0:
         self.ratingLabel.hide()
     elif self.itemsToTake:
         if self.itemsToTake == 1:
             self.ratingLabel['text'] = PLocalizer.InventoryPlunderPickSingular
         else:
             self.ratingLabel['text'] = PLocalizer.InventoryPlunderPickPlural % self.itemsToTake
     else:
         toplevelgui = loader.loadModel('models/gui/toplevel_gui')
         rating = self.attachNewNode('rating')
         rating.setPos(self.sizeX * 0.34999999999999998, 0, 0.20999999999999999)
         for i in range(0, 5):
             skull = rating.attachNewNode('skull%s' % i)
             toplevelgui.find('**/pir_t_gui_gen_goldSkull').copyTo(skull)
             skull.setScale(0.20000000000000001)
             skull.setX(i * 0.050000000000000003)
             if i >= self.rating:
                 skull.setColor(0, 0, 0, 0.25)
                 continue
         
         rating.flattenStrong()
     self.setupPlunder(self.plunderList)
     self.accept('lootsystem-plunderContainer-Empty', self.checkAllContainers)
示例#25
0
    def showWeaponNotoriety(self):
        totalReputation = 0
        inv = localAvatar.getInventory()
        level = localAvatar.getLevel()
        maxLevel = ReputationGlobals.GlobalLevelCap
        if level < maxLevel:
            textStr = PLocalizer.RewardNotorietyLessThanMax % (level, maxLevel)
            textScale = 0.05
            labelY = 0.37
            buttonY = 0.1
        else:
            textStr = PLocalizer.RewardNotorietyAtMax % maxLevel
            textScale = 0.04
            self.congratsText.show()
            labelY = 0.25
            buttonY = 0.13
        self.notorietyText = DirectLabel(
            parent=self,
            relief=None,
            state=DGG.DISABLED,
            textMayChange=1,
            text=textStr,
            text_font=PiratesGlobals.getInterfaceOutlineFont(),
            text_align=TextNode.ACenter,
            text_scale=textScale,
            text_fg=PiratesGuiGlobals.TextFG1,
            pos=(0, 0, labelY))
        self.notorietyText.hide()
        if level < maxLevel:
            self.todoText = DirectLabel(
                parent=self,
                relief=None,
                state=DGG.DISABLED,
                textMayChange=1,
                text=PLocalizer.RewardTodo,
                text_font=PiratesGlobals.getInterfaceOutlineFont(),
                text_align=TextNode.ACenter,
                text_scale=0.035,
                text_fg=PiratesGuiGlobals.TextFG1,
                pos=(0, 0, 0.19))
            self.todoText.hide()
        else:
            self.stayTunedText = DirectLabel(
                parent=self,
                relief=None,
                state=DGG.DISABLED,
                textMayChange=1,
                text=PLocalizer.RewardStayTuned,
                text_font=PiratesGlobals.getInterfaceOutlineFont(),
                text_align=TextNode.ACenter,
                text_scale=0.035,
                text_fg=PiratesGuiGlobals.TextFG1,
                pos=(0, 0, -0.41))
            self.stayTunedText.hide()
        weapons = [[InventoryType.CutlassToken, InventoryType.CutlassRep],
                   [InventoryType.PistolToken, InventoryType.PistolRep],
                   [InventoryType.DaggerToken, InventoryType.DaggerRep],
                   [InventoryType.GrenadeToken, InventoryType.GrenadeRep],
                   [InventoryType.WandToken, InventoryType.WandRep],
                   [InventoryType.DollToken, InventoryType.DollRep],
                   [InventoryType.NewPlayerToken, InventoryType.CannonRep],
                   [InventoryType.NewPlayerToken, InventoryType.SailingRep]]
        maxRep = ReputationGlobals.getTotalReputation(
            InventoryType.GeneralRep, ReputationGlobals.LevelCap)
        self.guiElements = []
        i = 0
        for weaponToken, weaponId in weapons:
            weaponUnlocked = False
            levelText = PLocalizer.RewardLevelLocked
            state = 0
            if inv.getStackQuantity(weaponToken):
                weaponUnlocked = True
            if weaponUnlocked:
                rep = inv.getReputation(weaponId)
                wlevel, value = ReputationGlobals.getLevelFromTotalReputation(
                    weaponId, rep)
                levelText = PLocalizer.RewardLevelOfMax % (
                    wlevel, ReputationGlobals.LevelCap)
                if rep >= maxRep:
                    levelText = PLocalizer.RepCapText_Skill
                    state = 1
            cb = self.makeCheckbox((0, 0, buttonY - 0.065 * i),
                                   PLocalizer.InventoryTypeNames[weaponId],
                                   None, state, [3], levelText)
            cb['indicatorValue'] = state
            cb.hide()
            self.guiElements.append(cb)
            i += 1

        self.showWeaponsTrack = Sequence()
        self.showWeaponsTrack.append(
            Sequence(Func(self.notorietyText.show), Wait(1)))
        if level < maxLevel:
            self.showWeaponsTrack.append(
                Sequence(Func(self.todoText.show), Wait(1)))
        for b in self.guiElements:
            self.showWeaponsTrack.append(Sequence(Func(b.show), Wait(0.5)))

        if level >= maxLevel:
            self.showWeaponsTrack.append(
                Sequence(Func(self.stayTunedText.show), Wait(1)))
        self.showWeaponsTrack.append(Func(self.nextButton.show))
        self.showWeaponsTrack.start()
        return
 def __init__(self, parent, **kw):
     optiondefs = (('relief', None, None),)
     self.defineoptions(kw, optiondefs)
     DirectFrame.__init__(self, parent)
     self.initialiseoptions(RedeemCodeGUI)
     gui_main = loader.loadModel('models/gui/gui_main')
     topImage = gui_main.find('**/game_options_panel/top')
     topImage.setPos(0.52000000000000002, 0, -0.14999999999999999)
     gui_main.removeNode()
     self.artFrame = DirectFrame(parent = aspect2dp, relief = None, image = topImage, image_scale = (0.23999999999999999, 0.23999999999999999, 0.23999999999999999), pos = (0.10000000000000001, 0.0, -0.20000000000000001))
     self.artFrame.setBin('gui-fixed', 2)
     self.blackout = DirectFrame(parent = aspect2dp, state = DGG.NORMAL, frameSize = (-5, 5, -5, 5), frameColor = (0.0, 0.0, 0.0, 0.40000000000000002), pos = (0.0, 0.0, 0.0))
     self.enterCode = GuiButton.GuiButton(parent = self.artFrame, text = PLocalizer.lConfirm, pos = (0.38500000000000001, 0.0, -0.025000000000000001), command = self.confirmCode)
     self.cancelCode = GuiButton.GuiButton(parent = self.artFrame, text = PLocalizer.lCancel, pos = (0.65000000000000002, 0.0, -0.025000000000000001), command = self.hideCode)
     DirectLabel(parent = self.artFrame, relief = None, text = PLocalizer.ShopEnterCode, text_align = TextNode.ACenter, text_scale = PiratesGuiGlobals.TextScaleTitleSmall * 0.90000000000000002, text_pos = (0.51000000000000001, 0.33500000000000002), text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceOutlineFont(), textMayChange = 0)
     DirectLabel(parent = self.artFrame, relief = None, text = PLocalizer.ShopCodeInst, text_align = TextNode.ACenter, text_scale = PiratesGuiGlobals.TextScaleLarge * 1.1000000000000001, text_pos = (0.51000000000000001, 0.25), text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceOutlineFont(), textMayChange = 0, text_wordwrap = 12)
     self.codeInput = DirectEntry(parent = self.artFrame, relief = DGG.GROOVE, scale = PiratesGuiGlobals.TextScaleExtraLarge, pos = (0.52000000000000002, 0, 0.059999999999999998), borderWidth = PiratesGuiGlobals.BorderWidth, frameColor = (0.0, 0.0, 0.0, 1.0), text_align = TextNode.ACenter, width = 15, numLines = 1, focus = 1, cursorKeys = 1, text_fg = (1, 1, 1, 1), suppressKeys = 1, suppressMouse = 1, autoCapitalize = 0, command = self.confirmCode)
     self.alertDialog = None
     self.accept('codeRedeemed', self._RedeemCodeGUI__handleCodeRedeem)
示例#27
0
 def __init__(self, parent, showSkills = 0, **kw):
     GuiTray.GuiTray.__init__(self, parent, 0.75, 0.14999999999999999, **kw)
     self.initialiseoptions(StatusTray)
     self.name = None
     self.sticky = False
     self.level = 0
     self.doId = 0
     self.prevDoId = 0
     self.hideValues = 0
     self.card = None
     self.prevChange = 0
     self.prevRange = 0
     self.prevValue = 0
     self.fader = None
     self.skillEffects = { }
     self.durationTask = None
     self.nameLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, text = '', text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = Vec4(0.80000000000000004, 0.69999999999999996, 0.59999999999999998, 1), text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.040000000000000001, 0, 0.11), text_font = PiratesGlobals.getPirateBoldOutlineFont())
     self.stickyLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, text = '', text_align = TextNode.ARight, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.56999999999999995, 0, 0.025000000000000001), text_font = PiratesGlobals.getInterfaceOutlineFont())
     self.hpLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, frameColor = (0, 0, 0, 0.20000000000000001), frameSize = (-0.01, 0.40000000000000002, -0.014999999999999999, 0.040000000000000001), pos = (0.32000000000000001, 0, 0.0060000000000000001), text = PLocalizer.StatusTrayHp, text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 0)
     self.hpLabel.hide()
     self.voodooMeter = DirectWaitBar(parent = self, state = DGG.DISABLED, relief = DGG.RAISED, borderWidth = (0.0050000000000000001, 0.0050000000000000001), frameSize = (0.0, 0.53000000000000003, 0.0070000000000000001, 0.035000000000000003), frameColor = (0, 0, 0, 1), pos = (0.20000000000000001, 0, -0.055), range = 100, value = 100, barColor = (0.59999999999999998, 0.59999999999999998, 0.94999999999999996, 1), text = '', text_align = TextNode.ARight, text_scale = PiratesGuiGlobals.TextScaleMed, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_pos = (0.5, -0.035000000000000003, 0), text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 1, sortOrder = 0)
     self.voodooMeter.setTransparency(1)
     self.voodooMeter.component('text0').hide()
     self.hpMeter = DirectWaitBar(parent = self, state = DGG.DISABLED, relief = DGG.RAISED, borderWidth = (0.0050000000000000001, 0.0050000000000000001), frameSize = (0.0, 0.53000000000000003, 0.002, 0.029999999999999999), frameColor = (0, 0, 0, 1), pos = (0.20000000000000001, 0, 0.050000000000000003), range = 100, value = 100, barColor = (0.10000000000000001, 0.69999999999999996, 0.10000000000000001, 1), text = '', text_align = TextNode.ARight, text_scale = PiratesGuiGlobals.TextScaleMed, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_pos = (0.5, -0.044999999999999998, 0), text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 1, sortOrder = 0)
     self.hpMeter.setTransparency(1)
     self.hpMeter.component('text0').hide()
     self.hpMeterChange = DirectFrame(parent = self, state = DGG.DISABLED, frameSize = (0.0, 0.53000000000000003, 0.0, 0.025999999999999999), frameColor = (1.0, 0.0, 0.0, 1.0), pos = (0, 0, 0))
     self.hpMeterChange.setBin('gui-fixed', 0)
     self.hpMeterChange.hide()
     self.hpMeterDownIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.5, color = VBase4(0.69999999999999996, 0.10000000000000001, 0.10000000000000001, 1.0), blendType = 'easeOut'), LerpColorInterval(self.hpMeterChange, 0.25, color = VBase4(0.0, 0.0, 0.0, 1.0), blendType = 'easeOut'), Func(self.hpMeterChange.hide))
     self.hpMeterUpGreenIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.75, color = VBase4(0.10000000000000001, 0.69999999999999996, 0.10000000000000001, 1.0)), Func(self.hpMeterChange.hide))
     self.hpMeterUpRedIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.75, color = VBase4(1.0, 0.0, 0.0, 1.0)), Func(self.hpMeterChange.hide))
     self.hpMeterUpYellowIval = Sequence(Func(self.hpMeterChange.show), Wait(0.10000000000000001), LerpColorInterval(self.hpMeterChange, 0.75, color = VBase4(1.0, 1.0, 0.10000000000000001, 1.0)), Func(self.hpMeterChange.hide))
     self.meterChangeOffset = (0.0, 0.0, 0.050000000000000003)
     self.prevTargetName = ''
     self.voodooLabel = DirectLabel(parent = self, state = DGG.DISABLED, relief = None, frameColor = (0, 0, 0, 0.20000000000000001), frameSize = (-0.01, 0.40000000000000002, -0.014999999999999999, 0.040000000000000001), pos = (0.32000000000000001, 0, -0.091999999999999998), text = PLocalizer.StatusTrayVoodoo, text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleLarge, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceFont(), textMayChange = 0)
     self.voodooLabel.hide()
     self.statusEffectsPanel = StatusEffectsPanel.StatusEffectsPanel(parent = self)
     flagModel = loader.loadModel('models/gui/flag_icons')
     flagModel2 = loader.loadModel('models/gui/gui_icons_weapon')
     flagModels = [
         flagModel.find('**/flag_undead'),
         flagModel.find('**/flag_navy'),
         flagModel.find('**/flag_eitc'),
         flagModel2.find('**/pir_t_ico_dol_straw')]
     for icon in flagModels:
         if icon == flagModel2.find('**/pir_t_ico_dol_straw'):
             icon.setScale(0.10000000000000001)
         else:
             icon.setScale(0.44)
         icon.flattenStrong()
     
     self.icons = {
         PiratesGlobals.UNDEAD_TEAM: flagModels[0],
         PiratesGlobals.NAVY_TEAM: flagModels[1],
         PiratesGlobals.TRADING_CO_TEAM: flagModels[2],
         PiratesGlobals.FRENCH_UNDEAD_TEAM: flagModels[0],
         PiratesGlobals.SPANISH_UNDEAD_TEAM: flagModels[0],
         PiratesGlobals.PLAYER_TEAM: flagModels[3],
         PiratesGlobals.VOODOO_ZOMBIE_TEAM: flagModels[0],
         PiratesGlobals.BOUNTY_HUNTER_TEAM: flagModels[0] }
     self.pvpIcon = Beacon.getBeaconModel()
     self.pvpIcon.setScale(0.12)
     self.pvpIcon.flattenStrong()
     privateerLogos = loader.loadModel('models/textureCards/sailLogo')
     self.privateerLogos = {
         PVPGlobals.FrenchTeam: privateerLogos.find('**/logo_french_flag'),
         PVPGlobals.SpanishTeam: privateerLogos.find('**/logo_spanish_flag') }
     for logo in self.privateerLogos.itervalues():
         logo.setScale(0.073999999999999996)
         logo.flattenStrong()
     
     self.currentIcon = None
     if showSkills:
         self.card = loader.loadModel('models/textureCards/skillIcons')
         icons = loader.loadModel('models/gui/gui_icons_weapon')
         icons.reparentTo(self.card)
         self.reloadFrame = DirectFrame(parent = self, state = DGG.DISABLED, relief = None)
         self.reloadFrame.hide()
         self.activeName = DirectLabel(parent = self.reloadFrame, state = DGG.DISABLED, relief = None, text = 'Using Skill', text_align = TextNode.ARight, text_scale = 0.059999999999999998, pos = (-0.050000000000000003, 0, 0.01), text_fg = PiratesGuiGlobals.TextFG11, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getPirateOutlineFont())
         tex = self.card.find('**/base')
         self.reloadFrame['scale'] = 0.5
         self.reloadFrame['image'] = tex
         self.reloadFrame['image_scale'] = 0.085000000000000006
         self.reloadFrame['image_pos'] = (0, 0, 0.02)
         self.reloadFrame.setPos(0.12, 0, -0.019)
         self.reloadFrame.setScale(0.69999999999999996)
         tex = self.card.find('**/cutlass_sweep')
         self.skillFrame = DirectFrame(parent = self.reloadFrame, state = DGG.DISABLED, relief = None, sortOrder = 20, image_pos = (0, 0, 0))
         self.skillFrame.setTransparency(1)
         self.skillFrame['image'] = tex
         self.skillFrame['image_scale'] = 0.10000000000000001
         self.skillFrame['image_pos'] = (0, 0, 0.02)
         self.activeName['text_align'] = TextNode.ALeft
         self.activeName.setPos(0.089999999999999997, 0, 0.01)
 def refreshList(self, setKey = 0):
     if setKey == 0 or setKey == None:
         return None
     
     if self.currentDisplay != 0:
         oldSize = CollectionMap.Collection_Set_Sizes.get(self.currentDisplay)
         for loopItr in range(oldSize):
             curNum = self.currentDisplay + loopItr + 1
             if curNum in self.setPics:
                 self.setPics[curNum].hide()
             
             self.setFrames[curNum].hide()
         
     
     self.currentDisplay = setKey
     self.setLabel['text'] = PLocalizer.Collections[setKey]
     inv = localAvatar.getInventory()
     if not inv:
         return None
     
     setCount = 0
     heightOffset = 0
     setSize = CollectionMap.Collection_Set_Sizes.get(setKey)
     gui = loader.loadModel('models/gui/toplevel_gui')
     for loopItr in range(setSize):
         setItem = setKey + 1 + loopItr
         rowSpot = loopItr % 4
         colSpot = loopItr / 4
         localHeight = PiratesGuiGlobals.InventoryPanelHeight - 0.20000000000000001
         howMany = inv.getStackQuantity(setItem)
         if setItem in CollectionMap.Collection_Set_Locked:
             if not Freebooter.getPaidStatus(base.localAvatar.getDoId()):
                 isLocked = True
             else:
                 isLocked = False
         else:
             isLocked = False
         if isLocked or howMany > 0:
             if setItem in self.setPics:
                 self.setPics[setItem].show()
                 self.setFrames[setItem].show()
             else:
                 frameImg = gui.find('**/treasure_w_b_slot_full')
                 self.setFrames[setItem] = DirectFrame(parent = self, relief = None, image = frameImg, image_scale = 0.40000000000000002, image_pos = (0, 0, 0), pos = (0.28000000000000003 + 0.17999999999999999 * rowSpot, 0, localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot))
                 pic_name = CollectionMap.Assets[setItem]
                 if isLocked:
                     tex = gui.find('**/pir_t_gui_gen_key_subscriber')
                     use_scale = 0.25
                     self.setPics[setItem] = DirectButton(parent = self, relief = None, image = tex, image_scale = use_scale, image_pos = (0, 0, 0), pos = (0.28000000000000003 + 0.17999999999999999 * rowSpot, 0, localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot), text = PLocalizer.Collections[setItem], text_fg = PiratesGuiGlobals.TextFG2, text_align = TextNode.ACenter, text_wordwrap = 6, text_scale = 0.025000000000000001, text_pos = (0, -0.085000000000000006, 0), command = base.localAvatar.guiMgr.showNonPayer, extraArgs = [
                         'Restricted_Treasure_Selection',
                         7])
                 else:
                     tex = self.card.find('**/%s*' % pic_name)
                     use_scale = 0.39000000000000001
                     self.setPics[setItem] = DirectButton(parent = self, relief = None, image = tex, image_scale = use_scale, image_pos = (0, 0, 0), pos = (0.28000000000000003 + 0.17999999999999999 * rowSpot, 0, localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot), command = self.clickedTreasure, extraArgs = [
                         setItem], text = PLocalizer.Collections[setItem], text_fg = PiratesGuiGlobals.TextFG2, text_align = TextNode.ACenter, text_wordwrap = 6, text_scale = 0.025000000000000001, text_pos = (0, -0.085000000000000006, 0))
                 self.setPics[setItem].setTransparency(1)
             if setItem in CollectionMap.Collection_Needed:
                 howManyINeed = CollectionMap.Collection_Needed[setItem]
             else:
                 howManyINeed = 1
             if setItem in CollectionMap.Collection_SingleNumeric:
                 if howMany > 0:
                     if howMany == 1:
                         weightTxt = 'Lb'
                     else:
                         weightTxt = 'Lbs'
                     if setItem in self.setHowMany:
                         self.setHowMany[setItem]['text'] = '%d %s' % (howMany, weightTxt)
                     else:
                         self.setHowMany[setItem] = DirectLabel(parent = self.setPics[setItem], relief = None, text = '%d %s' % (howMany, weightTxt), text_align = TextNode.ARight, text_scale = 0.040000000000000001, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.080000000000000002, 0, -0.050000000000000003), text_font = PiratesGlobals.getInterfaceOutlineFont())
                 
             elif setItem in self.setHowMany:
                 if howManyINeed < 2:
                     self.setHowMany[setItem].hide()
                 else:
                     self.setHowMany[setItem]['text'] = '%d/%d' % (howMany, howManyINeed)
                     self.setHowMany[setItem].show()
             elif howMany > 1:
                 self.setHowMany[setItem] = DirectLabel(parent = self.setPics[setItem], relief = None, text = '%d/%d' % (howMany, howManyINeed), text_align = TextNode.ARight, text_scale = 0.040000000000000001, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, textMayChange = 1, pos = (0.080000000000000002, 0, -0.050000000000000003), text_font = PiratesGlobals.getInterfaceOutlineFont())
             
             if isLocked:
                 if setItem in self.setHowMany:
                     self.setHowMany[setItem].hide()
                 
             
         if setItem in self.setFrames:
             self.setFrames[setItem].show()
             continue
         frameImg = gui.find('**/treasure_w_b_slot_empty')
         self.setFrames[setItem] = DirectFrame(parent = self, relief = None, image = frameImg, image_scale = 0.40000000000000002, image_pos = (0, 0, 0), pos = (0.28000000000000003 + 0.17999999999999999 * rowSpot, 0, localHeight - 0.35999999999999999 - 0.17999999999999999 * colSpot))
     
     gui.removeNode()
    def __init__(self, inventoryUIManager):
        self.inventoryUIManager = inventoryUIManager
        InventoryPage.InventoryPage.__init__(self)
        self.initialiseoptions(InventoryBagPage)
        self.containerList = []
        self.containersToShowTrash = []
        self.treasureTab = None
        self.isReady = 0
        self.treasurePageReopen = 0
        self.openedContainer = None
        self.redeemCodeGUI = None
        self.buttonSize = self.inventoryUIManager.standardButtonSize
        self.weaponBag = self.addContainer(InventoryUIWeaponContainer.InventoryUIWeaponContainer(self.inventoryUIManager, self.buttonSize * 6.0, self.buttonSize * 5.0, 6, 5, slotList=range(Locations.RANGE_WEAPONS[0], Locations.RANGE_WEAPONS[0] + 30)))
        self.clothingBag = self.addContainer(InventoryUIClothingContainer.InventoryUIClothingContainer(self.inventoryUIManager, self.buttonSize * 5.0, self.buttonSize * 7.0, 5, 7, slotList=range(Locations.RANGE_CLOTHES[0], Locations.RANGE_CLOTHES[0] + 35)))
        self.jewelryBag = self.addContainer(InventoryUIJewelryContainer.InventoryUIJewelryContainer(self.inventoryUIManager, self.buttonSize * 4.0, self.buttonSize * 7.0, 4, 7, slotList=range(Locations.RANGE_JEWELERY_AND_TATTOO[0], Locations.RANGE_JEWELERY_AND_TATTOO[0] + 28)))
        cardRange = range(UberDogGlobals.InventoryType.begin_Cards, UberDogGlobals.InventoryType.end_Cards)
        cardRange.reverse()
        self.potionBag = self.addContainer(InventoryUIConsumableContainerLocatable.InventoryUIConsumableContainerLocatable(self.inventoryUIManager, self.buttonSize * 6.0, self.buttonSize * 7.0, 6, 7, slotList=range(Locations.RANGE_CONSUMABLE[0], Locations.RANGE_CONSUMABLE[0] + 42)))
        self.ammoBag = self.addContainer(InventoryUIAmmoContainer.InventoryUIAmmoContainer(self.inventoryUIManager, self.buttonSize * 7.0, self.buttonSize * 6.0, maxCountX=7, itemList=WeaponGlobals.getAllAmmoSkills()), showTrash=0)
        self.materialBag = self.addContainer(InventoryUIMaterialContainer.InventoryUIMaterialContainer(self.inventoryUIManager, self.buttonSize * 7.0, self.buttonSize * 6.0, maxCountX=7, itemList=WeaponGlobals.getAllAmmoSkills()), showTrash=0)
        self.cardBag = self.addContainer(InventoryUICardContainer.InventoryUICardContainer(self.inventoryUIManager, self.buttonSize * 4.0, self.buttonSize * 13.0, 4, 13, minCountZ=13, maxCountX=4, itemList=cardRange), showTrash=0)
        hotkeySlotStart = Locations.RANGE_EQUIP_WEAPONS[0]
        weaponKeySlotList = []
        for weaponIndex in range(Locations.RANGE_EQUIP_WEAPONS[0], Locations.RANGE_EQUIP_WEAPONS[1] + 1):
            weaponKeySlotList.append(('F%s' % weaponIndex, 'f%s' % weaponIndex, weaponIndex))

        weaponKeySlotList.append((PLocalizer.InventoryPageItemSlot, '', Locations.RANGE_EQUIP_ITEMS[0]))
        self.inventoryPanelHotkey = InventoryUIBeltGrid.InventoryUIBeltGrid(self.inventoryUIManager, self.buttonSize * float(len(weaponKeySlotList)), self.buttonSize, len(weaponKeySlotList), 1, weaponKeySlotList)
        self.inventoryPanelHotkey.setPos(0.425 - 0.5 * self.inventoryPanelHotkey.sizeX, 0.0, 0.895)
        self.inventoryPanelHotkey.reparentTo(self.weaponBag)
        self.inventoryPanelTrash = InventoryUITrashContainer.InventoryUITrashContainer(self.inventoryUIManager, self.buttonSize, self.buttonSize)
        self.inventoryPanelTrash.setup()
        self.inventoryPanelTrash.setPos(0.07, 0.0, -0.03)
        self.inventoryPanelTrash.reparentTo(self)
        self.inventoryPanelDrinker = InventoryUIDrinker.InventoryUIDrinker(self.inventoryUIManager, self.buttonSize, self.buttonSize)
        self.inventoryPanelDrinker.setup()
        self.inventoryPanelDrinker.setPos(0.3, 0.0, -0.03)
        self.inventoryPanelDrinker.reparentTo(self)
        self.inventoryPanelDressing = InventoryUIDressingContainer.InventoryUIDressingContainer(self.inventoryUIManager, self.buttonSize, self.buttonSize * 7.0, slotList=range(Locations.RANGE_EQUIP_CLOTHES[0], Locations.RANGE_EQUIP_CLOTHES[1] + 1))
        self.inventoryPanelDressing.setPos(-0.225, 0.0, -0.0)
        self.inventoryPanelDressing.reparentTo(self.clothingBag)
        self.inventoryPanelJewelryDressing = InventoryUIJewelryDressingContainer.InventoryUIJewelryDressingContainer(self.inventoryUIManager, self.buttonSize * 2.0, self.buttonSize * 4.0, slotList=range(Locations.RANGE_EQUIP_JEWELRY[0], Locations.RANGE_EQUIP_JEWELRY[1] + 1))
        self.inventoryPanelJewelryDressing.setPos(-0.37, 0.0, 0.41)
        self.inventoryPanelJewelryDressing.reparentTo(self.jewelryBag)
        self.inventoryPanelTattooDressing = InventoryUITattooDressingContainer.InventoryUITattooDressingContainer(self.inventoryUIManager, self.buttonSize * 2.0, self.buttonSize * 2.0, slotList=range(Locations.RANGE_EQUIP_TATTOO[0], Locations.RANGE_EQUIP_TATTOO[1] + 1))
        self.inventoryPanelTattooDressing.setPos(-0.37, 0.0, 0.0)
        self.inventoryPanelTattooDressing.reparentTo(self.jewelryBag)
        self.inventoryPanelGold = InventoryUIGoldContainer.InventoryUIGoldContainer(self.inventoryUIManager, self.buttonSize, self.buttonSize)
        self.inventoryPanelGold.setPos(0.85, 0.0, -0.03)
        self.inventoryPanelGold.reparentTo(self)
        self.backTabParent = self.attachNewNode('backTabs')
        self.frontTabParent = self.attachNewNode('frontTab', sort=2)
        self.tabBar = None
        self.tabCount = 0
        for container in self.containerList:
            container.setPos(0.14, 0.0, 0.44)
            container.setX(0.54 - 0.5 * container.sizeX)
            container.setZ(1.2 - container.getTotalHeight())
            container.reparentTo(self)

        self.weaponBag.setZ(0.2)
        self.clothingBag.setPos(self.buttonSize * 2.0 + 0.03, 0.0, 0.2)
        self.jewelryBag.setPos(self.buttonSize * 3.0 + 0.04, 0.0, 0.21)
        self.ammoBag.setPos(self.buttonSize * 0.5 - 0.03, 0.0, 0.248)
        self.cardBag.setPos(self.buttonSize * 1.5 - 0.02, 0.0, self.buttonSize * 2.0)
        Gui = loader.loadModel('models/gui/char_gui')
        buttonImage = (Gui.find('**/chargui_text_block_large'), Gui.find('**/chargui_text_block_large_down'), Gui.find('**/chargui_text_block_large_over'), Gui.find('**/chargui_text_block_large'))
        self.redeemCodeButton = DirectButton(parent=self, relief=None, image=buttonImage, image_scale=0.45, text=PLocalizer.InventoryRedeemCode, text_font=PiratesGlobals.getInterfaceOutlineFont(), text_align=TextNode.ACenter, text_pos=(0, -0.01), text_scale=PiratesGuiGlobals.TextScaleLarge, text_fg=PiratesGuiGlobals.TextFG2, text_shadow=PiratesGuiGlobals.TextShadow, pos=(0.68,
                                                                                                                                                                                                                                                                                                                                                                                      0,
                                                                                                                                                                                                                                                                                                                                                                                      0.04), command=self.showRedeemCodeGUI)
        self.redeemCodeButton.hide()
        self.faceCameraButton = DirectButton(parent=self, relief=None, image=buttonImage, image_scale=0.45, text=PLocalizer.InventoryFaceCamera, text_font=PiratesGlobals.getInterfaceOutlineFont(), text_align=TextNode.ACenter, text_pos=(0, -0.01), text_scale=PiratesGuiGlobals.TextScaleLarge, text_fg=PiratesGuiGlobals.TextFG2, text_shadow=PiratesGuiGlobals.TextShadow, pos=(0.37,
                                                                                                                                                                                                                                                                                                                                                                                      0,
                                                                                                                                                                                                                                                                                                                                                                                      0.04), command=self.faceCamera)
        self.faceCameraButton.hide()
        self.notLoadedWarning = DirectLabel(parent=self, relief=DGG.SUNKEN, borderWidth=(0,
                                                                                         0), frameColor=(0.5,
                                                                                                         0.15,
                                                                                                         0.05,
                                                                                                         1), text=PLocalizer.InventoryNotLoaded, text_align=TextNode.ALeft, text_font=PiratesGlobals.getInterfaceOutlineFont(), text_scale=0.045, text_fg=(1,
                                                                                                                                                                                                                                                           1,
                                                                                                                                                                                                                                                           1,
                                                                                                                                                                                                                                                           1), text_wordwrap=20.0, state=DGG.DISABLED, pos=(0.1,
                                                                                                                                                                                                                                                                                                            0,
                                                                                                                                                                                                                                                                                                            0.75))
        self.accept('openingContainer', self.onOpen)
        self.acceptOnce('localPirate-created', self.askInventory)
        self.accept('pickedUpItem', self.onLocatable)
        self.invRequestId = None
        return
 def __init__(self, background = 1, extraArgs = []):
     panelName = PLocalizer.LootPlundered
     StackMessage.__init__(self, text = '', text_wordwrap = 14, time = PiratesGuiGlobals.LootPopupTime, frameSize = (0, self.width, 0, -(self.height), 0))
     self.initialiseoptions(LootPopupPanel)
     self.loot = []
     self.titleLabel = DirectLabel(parent = self, relief = None, text = panelName, text_align = TextNode.ALeft, text_scale = PiratesGuiGlobals.TextScaleMed, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, text_font = PiratesGlobals.getInterfaceOutlineFont(), textMayChange = 1, text_wordwrap = 14, sortOrder = 21)
     if not LootPopupPanel.lootSfx:
         LootPopupPanel.lootSfx = loadSfx(SoundGlobals.SFX_GUI_LOOT)
         LootPopupPanel.lootSfx.setVolume(0.75)
         card = loader.loadModel('models/textureCards/icons')
         topgui = loader.loadModel('models/gui/toplevel_gui')
         inventoryGui = loader.loadModel('models/gui/gui_icons_inventory')
         LootPopupPanel.BountyTex = loader.loadModel('models/gui/avatar_chooser_rope').find('**/avatar_c_B_delete')
         LootPopupPanel.CoinTex = topgui.find('**/treasure_w_coin*')
         LootPopupPanel.CrateTex = topgui.find('**/icon_crate*')
         LootPopupPanel.ChestTex = card.find('**/icon_chest')
         LootPopupPanel.RoyalChestTex = card.find('**/topgui_icon_ship_chest03*')
         LootPopupPanel.LootSacTex = inventoryGui.find('**/pir_t_ico_trs_sack*')
         LootPopupPanel.LootChestTex = inventoryGui.find('**/pir_t_ico_trs_chest_01*')
         LootPopupPanel.LootSkullChestTex = inventoryGui.find('**/pir_t_ico_trs_chest_02*')
         LootPopupPanel.TreasureGui = loader.loadModel('models/gui/treasure_gui')
         LootPopupPanel.TailorGui = loader.loadModel('models/textureCards/tailorIcons')
         LootPopupPanel.JewelerIconsA = loader.loadModel('models/gui/char_gui')
         LootPopupPanel.JewelerIconsB = loader.loadModel('models/textureCards/shopIcons')
         LootPopupPanel.TattooIcons = loader.loadModel('models/textureCards/tattooIcons')
         LootPopupPanel.WeaponIcons = loader.loadModel('models/gui/gui_icons_weapon')
     
     if not background:
         self.frameParent.hide()
         self['relief'] = None
         self.titleLabel['relief'] = None
     
     self.icons = {
         ItemId.CARGO_CRATE: (LootPopupPanel.CrateTex, PLocalizer.Crate),
         ItemId.CARGO_CHEST: (LootPopupPanel.ChestTex, PLocalizer.Chest),
         ItemId.CARGO_SKCHEST: (LootPopupPanel.RoyalChestTex, PLocalizer.SkChest),
         ItemId.CARGO_LOOTSAC: (LootPopupPanel.LootSacTex, PLocalizer.Crate),
         ItemId.CARGO_LOOTCHEST: (LootPopupPanel.LootChestTex, PLocalizer.Chest),
         ItemId.CARGO_LOOTSKCHEST: (LootPopupPanel.LootSkullChestTex, PLocalizer.SkChest),
         ItemId.GOLD: (LootPopupPanel.CoinTex, PLocalizer.MoneyName),
         ItemId.BOUNTY: (LootPopupPanel.BountyTex, PLocalizer.PVPInfamySpendable) }
     self.titleLabel['text_scale'] = PiratesGuiGlobals.TextScaleLarge
     self.repackPanels()
示例#31
0
 def __init__(self, chatManager, whiteListEntry):
     optiondefs = (('relief', None, None), ('state', DGG.NORMAL,
                                            self.setState),
                   ('frameSize', (0, 0.9, 0, 0.6),
                    None), ('frameColor', (1, 0, 1, 0.2), None))
     self.defineoptions({}, optiondefs)
     DirectFrame.__init__(self, parent=NodePath())
     self.initialiseoptions(ChatPanel)
     FSM.__init__(self, 'ChatPanel')
     base.chatPanel = self
     self.chatManager = chatManager
     self.index = 0
     self.runningLineCount = 0
     self.runningLineCountLastId = -1
     self.lineCountList = [0]
     self.wrappedText = []
     self.chatFont = PiratesGlobals.getInterfaceFont()
     self.nameFont = PiratesGlobals.getInterfaceFont()
     self.shadowOffset = (0.09, 0.09)
     self.shadowColor = (0.0, 0.0, 0.0, 1.0)
     self.fontColorStyle = 1
     if base.config.GetBool('want-random-chatStyle', 0):
         self.chatFont = random.choice([
             PiratesGlobals.getInterfaceFont(),
             PiratesGlobals.getInterfaceOutlineFont()
         ])
         self.nameFont = random.choice([
             PiratesGlobals.getInterfaceFont(),
             PiratesGlobals.getInterfaceOutlineFont()
         ])
         self.shadowOffset = random.choice([(0.09, 0.09), (0.0, 0.0)])
         self.fontColorStyle = random.choice([0, 1, 2])
     self.lineDict = {}
     self.renderedLineDict = {}
     self.renderedLines = []
     self.wordWrapper = TextNode('wrapper')
     self.wordWrapper.setFont(self.chatFont)
     self.wordWrapper.setWordwrap(self.WrapWidth)
     self.wordWrapper.setTabWidth(1.0)
     self.fadeIval = None
     self.fadeTextIval = None
     self.preferredMode = 'Short'
     self.linesShown = True
     self.holdLinesShown = None
     self.wantSmallFont = 0
     self.currentFontSize = self.TextScale
     self.currentWordWrap = self.WrapWidth
     self.resizeDelayTaskName = 'ChatPanel_Resize'
     self.sCloseButton = None
     self.tCloseButton = None
     self.minButton = None
     self.maxButton = None
     self.setupGui()
     self.chatBar = ChatBar(parent=self,
                            chatMgr=chatManager,
                            whiteListEntry=whiteListEntry)
     self.setBoxWidth(base.options.chatbox_scale)
     self.checkEmotes()
     self.needSlider = 0
     self.reparentTo(base.a2dBottomLeft)
     self.accept('NewOpenMessage', self.__handleOpenMessage)
     self.accept('SetChatBoxWidth', self.setBoxWidth)
     self.accept('SetChatBoxStyle', self.setChatStyle)
     self.accept('GUIHidden', self.__handleGlobalGuiHide)
     self.accept('GUIShown', self.__handleGlobalGuiShow)
     return
    def showDetails(self, cell, detailsPos, detailsHeight, event = None):
        self.notify.debug('Item showDetails')
        if self.manager.heldItem and self.manager.locked and cell.isEmpty() and self.isEmpty() or not (self.itemTuple):
            self.notify.debug(' early exit')
            return None

        inv = localAvatar.getInventory()
        if not inv:
            return None

        itemId = self.getId()
        self.helpFrame = DirectFrame(parent = self.manager, relief = None, state = DGG.DISABLED, sortOrder = 1)
        self.helpFrame.setBin('gui-popup', -5)
        detailGui = loader.loadModel('models/gui/gui_card_detail')
        topGui = loader.loadModel('models/gui/toplevel_gui')
        coinImage = topGui.find('**/treasure_w_coin*')
        self.SkillIcons = loader.loadModel('models/textureCards/skillIcons')
        self.BuffIcons = loader.loadModel('models/textureCards/buff_icons')
        border = self.SkillIcons.find('**/base')
        halfWidth = 0.29999999999999999
        halfHeight = 0.20000000000000001
        basePosX = cell.getX(aspect2d)
        basePosZ = cell.getZ(aspect2d)
        cellSizeX = 0.0
        cellSizeZ = 0.0
        if cell:
            cellSizeX = cell.cellSizeX
            cellSizeZ = cell.cellSizeZ

        textScale = PiratesGuiGlobals.TextScaleMed
        titleScale = PiratesGuiGlobals.TextScaleTitleSmall
        if len(self.getName()) >= 30:
            titleNameScale = PiratesGuiGlobals.TextScaleLarge
        else:
            titleNameScale = PiratesGuiGlobals.TextScaleExtraLarge
        subtitleScale = PiratesGuiGlobals.TextScaleMed
        iconScalar = 1.5
        borderScaler = 0.25
        splitHeight = 0.01
        vMargin = 0.029999999999999999
        runningVertPosition = 0.29999999999999999
        runningSize = 0.0
        labels = []
        titleColor = PiratesGuiGlobals.TextFG6
        rarity = ItemGlobals.getRarity(itemId)
        rarityText = PLocalizer.getItemRarityName(rarity)
        subtypeText = PLocalizer.getItemSubtypeName(ItemGlobals.getSubtype(itemId))
        if rarity == ItemGlobals.CRUDE:
            titleColor = PiratesGuiGlobals.TextFG24
        elif rarity == ItemGlobals.COMMON:
            titleColor = PiratesGuiGlobals.TextFG13
        elif rarity == ItemGlobals.RARE:
            titleColor = PiratesGuiGlobals.TextFG4
        elif rarity == ItemGlobals.FAMED:
            titleColor = PiratesGuiGlobals.TextFG5

        titleLabel = DirectLabel(parent = self, relief = None, text = self.getName(), text_scale = titleNameScale, text_fg = titleColor, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
        self.bg.setColor(titleColor)
        tHeight = 0.070000000000000007
        titleLabel.setZ(runningVertPosition)
        runningVertPosition -= tHeight
        runningSize += tHeight
        labels.append(titleLabel)
        subtitleLabel = DirectLabel(parent = self, relief = None, text = 'slant%s %s' % (rarityText, subtypeText), text_scale = subtitleScale, text_fg = PiratesGuiGlobals.TextFG2, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
        subtHeight = 0.050000000000000003
        subtitleLabel.setZ(subtHeight * 0.5 + runningVertPosition)
        runningVertPosition -= subtHeight
        runningSize += subtHeight
        labels.append(subtitleLabel)
        itemType = ItemGlobals.getType(itemId)
        itemSubtype = ItemGlobals.getSubtype(itemId)
        model = ItemGlobals.getModel(itemId)
        if model:
            self.realItem = loader.loadModel('models/inventory/' + model)
            if self.realItem:
                posHpr = ItemGlobals.getModelPosHpr(model)
                if posHpr:
                    self.realItem.setPos(posHpr[0], posHpr[1], posHpr[2])
                    self.realItem.setHpr(posHpr[3], posHpr[4], posHpr[5])
                elif itemSubtype == ItemGlobals.RAM:
                    self.realItem.setPos(-1.5, 1.5, -0.59999999999999998)
                    self.realItem.setHpr(70, 160, -90)
                else:
                    self.realItem.setPos(0.0, 1.5, -0.059999999999999998)
                    self.realItem.setHpr(0, 90, 0)
                self.realItem.reparentTo(self.portraitSceneGraph)


        iHeight = 0.17999999999999999
        self.createBuffer()
        self.itemCard.setZ(runningVertPosition - 0.059999999999999998)
        runningVertPosition -= iHeight
        runningSize += iHeight
        labels.append(self.itemCard)
        goldLabel = DirectLabel(parent = self, relief = None, image = coinImage, image_scale = 0.12, image_pos = Vec3(0.025000000000000001, 0, -0.02), text = str(int(ItemGlobals.getGoldCost(itemId) * ItemGlobals.GOLD_SALE_MULTIPLIER)), text_scale = subtitleScale, text_align = TextNode.ARight, text_fg = PiratesGuiGlobals.TextFG1, text_shadow = PiratesGuiGlobals.TextShadow, pos = (halfWidth - 0.050000000000000003, 0.0, runningVertPosition + 0.080000000000000002), text_pos = (0.0, -textScale))
        labels.append(goldLabel)
        specialAttack = ItemGlobals.getSpecialAttack(itemId)
        if specialAttack:
            attackIcon = self.SkillIcons.find('**/%s' % WeaponGlobals.getSkillIcon(specialAttack))
            specialAttackNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.10000000000000001, geom = attackIcon, geom_scale = 0.10000000000000001, image_pos = (-0.070000000000000007, 0.0, -0.050000000000000003), geom_pos = (-0.070000000000000007, 0.0, -0.050000000000000003), text = PLocalizer.getInventoryTypeName(specialAttack), text_scale = PiratesGuiGlobals.TextScaleLarge, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, text_fg = titleColor, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            specialAttackRankLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.ItemRank % ItemGlobals.getSpecialAttackRank(itemId), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            specialAttackType = WeaponGlobals.getSkillTrack(specialAttack)
            if specialAttackType == WeaponGlobals.BREAK_ATTACK_SKILL_INDEX:
                specialAttackTypeText = PLocalizer.BreakAttackSkill
            elif specialAttackType == WeaponGlobals.DEFENSE_SKILL_INDEX:
                specialAttackTypeText = PLocalizer.DefenseSkill
            else:
                specialAttackTypeText = PLocalizer.WeaponSkill
            specialAttackTypeLabel = DirectLabel(parent = self, relief = None, text = specialAttackTypeText, text_scale = PiratesGuiGlobals.TextScaleLarge, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - PiratesGuiGlobals.TextScaleLarge), text_pos = (0.0, -textScale))
            specialAttackInfo = PLocalizer.SkillDescriptions.get(specialAttack)
            specialAttackDescriptionText = specialAttackInfo[1]
            specialAttackDescriptionLabel = DirectLabel(parent = self, relief = None, text = specialAttackDescriptionText, text_scale = textScale, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - specialAttackNameLabel.getHeight() + specialAttackTypeLabel.getHeight() - 0.059999999999999998), text_pos = (0.0, -textScale))
            saHeight = specialAttackNameLabel.getHeight() + specialAttackTypeLabel.getHeight() + specialAttackDescriptionLabel.getHeight() - 0.040000000000000001
            runningVertPosition -= saHeight
            runningSize += saHeight
            labels.append(specialAttackNameLabel)
            labels.append(specialAttackRankLabel)
            labels.append(specialAttackTypeLabel)
            labels.append(specialAttackDescriptionLabel)

        attributes = ItemGlobals.getAttributes(itemId)
        for i in range(0, len(attributes)):
            attributeIcon = self.SkillIcons.find('**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))
            if not attributeIcon:
                attributeIcon = self.BuffIcons.find('**/%s' % ItemGlobals.getAttributeIcon(attributes[i][0]))

            attributeNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.050000000000000003, geom = attributeIcon, geom_scale = 0.050000000000000003, image_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), geom_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), text = PLocalizer.getItemAttributeName(attributes[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, text_fg = titleColor, text_font = PiratesGlobals.getInterfaceOutlineFont(), pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            attributeRankLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.ItemRank % attributes[i][1], text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            if attributeNameLabel.getHeight() > 0.074999999999999997:
                attributeNameSpace = 0.080000000000000002
            else:
                attributeNameSpace = PiratesGuiGlobals.TextScaleLarge
            attributeDescriptionLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.getItemAttributeDescription(attributes[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.7999999999999998 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition - attributeNameSpace), text_pos = (0.0, -textScale))
            aHeight = attributeNameLabel.getHeight() + attributeDescriptionLabel.getHeight()
            runningVertPosition -= aHeight + splitHeight
            runningSize += aHeight + splitHeight
            labels.append(attributeNameLabel)
            labels.append(attributeRankLabel)
            labels.append(attributeDescriptionLabel)

        skillBoosts = ItemGlobals.getSkillBoosts(itemId)
        for i in range(0, len(skillBoosts)):
            boostIcon = self.SkillIcons.find('**/%s' % WeaponGlobals.getSkillIcon(skillBoosts[i][0]))
            boostNameLabel = DirectLabel(parent = self, relief = None, image = border, image_scale = 0.050000000000000003, geom = boostIcon, geom_scale = 0.050000000000000003, image_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), geom_pos = (-0.070000000000000007, 0.0, -0.029999999999999999), text = PLocalizer.ItemBoost % PLocalizer.getInventoryTypeName(skillBoosts[i][0]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ALeft, pos = (-halfWidth + 0.12 + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            boostRankLabel = DirectLabel(parent = self, relief = None, text = '+%s' % str(skillBoosts[i][1]), text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.90000000000000002 / titleScale), text_align = TextNode.ARight, pos = (halfWidth - textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            bHeight = boostNameLabel.getHeight()
            runningVertPosition -= bHeight + splitHeight
            runningSize += bHeight + splitHeight
            labels.append(boostNameLabel)
            labels.append(boostRankLabel)

        description = PLocalizer.getItemFlavorText(itemId)
        if description != '':
            descriptionLabel = DirectLabel(parent = self, relief = None, text = description, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (0.94999999999999996 / textScale), text_align = TextNode.ALeft, pos = (-halfWidth + textScale * 0.5, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            dHeight = descriptionLabel.getHeight() + 0.02
            runningVertPosition -= dHeight
            runningSize += dHeight
            labels.append(descriptionLabel)

        weaponLevel = 0
        weaponRepId = WeaponGlobals.getRepId(itemId)
        weaponRep = inv.getReputation(weaponRepId)
        weaponReq = ItemGlobals.getWeaponRequirement(itemId)
        weaponText = None
        if weaponReq:
            weaponLevel = ReputationGlobals.getLevelFromTotalReputation(weaponRepId, weaponRep)[0]
            if weaponLevel < weaponReq:
                weaponColor = PiratesGuiGlobals.TextFG6
            else:
                weaponColor = (0.40000000000000002, 0.40000000000000002, 0.40000000000000002, 1.0)
            weaponText = PLocalizer.ItemLevelRequirement % (weaponReq, PLocalizer.getItemTypeName(itemType))
        else:
            trainingToken = EconomyGlobals.getItemTrainingReq(itemId)
            trainingAmt = inv.getItemQuantity(trainingToken)
            if trainingAmt == 0:
                weaponColor = PiratesGuiGlobals.TextFG6
                weaponText = PLocalizer.ItemTrainingRequirement % PLocalizer.getItemTypeName(itemType)

        if weaponText:
            weaponReqLabel = DirectLabel(parent = self, relief = None, text = weaponText, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (1.5 / titleScale), text_fg = weaponColor, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
            wHeight = weaponReqLabel.getHeight()
            runningVertPosition -= wHeight
            runningSize += wHeight
            labels.append(weaponReqLabel)

        if not Freebooter.getPaidStatus(localAvatar.getDoId()):
            if rarity != ItemGlobals.CRUDE:
                unlimitedLabel = DirectLabel(parent = self, relief = None, text = PLocalizer.UnlimitedAccessRequirement, text_scale = textScale, text_wordwrap = halfWidth * 2.0 * (1.5 / titleScale), text_fg = PiratesGuiGlobals.TextFG6, text_shadow = PiratesGuiGlobals.TextShadow, text_align = TextNode.ACenter, pos = (0.0, 0.0, runningVertPosition), text_pos = (0.0, -textScale))
                uHeight = unlimitedLabel.getHeight()
                runningVertPosition -= uHeight
                runningSize += uHeight
                labels.append(unlimitedLabel)


        runningVertPosition -= 0.02
        runningSize += 0.02
        panels = self.helpFrame.attachNewNode('panels')
        topPanel = panels.attachNewNode('middlePanel')
        detailGui.find('**/top_panel').copyTo(topPanel)
        topPanel.setScale(0.080000000000000002)
        topPanel.reparentTo(self.helpFrame)
        middlePanel = panels.attachNewNode('middlePanel')
        detailGui.find('**/middle_panel').copyTo(middlePanel)
        middlePanel.setScale(0.080000000000000002)
        middlePanel.reparentTo(self.helpFrame)
        placement = 0
        i = 0
        heightMax = -0.080000000000000002
        currentHeight = runningVertPosition
        while currentHeight < heightMax:
            middlePanel = panels.attachNewNode('middlePanel%s' % 1)
            detailGui.find('**/middle_panel').copyTo(middlePanel)
            middlePanel.setScale(0.080000000000000002)
            middlePanel.reparentTo(self.helpFrame)
            if currentHeight + 0.20000000000000001 >= heightMax:
                difference = heightMax - currentHeight
                placement += (0.16800000000000001 / 0.20000000000000001) * difference
                currentHeight += difference
            else:
                placement += 0.16800000000000001
                currentHeight += 0.20000000000000001
            middlePanel.setZ(-placement)
            i += 1
        bottomPanel = panels.attachNewNode('bottomPanel')
        detailGui.find('**/bottom_panel').copyTo(bottomPanel)
        bottomPanel.setScale(0.080000000000000002)
        bottomPanel.setZ(-placement)
        bottomPanel.reparentTo(self.helpFrame)
        colorPanel = panels.attachNewNode('colorPanel')
        detailGui.find('**/color').copyTo(colorPanel)
        colorPanel.setScale(0.080000000000000002)
        colorPanel.setColor(titleColor)
        colorPanel.reparentTo(self.helpFrame)
        lineBreakTopPanel = panels.attachNewNode('lineBreakTopPanel')
        detailGui.find('**/line_break_top').copyTo(lineBreakTopPanel)
        lineBreakTopPanel.setScale(0.080000000000000002, 0.080000000000000002, 0.070000000000000007)
        lineBreakTopPanel.setZ(0.0080000000000000002)
        lineBreakTopPanel.reparentTo(self.helpFrame)
        panels.flattenStrong()
        self.helpFrame['frameSize'] = (-halfWidth, halfWidth, -(runningSize + vMargin), vMargin)
        totalHeight = self.helpFrame.getHeight() - 0.10000000000000001
        for label in labels:
            label.reparentTo(self.helpFrame)

        if basePosX > 0.0:
            newPosX = basePosX - halfWidth + cellSizeX * 0.45000000000000001
        else:
            newPosX = basePosX + halfWidth + cellSizeX * 0.45000000000000001
        if basePosZ > 0.0:
            newPosZ = basePosZ + cellSizeZ * 0.45000000000000001
        else:
            newPosZ = basePosZ + totalHeight - cellSizeZ * 0.75
        if detailsPos:
            (newPosX, newPosZ) = detailsPos

        self.helpFrame.setPos(newPosX, 0, newPosZ)