Tweak to include human-readable rig sizes, and more tweaks to the attribute grouping definitions

This commit is contained in:
blitzmann
2018-10-14 03:42:33 -04:00
parent d21ccef269
commit 46ece5da0c
3 changed files with 75 additions and 32 deletions

View File

@@ -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: ""),
"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),

View File

@@ -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,

View File

@@ -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: