Tweak to include human-readable rig sizes, and more tweaks to the attribute grouping definitions
This commit is contained in:
@@ -562,6 +562,15 @@ class Unit(EqBase):
|
||||
self.name = None
|
||||
self.displayName = None
|
||||
|
||||
@property
|
||||
def rigSizes(self):
|
||||
return {
|
||||
1: "Small",
|
||||
2: "Medium",
|
||||
3: "Large",
|
||||
4: "X-Large"
|
||||
}
|
||||
|
||||
@property
|
||||
def translations(self):
|
||||
""" This is a mapping of various tweaks that we have to do between the internal representation of an attribute
|
||||
@@ -585,8 +594,8 @@ class Unit(EqBase):
|
||||
lambda d: d,
|
||||
lambda u: "m³"),
|
||||
"Sizeclass": (
|
||||
lambda v: v,
|
||||
lambda d: d,
|
||||
lambda v: self.rigSizes[v],
|
||||
lambda d: next(i for i in self.rigSizes.keys() if self.rigSizes[i] == 'Medium'),
|
||||
lambda u: ""),
|
||||
"Absolute Percent": (
|
||||
lambda v: (v * 100),
|
||||
|
||||
@@ -26,21 +26,36 @@ class AttrGroup(Enum):
|
||||
FIGHTERS = 12
|
||||
|
||||
|
||||
# todo: instead of defining the attribute grouping as "grouped attributes" vs "normal attributes",
|
||||
# define the liast of grouped attributes outside. When iterating over attributes, can then find
|
||||
# the first one and apply them all
|
||||
RequiredSkillAttrs = sum((["requiredSkill{}".format(x), "requiredSkill{}Level".format(x)] for x in range(1, 7)), [])
|
||||
|
||||
|
||||
AttrGroupDict = {
|
||||
AttrGroup.FITTING : {
|
||||
AttrGroupingType.LABEL: "Fitting",
|
||||
AttrGroupingType.LABEL : "Fitting",
|
||||
AttrGroupingType.NORMAL: [
|
||||
# parent-level attributes
|
||||
"cpuOutput",
|
||||
"powerOutput",
|
||||
"upgradeCapacity",
|
||||
"hiSlots",
|
||||
"medSlots",
|
||||
"lowSlots",
|
||||
"serviceSlots",
|
||||
"turretSlotsLeft",
|
||||
"launcherSlotsLeft",
|
||||
"upgradeSlotsLeft",
|
||||
# child-level attributes
|
||||
"cpu",
|
||||
"power",
|
||||
"rigSize",
|
||||
"upgradeCost",
|
||||
"attributeMass", ]
|
||||
# "mass",
|
||||
]
|
||||
},
|
||||
AttrGroup.STRUCTURE : {
|
||||
AttrGroupingType.LABEL: "Structure",
|
||||
AttrGroupingType.LABEL : "Structure",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"hp",
|
||||
"capacity",
|
||||
@@ -72,7 +87,7 @@ AttrGroupDict = {
|
||||
]
|
||||
},
|
||||
AttrGroup.ARMOR : {
|
||||
AttrGroupingType.LABEL: "Armor",
|
||||
AttrGroupingType.LABEL : "Armor",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"armorHP",
|
||||
"armorDamageLimit"
|
||||
@@ -86,7 +101,7 @@ AttrGroupDict = {
|
||||
|
||||
},
|
||||
AttrGroup.SHIELD : {
|
||||
AttrGroupingType.LABEL: "Shield",
|
||||
AttrGroupingType.LABEL : "Shield",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"shieldCapacity",
|
||||
"shieldRechargeRate",
|
||||
@@ -101,7 +116,7 @@ AttrGroupDict = {
|
||||
|
||||
},
|
||||
AttrGroup.EWAR_RESISTS : {
|
||||
AttrGroupingType.LABEL: "Electronic Warfare",
|
||||
AttrGroupingType.LABEL : "Electronic Warfare",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"ECMResistance",
|
||||
"remoteAssistanceImpedance",
|
||||
@@ -114,14 +129,14 @@ AttrGroupDict = {
|
||||
]
|
||||
},
|
||||
AttrGroup.CAPACITOR : {
|
||||
AttrGroupingType.LABEL: "Capacitor",
|
||||
AttrGroupingType.LABEL : "Capacitor",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"capacitorCapacity",
|
||||
"rechargeRate",
|
||||
]
|
||||
},
|
||||
AttrGroup.TARGETING : {
|
||||
AttrGroupingType.LABEL: "Targeting",
|
||||
AttrGroupingType.LABEL : "Targeting",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"maxTargetRange",
|
||||
"maxRange",
|
||||
@@ -134,22 +149,22 @@ AttrGroupDict = {
|
||||
"trackingSpeed",
|
||||
],
|
||||
AttrGroupingType.SENSOR: [
|
||||
"scanLadarStrength",
|
||||
"scanRadarStrength",
|
||||
"scanMagnetometricStrength",
|
||||
"scanGravimetricStrength",
|
||||
"scanRadarStrength",
|
||||
"scanLadarStrength",
|
||||
]
|
||||
},
|
||||
AttrGroup.SHARED_FACILITIES : {
|
||||
AttrGroupingType.LABEL: "Shared Facilities",
|
||||
AttrGroupingType.LABEL : "Shared Facilities",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"shipMaintenanceBayCapacity",
|
||||
"fleetHangarCapacity",
|
||||
"shipMaintenanceBayCapacity",
|
||||
"maxJumpClones",
|
||||
]
|
||||
},
|
||||
AttrGroup.FIGHTER_FACILITIES: {
|
||||
AttrGroupingType.LABEL: "Fighter Squadron Facilities",
|
||||
AttrGroupingType.LABEL : "Fighter Squadron Facilities",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"fighterCapacity",
|
||||
"fighterTubes",
|
||||
@@ -162,7 +177,7 @@ AttrGroupDict = {
|
||||
]
|
||||
},
|
||||
AttrGroup.ON_DEATH : {
|
||||
AttrGroupingType.LABEL: "On Death",
|
||||
AttrGroupingType.LABEL : "On Death",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"onDeathDamageEM",
|
||||
"onDeathDamageTherm",
|
||||
@@ -173,7 +188,7 @@ AttrGroupDict = {
|
||||
]
|
||||
},
|
||||
AttrGroup.JUMP_SYSTEMS : {
|
||||
AttrGroupingType.LABEL: "Jump Drive Systems",
|
||||
AttrGroupingType.LABEL : "Jump Drive Systems",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"jumpDriveCapacitorNeed",
|
||||
"jumpDriveRange",
|
||||
@@ -187,13 +202,13 @@ AttrGroupDict = {
|
||||
]
|
||||
},
|
||||
AttrGroup.PROPULSIONS : {
|
||||
AttrGroupingType.LABEL: "Propulsion",
|
||||
AttrGroupingType.LABEL : "Propulsion",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"maxVelocity"
|
||||
]
|
||||
},
|
||||
AttrGroup.FIGHTERS : {
|
||||
AttrGroupingType.LABEL: "Fighters",
|
||||
AttrGroupingType.LABEL : "Fighters",
|
||||
AttrGroupingType.NORMAL: [
|
||||
"mass",
|
||||
"maxVelocity",
|
||||
@@ -208,6 +223,7 @@ AttrGroupDict = {
|
||||
}
|
||||
|
||||
Group1 = [
|
||||
AttrGroup.FITTING,
|
||||
AttrGroup.STRUCTURE,
|
||||
AttrGroup.ARMOR,
|
||||
AttrGroup.SHIELD,
|
||||
|
||||
@@ -9,9 +9,13 @@ from gui.builtinItemStatsViews.helpers import AutoListCtrl
|
||||
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.utils.numberFormatter import formatAmount
|
||||
from enum import Enum
|
||||
from enum import IntEnum
|
||||
from gui.builtinItemStatsViews.attributeGrouping import *
|
||||
|
||||
class AttributeView(IntEnum):
|
||||
NORMAL = 1
|
||||
RAW = -1
|
||||
|
||||
|
||||
class ItemParams(wx.Panel):
|
||||
def __init__(self, parent, stuff, item, context=None):
|
||||
@@ -189,9 +193,6 @@ class ItemParams(wx.Panel):
|
||||
if self.stuff is not None:
|
||||
self.paramList.SetItemText(attr_item , baseVal, 2)
|
||||
self.paramList.SetItemImage(attr_item , attrIcon, which=wx.TreeItemIcon_Normal)
|
||||
attr_item.SetTextX(-100)
|
||||
|
||||
print("{} has x: {}".format(attrName, attr_item.GetTextX()))
|
||||
processed_attribs.add(attr)
|
||||
|
||||
resists = data.get(AttrGroupingType.RESIST, [])
|
||||
@@ -207,8 +208,11 @@ class ItemParams(wx.Panel):
|
||||
self.paramList.SetItemText(attr_item , baseVal, 2)
|
||||
self.paramList.SetItemImage(attr_item , attrIcon, which=wx.TreeItemIcon_Normal)
|
||||
processed_attribs.add(attr)
|
||||
print("{} has x: {}".format(attrName, attr_item.GetTextX()))
|
||||
self.paramList.Expand(resist_item)
|
||||
|
||||
if self.paramList.GetChildrenCount(resist_item) == 0:
|
||||
self.paramList.Delete(resist_item)
|
||||
else:
|
||||
self.paramList.Expand(resist_item)
|
||||
|
||||
sensors = data.get(AttrGroupingType.SENSOR, [])
|
||||
if len(sensors) > 0:
|
||||
@@ -223,10 +227,16 @@ class ItemParams(wx.Panel):
|
||||
self.paramList.SetItemText(attr_item, baseVal, 2)
|
||||
self.paramList.SetItemImage(attr_item, attrIcon, which=wx.TreeItemIcon_Normal)
|
||||
processed_attribs.add(attr)
|
||||
print("{} has x: {}".format(attrName, attr_item.GetTextX()))
|
||||
self.paramList.Expand(sensor_item)
|
||||
|
||||
self.paramList.Expand(header_item)
|
||||
if self.paramList.GetChildrenCount(resist_item) == 0:
|
||||
self.paramList.Delete(sensor_item)
|
||||
else:
|
||||
self.paramList.Expand(sensor_item)
|
||||
|
||||
if self.paramList.GetChildrenCount(header_item) == 0:
|
||||
self.paramList.Delete(header_item)
|
||||
else:
|
||||
self.paramList.Expand(header_item)
|
||||
|
||||
misc_parent = self.paramList.AppendItem(root, "Miscellaneous")
|
||||
|
||||
@@ -239,6 +249,8 @@ class ItemParams(wx.Panel):
|
||||
if name in processed_attribs:
|
||||
continue
|
||||
|
||||
if self.toggleView == AttributeView.NORMAL and not self.attrInfo.get(name).published:
|
||||
continue
|
||||
|
||||
attrIcon, attrName, currentVal, baseVal = self.GetData(name)
|
||||
attr_item = self.paramList.AppendItem(misc_parent, attrName)
|
||||
@@ -316,7 +328,8 @@ class ItemParams(wx.Panel):
|
||||
else:
|
||||
valueUnitDefault = formatAmount(valueDefault, 3, 0, 0)
|
||||
|
||||
return (attrIcon, attrName, valueUnit, valueUnitDefault)
|
||||
# todo: attribute that point to another item should load that item's icon.
|
||||
return (attrIcon, attrName + " {}".format(info.published), valueUnit, valueUnitDefault)
|
||||
|
||||
# self.paramList.SetItemText(index, valueUnit, 1)
|
||||
# if self.stuff is not None:
|
||||
@@ -344,10 +357,15 @@ if __name__ == "__main__":
|
||||
os.chdir('..')
|
||||
import config
|
||||
config.defPaths(None)
|
||||
|
||||
config.debug = True
|
||||
class Frame(wx.Frame):
|
||||
def __init__(self, ):
|
||||
item = eos.db.getItem(23773) # Ragnarok
|
||||
# item = eos.db.getItem(23773) # Ragnarok
|
||||
# item = eos.db.getItem(23061) # Einherji I
|
||||
item = eos.db.getItem(24483) # Nidhoggur
|
||||
# item = eos.db.getItem(587) # Rifter
|
||||
# item = eos.db.getItem(2486) # Warrior I
|
||||
#item = eos.db.getItem(526) # Stasis Webifier I
|
||||
super().__init__(None, title="Test Attribute Window | {} - {}".format(item.ID, item.name), size=(1000, 500))
|
||||
|
||||
if 'wxMSW' in wx.PlatformInfo:
|
||||
|
||||
Reference in New Issue
Block a user