def sortData(a, b): aId = a.getData()[0] bId = b.getData()[0] aType = EconomyGlobals.getItemType(aId) bType = EconomyGlobals.getItemType(bId) if aType == bType: if aType <= ItemType.WAND or aType == ItemType.POTION: aSubtype = ItemGlobals.getSubtype(aId) bSubtype = ItemGlobals.getSubtype(bId) if aSubtype == bSubtype: if aType <= ItemType.WAND: aLevel = ItemGlobals.getWeaponRequirement(aId) bLevel = ItemGlobals.getWeaponRequirement(bId) if aLevel == bLevel: if a.price == b.price: if aId > bId: return 1 else: return -1 elif a.price > b.price: return 1 else: return -1 elif aLevel > bLevel: return 1 else: return -1 else: aLevel = ItemGlobals.getNotorietyRequirement(aId) bLevel = ItemGlobals.getNotorietyRequirement(bId) if aLevel == bLevel: if a.price == b.price: if aId > bId: return 1 else: return -1 elif a.price > b.price: return 1 else: return -1 elif aLevel > bLevel: return 1 else: return -1 elif aSubtype > bSubtype: return 1 else: return -1 elif aId > bId: return 1 else: return -1 else: if aType > bType: return 1 else: return -1
def sortData(a, b): aId = a.getData()[0] bId = b.getData()[0] aType = EconomyGlobals.getItemType(aId) bType = EconomyGlobals.getItemType(bId) if aType == bType: if aType <= ItemType.WAND or aType == ItemType.POTION: aSubtype = ItemGlobals.getSubtype(aId) bSubtype = ItemGlobals.getSubtype(bId) if aSubtype == bSubtype: if aType <= ItemType.WAND: aLevel = ItemGlobals.getWeaponRequirement(aId) bLevel = ItemGlobals.getWeaponRequirement(bId) if aLevel == bLevel: if a.price == b.price: if aId > bId: return 1 else: return -1 elif a.price > b.price: return 1 else: return -1 elif aLevel > bLevel: return 1 else: return -1 else: aLevel = ItemGlobals.getNotorietyRequirement(aId) bLevel = ItemGlobals.getNotorietyRequirement(bId) if aLevel == bLevel: if a.price == b.price: if aId > bId: return 1 else: return -1 elif a.price > b.price: return 1 else: return -1 elif aLevel > bLevel: return 1 else: return -1 elif aSubtype > bSubtype: return 1 else: return -1 elif aId > bId: return 1 else: return -1 elif aType > bType: return 1 else: return -1
def getGeomParams(itemId): geomParams = { } itemType = EconomyGlobals.getItemType(itemId) if itemType <= ItemType.WAND or itemType == ItemType.POTION: if itemType == ItemType.POTION: geomParams['geom'] = InventoryItemGui.skillIcons.find('**/%s' % ItemGlobals.getIcon(itemId)) else: itemType = ItemGlobals.getType(itemId) if ItemGlobals.getIcon(itemId): geomParams['geom'] = InventoryItemGui.weaponIcons.find('**/%s' % ItemGlobals.getIcon(itemId)) geomParams['geom_scale'] = 0.11 geomParams['geom_pos'] = (0.080000000000000002, 0, 0.068000000000000005) else: itemClass = EconomyGlobals.getItemCategory(itemId) itemType = EconomyGlobals.getItemType(itemId) if itemType == ItemType.FISHING_ROD or itemType == ItemType.FISHING_LURE: asset = EconomyGlobals.getItemIcons(itemId) if asset: geomParams['geom'] = InventoryItemGui.fishingIcons.find('**/%s*' % asset) geomParams['geom_scale'] = 0.11 geomParams['geom_pos'] = (0.080000000000000002, 0, 0.068000000000000005) elif itemClass == ItemType.WEAPON and itemClass == ItemType.POUCH or itemClass == ItemType.AMMO: asset = EconomyGlobals.getItemIcons(itemId) if asset: geomParams['geom'] = InventoryItemGui.weaponIcons.find('**/%s*' % asset) geomParams['geom_scale'] = 0.11 geomParams['geom_pos'] = (0.080000000000000002, 0, 0.068000000000000005) elif itemClass == ItemType.CONSUMABLE: asset = EconomyGlobals.getItemIcons(itemId) if asset: geomParams['geom'] = InventoryItemGui.skillIcons.find('**/%s*' % asset) geomParams['geom_scale'] = 0.11 geomParams['geom_pos'] = (0.080000000000000002, 0, 0.068000000000000005) if not InventoryType.begin_WeaponCannonAmmo <= itemId or itemId <= InventoryType.end_WeaponCannonAmmo: if (InventoryType.begin_WeaponPistolAmmo <= itemId or itemId <= InventoryType.end_WeaponGrenadeAmmo or InventoryType.begin_WeaponDaggerAmmo <= itemId) and itemId <= InventoryType.end_WeaponDaggerAmmo: skillId = WeaponGlobals.getSkillIdForAmmoSkillId(itemId) if skillId: asset = WeaponGlobals.getSkillIcon(skillId) if asset: geomParams['geom'] = InventoryListItem.skillIcons.find('**/%s' % asset) geomParams['geom_scale'] = 0.14999999999999999 geomParams['geom_pos'] = (0.069000000000000006, 0, 0.069000000000000006) elif InventoryType.SmallBottle <= itemId and itemId <= InventoryType.LargeBottle: geomParams['geom'] = InventoryListItem.topGui.find('**/main_gui_ship_bottle') geomParams['geom_scale'] = 0.10000000000000001 geomParams['geom_pos'] = (0.069000000000000006, 0, 0.069000000000000006) return geomParams
def loadData(self): itemId = self.data[0] item, quantity = self.data self.quantity = quantity itemType = EconomyGlobals.getItemType(itemId) if itemType <= ItemType.WAND: itemTypeName = PLocalizer.getItemSubtypeName( ItemGlobals.getSubtype(itemId)) else: itemTypeName = PLocalizer.InventoryItemClassNames.get(itemType) if itemType <= ItemType.WAND or itemType == ItemType.POTION: name = PLocalizer.getItemName(itemId) self.price = ItemGlobals.getGoldCost(itemId) else: name = PLocalizer.InventoryTypeNames.get(item) self.price = EconomyGlobals.getItemCost(item) if self.sell: self.price /= 2 if self.buy: if itemType > ItemType.WAND and itemType != ItemType.POTION: self.quantity = EconomyGlobals.getItemQuantity(itemId) self.price *= self.quantity self.price = int(self.price) self.name = PLocalizer.makeHeadingString(name, 2) self.itemType = itemTypeName if itemType != ItemType.FISHING_LURE: if itemType != ItemType.POTION: self.minLvl = ItemGlobals.getWeaponRequirement(itemId) else: self.minLvl = 0 else: self.minLvl = EconomyGlobals.getItemMinLevel(self.data[0])
def __init__(self, uid): SimpleItem.__init__(self, uid) self.itemClass = EconomyGlobals.getItemCategory(uid) self.itemType = EconomyGlobals.getItemType(uid) self.cost = EconomyGlobals.getItemCost(uid) if not self.cost: self.cost = ItemGlobals.getGoldCost(uid)
def loadData(self): itemId = self.data[0] (item, quantity) = self.data self.quantity = quantity itemType = EconomyGlobals.getItemType(itemId) if itemType <= ItemType.WAND: itemTypeName = PLocalizer.getItemSubtypeName(ItemGlobals.getSubtype(itemId)) else: itemTypeName = PLocalizer.InventoryItemClassNames.get(itemType) if itemType <= ItemType.WAND or itemType == ItemType.POTION: name = PLocalizer.getItemName(itemId) self.price = ItemGlobals.getGoldCost(itemId) else: name = PLocalizer.InventoryTypeNames.get(item) self.price = EconomyGlobals.getItemCost(item) if self.sell: self.price /= 2 if self.buy: if itemType > ItemType.WAND and itemType != ItemType.POTION: self.quantity = EconomyGlobals.getItemQuantity(itemId) self.price *= self.quantity self.price = int(self.price) self.name = PLocalizer.makeHeadingString(name, 2) self.itemType = itemTypeName if itemType != ItemType.FISHING_LURE: if itemType != ItemType.POTION: self.minLvl = ItemGlobals.getWeaponRequirement(itemId) else: self.minLvl = 0 else: self.minLvl = EconomyGlobals.getItemMinLevel(self.data[0])
def createGui(self): itemId = self.data[0] self.itemCount += 1 self.itemQuantity = self.quantity self.itemCost = self.price self.picture = DirectFrame(parent = self, relief = None, state = DGG.DISABLED, pos = (0.035000000000000003, 0, 0.025000000000000001)) self.quantityLabel = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = str(self.quantity), text_fg = PiratesGuiGlobals.TextFG2, text_scale = PiratesGuiGlobals.TextScaleSmall * PLocalizer.getHeadingScale(2), text_align = TextNode.ARight, text_wordwrap = 11, pos = (0.1225, 0, 0.014999999999999999)) if len(self.name) >= 39: textScale = PiratesGuiGlobals.TextScaleMicro * PLocalizer.getHeadingScale(2) elif len(self.name) >= 35: textScale = PiratesGuiGlobals.TextScaleTiny * PLocalizer.getHeadingScale(2) else: textScale = PiratesGuiGlobals.TextScaleSmall * PLocalizer.getHeadingScale(2) self.nameTag = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, text = self.name, text_fg = PiratesGuiGlobals.TextFG2, text_scale = textScale, text_align = TextNode.ALeft, pos = (0.13, 0, 0.014999999999999999)) self.costText = DirectLabel(parent = self, relief = None, state = DGG.DISABLED, image = InventoryListItem.coinImage, image_scale = 0.12, image_pos = Vec3(-0.0050000000000000001, 0, 0.012500000000000001), text = str(self.price), text_fg = PiratesGuiGlobals.TextFG2, text_scale = PiratesGuiGlobals.TextScaleSmall, text_align = TextNode.ARight, text_wordwrap = 11, text_pos = (-0.029999999999999999, 0, 0), pos = (self.width - 0.035000000000000003, 0, 0.014999999999999999), text_font = PiratesGlobals.getInterfaceFont()) itemClass = EconomyGlobals.getItemCategory(itemId) itemType = EconomyGlobals.getItemType(itemId) if itemType == ItemType.FISHING_ROD or itemType == ItemType.FISHING_LURE: asset = EconomyGlobals.getItemIcons(itemId) if asset: self.picture['geom'] = PurchaseListItem.fishingIcons.find('**/%s*' % asset) self.picture['geom_scale'] = 0.040000000000000001 self.picture['geom_pos'] = (0, 0, 0) elif itemClass == ItemType.WEAPON or itemClass == ItemType.POUCH: asset = EconomyGlobals.getItemIcons(itemId) if asset: self.picture['geom'] = InventoryListItem.weaponIcons.find('**/%s*' % asset) self.picture['geom_scale'] = 0.040000000000000001 self.picture['geom_pos'] = (0, 0, 0) elif itemClass == ItemType.CONSUMABLE: asset = EconomyGlobals.getItemIcons(itemId) if asset: self.picture['geom'] = InventoryListItem.skillIcons.find('**/%s*' % asset) self.picture['geom_scale'] = 0.040000000000000001 self.picture['geom_pos'] = (0, 0, 0) if not InventoryType.begin_WeaponCannonAmmo <= itemId or itemId <= InventoryType.end_WeaponCannonAmmo: if (InventoryType.begin_WeaponPistolAmmo <= itemId or itemId <= InventoryType.end_WeaponGrenadeAmmo or InventoryType.begin_WeaponDaggerAmmo <= itemId) and itemId <= InventoryType.end_WeaponDaggerAmmo: skillId = WeaponGlobals.getSkillIdForAmmoSkillId(itemId) if skillId: asset = WeaponGlobals.getSkillIcon(skillId) if asset: self.picture['geom'] = InventoryListItem.skillIcons.find('**/%s' % asset) self.picture['geom_scale'] = 0.059999999999999998 self.picture['geom_pos'] = (0, 0, 0) elif InventoryType.SmallBottle <= itemId and itemId <= InventoryType.LargeBottle: self.picture['geom'] = self.topGui.find('**/main_gui_ship_bottle') self.picture['geom_scale'] = 0.10000000000000001 self.picture['geom_pos'] = (0, 0, 0) self.flattenStrong()
def createGui(self): itemId = self.data[0] self.itemCount += 1 self.itemQuantity = self.quantity self.itemCost = self.price self.picture = DirectFrame(parent=self, relief=None, state=DGG.DISABLED, pos=(0.035, 0, 0.025)) self.quantityLabel = DirectLabel(parent=self, relief=None, state=DGG.DISABLED, text=str(self.quantity), text_fg=PiratesGuiGlobals.TextFG2, text_scale=PiratesGuiGlobals.TextScaleSmall * PLocalizer.getHeadingScale(2), text_align=TextNode.ARight, text_wordwrap=11, pos=(0.1225, 0, 0.015)) if len(self.name) >= 39: textScale = PiratesGuiGlobals.TextScaleMicro * PLocalizer.getHeadingScale(2) else: if len(self.name) >= 35: textScale = PiratesGuiGlobals.TextScaleTiny * PLocalizer.getHeadingScale(2) else: textScale = PiratesGuiGlobals.TextScaleSmall * PLocalizer.getHeadingScale(2) self.nameTag = DirectLabel(parent=self, relief=None, state=DGG.DISABLED, text=self.name, text_fg=PiratesGuiGlobals.TextFG2, text_scale=textScale, text_align=TextNode.ALeft, pos=(0.13, 0, 0.015)) self.costText = DirectLabel(parent=self, relief=None, state=DGG.DISABLED, image=InventoryListItem.coinImage, image_scale=0.12, image_pos=Vec3(-0.005, 0, 0.0125), text=str(self.price), text_fg=PiratesGuiGlobals.TextFG2, text_scale=PiratesGuiGlobals.TextScaleSmall, text_align=TextNode.ARight, text_wordwrap=11, text_pos=(-0.03, 0, 0), pos=(self.width - 0.035, 0, 0.015), text_font=PiratesGlobals.getInterfaceFont()) itemClass = EconomyGlobals.getItemCategory(itemId) itemType = EconomyGlobals.getItemType(itemId) if itemType == ItemType.FISHING_ROD or itemType == ItemType.FISHING_LURE: asset = EconomyGlobals.getItemIcons(itemId) if asset: self.picture['geom'] = PurchaseListItem.fishingIcons.find('**/%s*' % asset) self.picture['geom_scale'] = 0.04 self.picture['geom_pos'] = (0, 0, 0) elif itemClass == ItemType.WEAPON or itemClass == ItemType.POUCH: asset = EconomyGlobals.getItemIcons(itemId) if asset: self.picture['geom'] = InventoryListItem.weaponIcons.find('**/%s*' % asset) self.picture['geom_scale'] = 0.04 self.picture['geom_pos'] = (0, 0, 0) elif itemClass == ItemType.CONSUMABLE: asset = EconomyGlobals.getItemIcons(itemId) if asset: self.picture['geom'] = InventoryListItem.skillIcons.find('**/%s*' % asset) self.picture['geom_scale'] = 0.04 self.picture['geom_pos'] = (0, 0, 0) if InventoryType.begin_WeaponCannonAmmo <= itemId and itemId <= InventoryType.end_WeaponCannonAmmo or InventoryType.begin_WeaponPistolAmmo <= itemId and itemId <= InventoryType.end_WeaponGrenadeAmmo or InventoryType.begin_WeaponDaggerAmmo <= itemId and itemId <= InventoryType.end_WeaponDaggerAmmo: skillId = WeaponGlobals.getSkillIdForAmmoSkillId(itemId) if skillId: asset = WeaponGlobals.getSkillIcon(skillId) if asset: self.picture['geom'] = InventoryListItem.skillIcons.find('**/%s' % asset) self.picture['geom_scale'] = 0.06 self.picture['geom_pos'] = (0, 0, 0) if InventoryType.SmallBottle <= itemId and itemId <= InventoryType.LargeBottle: self.picture['geom'] = self.topGui.find('**/main_gui_ship_bottle') self.picture['geom_scale'] = 0.1 self.picture['geom_pos'] = (0, 0, 0) self.flattenStrong() return
def setupItems(self, itemList): for itemId in itemList: itemClass = ItemGlobals.getClass(itemId) itemType = EconomyGlobals.getItemType(itemId) itemTuple = [ itemClass, itemId, 0, 0] item = None if itemClass == InventoryType.ItemTypeWeapon: item = self.manager.makeWeaponItem(itemTuple) elif itemClass == InventoryType.ItemTypeCharm: item = self.manager.makeCharmItem(itemTuple) elif itemClass == InventoryType.ItemTypeConsumable: itemTuple[3] = 1 item = self.manager.makeConsumableItem(itemTuple, showMax = 0) elif itemClass == InventoryType.ItemTypeClothing: item = self.manager.makeClothingItem(itemTuple) elif itemClass == InventoryType.ItemTypeMoney: item = self.manager.makeGoldItem(itemTuple) elif itemClass == InventoryType.TreasureCollection: item = self.manager.makeTreasureItem(itemTuple) elif itemClass == InventoryType.ItemTypeJewelry: item = self.manager.makeJewelryItem(itemTuple) elif itemClass == InventoryType.ItemTypeTattoo: item = self.manager.makeTattooItem(itemTuple) elif itemClass == InventoryCategory.CARDS: cardId = itemId itemTuple[1] -= InventoryType.begin_Cards item = self.manager.makeCardItem(cardId, itemTuple, imageScaleFactor = 1.8999999999999999) elif itemClass == InventoryCategory.WEAPON_PISTOL_AMMO: itemTuple[1] = WeaponGlobals.getSkillAmmoInventoryId(itemId) item = self.manager.makeAmmoItem(itemId, itemTuple, showMax = 0) elif itemType in [ EconomyGlobals.ItemType.DAGGERAMMO, EconomyGlobals.ItemType.PISTOLAMMO, EconomyGlobals.ItemType.GRENADEAMMO, EconomyGlobals.ItemType.CANNONAMMO]: itemTuple = [ 0, itemId, 0, EconomyGlobals.getItemQuantity(itemId)] skillId = WeaponGlobals.getSkillIdForAmmoSkillId(itemId) item = self.manager.makeAmmoItem(skillId, itemTuple, showMax = 0) elif itemType in [ EconomyGlobals.ItemType.PISTOL_POUCH, EconomyGlobals.ItemType.DAGGER_POUCH, EconomyGlobals.ItemType.GRENADE_POUCH, EconomyGlobals.ItemType.CANNON_POUCH, EconomyGlobals.ItemType.FISHING_POUCH]: item = self.manager.makePouchItem(itemTuple) elif itemType in (EconomyGlobals.ItemType.FISHING_LURE,): itemTuple[1] = WeaponGlobals.getSkillAmmoInventoryId(itemId) itemTuple[3] = EconomyGlobals.getItemQuantity(itemId) item = self.manager.makeFishingItem(itemId, itemTuple, showMax = 0) if itemClass in (InventoryType.ItemTypeMoney, InventoryCategory.CARDS, InventoryType.TreasureCollection): self.addGridCell(self.stackImage, 1.0) elif itemClass == InventoryCategory.WEAPON_PISTOL_AMMO: self.addGridCell(self.stackImage2, 1.0) elif itemType in (EconomyGlobals.ItemType.FISHING_LURE,): self.addGridCell(self.stackImage, 1.0) else: self.addGridCell() if item: self.tryPutIntoFirstOpenCell(item) item.showResaleValue = False if self.zCount == self.gridZ: break while self.zCount < self.gridZ: self.addGridCell()
def handleBuyItem(self, data, useCode): itemId = data[0] if not itemId: return itemType = EconomyGlobals.getItemType(itemId) if itemType <= ItemType.WAND or itemType == ItemType.POTION: data[1] = 1 else: data[1] = EconomyGlobals.getItemQuantity(itemId) inventory = base.localAvatar.getInventory() if not inventory: return itemQuantity = self.purchaseInventory.getItemQuantity(itemId) currStock = inventory.getStackQuantity(itemId) currStockLimit = inventory.getStackLimit(itemId) if useCode == PiratesGuiGlobals.InventoryAdd: itemTypeName = PLocalizer.InventoryItemClassNames.get(itemType) trainingReq = EconomyGlobals.getItemTrainingReq(itemId) if trainingReq: amt = inventory.getStackQuantity(trainingReq) if not amt: base.localAvatar.guiMgr.createWarning( PLocalizer.NoTrainingWarning % itemTypeName, PiratesGuiGlobals.TextFG6) return itemType = EconomyGlobals.getItemType(itemId) if itemType != ItemType.POTION: minLvl = ItemGlobals.getWeaponRequirement(itemId) else: minLvl = 0 repId = WeaponGlobals.getRepId(itemId) repAmt = inventory.getAccumulator(repId) if minLvl > ReputationGlobals.getLevelFromTotalReputation( repId, repAmt)[0]: base.localAvatar.guiMgr.createWarning( PLocalizer.LevelReqWarning % (minLvl, itemTypeName), PiratesGuiGlobals.TextFG6) return if itemId in ItemGlobals.getAllWeaponIds(): locatables = [] for dataInfo in self.purchaseInventory.inventory: dataId = dataInfo[0] if dataId in ItemGlobals.getAllWeaponIds(): locatables.append( InvItem([InventoryType.ItemTypeWeapon, dataId, 0])) locatables.append( InvItem([InventoryType.ItemTypeWeapon, itemId, 0])) locationIds = inventory.canAddLocatables(locatables) for locationId in locationIds: if locationId in (Locations.INVALID_LOCATION, Locations.NON_LOCATION): base.localAvatar.guiMgr.createWarning( PLocalizer.InventoryFullWarning, PiratesGuiGlobals.TextFG6) return else: if itemId in ItemGlobals.getAllConsumableIds(): itemQuantity = self.purchaseInventory.getItemQuantity( itemId) currStock = inventory.getItemQuantity( InventoryType.ItemTypeConsumable, itemId) currStockLimit = inventory.getItemLimit( InventoryType.ItemTypeConsumable, itemId) if currStock + itemQuantity >= currStockLimit: base.localAvatar.guiMgr.createWarning( PLocalizer.TradeItemFullWarning, PiratesGuiGlobals.TextFG6) return if currStock == 0: locatables = [] dataIds = {} for dataInfo in self.purchaseInventory.inventory: dataId = dataInfo[0] if dataId in ItemGlobals.getAllConsumableIds(): if dataIds.has_key(dataId): dataIds[dataId] += 1 else: dataIds[dataId] = 1 if dataIds.has_key(itemId): dataIds[itemId] += 1 else: dataIds[itemId] = 1 for dataId in dataIds: locatables.append( InvItem([ InventoryType.ItemTypeConsumable, dataId, 0, dataIds[dataId] ])) locationIds = inventory.canAddLocatables(locatables) for locationId in locationIds: if locationId in (Locations.INVALID_LOCATION, Locations.NON_LOCATION): base.localAvatar.guiMgr.createWarning( PLocalizer.InventoryFullWarning, PiratesGuiGlobals.TextFG6) return itemQuantity = self.purchaseInventory.getItemQuantity(itemId) currStock = inventory.getStackQuantity(itemId) currStockLimit = inventory.getStackLimit(itemId) itemCategory = EconomyGlobals.getItemCategory(itemId) if currStock + itemQuantity >= currStockLimit: base.localAvatar.guiMgr.createWarning( PLocalizer.TradeItemFullWarning, PiratesGuiGlobals.TextFG6) return self.purchaseInventory.addPanel(data) self.purchaseInventory.inventory.append(data) elif useCode == PiratesGuiGlobals.InventoryRemove: self.purchaseInventory.removePanel(data) panel = self.storeInventory.getPanel(data) if panel: self.checkPanel(panel, inventory, itemId) self.updateBalance()
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 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*') SkillIcons = loader.loadModel('models/textureCards/skillIcons') border = 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.TextFG24 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 = PLocalizer.InventoryItemClassNames.get(EconomyGlobals.getItemType(self.getId()), ''), 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) MaterialIcons = loader.loadModel('models/textureCards/shipMaterialIcons') self.iconLabel = DirectLabel(parent = self.portraitSceneGraph, relief = None, image = MaterialIcons.find('**/%s' % EconomyGlobals.getItemIcons(self.getItemId())), pos = (0.0, 2.5, 0.0)) iHeight = 0.17999999999999999 self.createBuffer() self.itemCard.setZ(runningVertPosition - 0.059999999999999998) runningVertPosition -= iHeight runningSize += iHeight labels.append(self.itemCard) description = PLocalizer.WeaponDescriptions.get(self.getId()) if not description: description = PLocalizer.WeaponDescriptions.get(self.getItemId()) 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) 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 if detailsHeight: currentHeight = -detailsHeight 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 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 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*') SkillIcons = loader.loadModel('models/textureCards/skillIcons') border = 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.TextFG24 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 = PLocalizer.InventoryItemClassNames.get(EconomyGlobals.getItemType(self.getId()), ''), 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) self.iconLabel = DirectLabel(parent = self.portraitSceneGraph, relief = None, image = self.Icons.find('**/%s' % self.iconName), pos = (0.0, 2.5, 0.0)) iHeight = 0.17999999999999999 self.createBuffer() self.itemCard.setZ(runningVertPosition - 0.059999999999999998) runningVertPosition -= iHeight runningSize += iHeight labels.append(self.itemCard) description = PLocalizer.WeaponDescriptions.get(self.getId()) if not description: description = PLocalizer.WeaponDescriptions.get(self.getSkillId()) 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) 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 if detailsHeight: currentHeight = -detailsHeight 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 handleBuyItem(self, data, useCode): itemId = data[0] if not itemId: return None itemType = EconomyGlobals.getItemType(itemId) if itemType <= ItemType.WAND or itemType == ItemType.POTION: data[1] = 1 else: data[1] = EconomyGlobals.getItemQuantity(itemId) inventory = base.localAvatar.getInventory() if not inventory: return None itemQuantity = self.purchaseInventory.getItemQuantity(itemId) currStock = inventory.getStackQuantity(itemId) currStockLimit = inventory.getStackLimit(itemId) if useCode == PiratesGuiGlobals.InventoryAdd: itemTypeName = PLocalizer.InventoryItemClassNames.get(itemType) trainingReq = EconomyGlobals.getItemTrainingReq(itemId) if trainingReq: amt = inventory.getStackQuantity(trainingReq) if not amt: base.localAvatar.guiMgr.createWarning(PLocalizer.NoTrainingWarning % itemTypeName, PiratesGuiGlobals.TextFG6) return None itemType = EconomyGlobals.getItemType(itemId) if itemType != ItemType.POTION: minLvl = ItemGlobals.getWeaponRequirement(itemId) else: minLvl = 0 repId = WeaponGlobals.getRepId(itemId) repAmt = inventory.getAccumulator(repId) if minLvl > ReputationGlobals.getLevelFromTotalReputation(repId, repAmt)[0]: base.localAvatar.guiMgr.createWarning(PLocalizer.LevelReqWarning % (minLvl, itemTypeName), PiratesGuiGlobals.TextFG6) return None if itemId in ItemGlobals.getAllWeaponIds(): locatables = [] for dataInfo in self.purchaseInventory.inventory: dataId = dataInfo[0] if dataId in ItemGlobals.getAllWeaponIds(): locatables.append(InvItem([ InventoryType.ItemTypeWeapon, dataId, 0])) continue locatables.append(InvItem([ InventoryType.ItemTypeWeapon, itemId, 0])) locationIds = inventory.canAddLocatables(locatables) for locationId in locationIds: if locationId in (Locations.INVALID_LOCATION, Locations.NON_LOCATION): base.localAvatar.guiMgr.createWarning(PLocalizer.InventoryFullWarning, PiratesGuiGlobals.TextFG6) return None continue elif itemId in ItemGlobals.getAllConsumableIds(): itemQuantity = self.purchaseInventory.getItemQuantity(itemId) currStock = inventory.getItemQuantity(InventoryType.ItemTypeConsumable, itemId) currStockLimit = inventory.getItemLimit(InventoryType.ItemTypeConsumable, itemId) if currStock + itemQuantity >= currStockLimit: base.localAvatar.guiMgr.createWarning(PLocalizer.TradeItemFullWarning, PiratesGuiGlobals.TextFG6) return None if currStock == 0: locatables = [] dataIds = { } for dataInfo in self.purchaseInventory.inventory: dataId = dataInfo[0] if dataId in ItemGlobals.getAllConsumableIds(): if dataIds.has_key(dataId): dataIds[dataId] += 1 else: dataIds[dataId] = 1 dataIds.has_key(dataId) if dataIds.has_key(itemId): dataIds[itemId] += 1 else: dataIds[itemId] = 1 for dataId in dataIds: locatables.append(InvItem([ InventoryType.ItemTypeConsumable, dataId, 0, dataIds[dataId]])) locationIds = inventory.canAddLocatables(locatables) for locationId in locationIds: if locationId in (Locations.INVALID_LOCATION, Locations.NON_LOCATION): base.localAvatar.guiMgr.createWarning(PLocalizer.InventoryFullWarning, PiratesGuiGlobals.TextFG6) return None continue else: itemQuantity = self.purchaseInventory.getItemQuantity(itemId) currStock = inventory.getStackQuantity(itemId) currStockLimit = inventory.getStackLimit(itemId) itemCategory = EconomyGlobals.getItemCategory(itemId) if currStock + itemQuantity >= currStockLimit: base.localAvatar.guiMgr.createWarning(PLocalizer.TradeItemFullWarning, PiratesGuiGlobals.TextFG6) return None self.purchaseInventory.addPanel(data) self.purchaseInventory.inventory.append(data) elif useCode == PiratesGuiGlobals.InventoryRemove: self.purchaseInventory.removePanel(data) panel = self.storeInventory.getPanel(data) if panel: self.checkPanel(panel, inventory, itemId) self.updateBalance()
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 checkLevel(self, repId, minLvl): inv = localAvatar.getInventory() if inv: repAmt = inv.getAccumulator(repId) if minLvl > ReputationGlobals.getLevelFromTotalReputation(repId, repAmt)[0]: self.highlightRed(PLocalizer.LevelRequirement % self.minLvl + ' ' + PLocalizer.InventoryItemClassNames.get(EconomyGlobals.getItemType(self.data[0])))