def GetSubSystemsByGroup(self): godma = sm.StartService('godma') if self.isPreview: subSystemsByGroupID = {} for groupID in evetypes.GetGroupIDsByCategory( const.categorySubSystem): if groupID not in subSystemsByGroupID: subSystemsByGroupID[groupID] = [] for typeID in evetypes.GetTypeIDsByGroup(groupID): if evetypes.IsPublished(typeID) and godma.GetTypeAttribute( typeID, const.attributeFitsToShipType) == self.ship.typeID: subSystemsByGroupID[groupID].append((typeID, typeID)) else: if not util.IsDocked(): return inv = sm.GetService('invCache').GetInventory(const.containerHangar) subSystemsByGroupID = {} for item in inv.List(const.flagHangar): if item.categoryID != const.categorySubSystem: continue if godma.GetTypeAttribute( item.typeID, const.attributeFitsToShipType) != self.ship.typeID: continue if item.groupID not in subSystemsByGroupID: subSystemsByGroupID[item.groupID] = [] subSystemsByGroupID[item.groupID].append( (item.typeID, item.itemID)) return subSystemsByGroupID
def Load(self): self.Flush() entries = [] bpData = sm.GetService('blueprintSvc').GetBlueprintByProduct( self.typeID) if bpData and evetypes.IsPublished(bpData.blueprintTypeID): entries.append( listentry.Get(decoClass=listentry.Header, data=KeyVal(label=localization.GetByLabel( 'UI/Industry/Blueprint')))) entries.append( listentry.Get(decoClass=listentry.Item, data=KeyVal(label=bpData.GetName(), typeID=bpData.blueprintTypeID, getIcon=1))) materials = cfg.invtypematerials.get(self.typeID) if materials: entries.append( listentry.Get(decoClass=listentry.Header, data=KeyVal(label=localization.GetByLabel( 'UI/Reprocessing/ReprocessedMaterials')))) for _, typeID, quantity in materials: entries.append( listentry.Get(decoClass=listentry.Item, data=KeyVal(label=localization.GetByLabel( 'UI/InfoWindow/TypeNameWithNumUnits', invType=typeID, qty=quantity), typeID=typeID, getIcon=1, quantity=quantity))) self.scroll = Scroll(parent=self, padding=const.defaultPadding) self.scroll.Load(contentList=entries)
def CreateUpgradeCache(self): upgradeGroups = {} sovSvc = sm.GetService('sov') itemData = sovSvc.GetInfrastructureHubItemData(self.hubID) self.billingCost = self.GetBillingCost(itemData) potentialGroupIDs = evetypes.GetGroupIDsByCategory( categoryInfrastructureUpgrade) groupIDsToAdd = set() for groupID in potentialGroupIDs: if evetypes.IsGroupPublishedByGroup(groupID): groupIDsToAdd.add(groupID) for eachGroupID in groupIDsToAdd: groupName = evetypes.GetGroupNameByGroup(eachGroupID) potentialTypeIDs = evetypes.GetTypeIDsByGroup(eachGroupID) typesForGroup = [] for eachTypeID in potentialTypeIDs: if evetypes.IsPublished(eachTypeID): typeInfo = self.GetTypeInfo(eachTypeID, itemData, sovSvc) typesForGroup.append(typeInfo) upgradeGroups[eachGroupID] = util.KeyVal(groupID=eachGroupID, groupName=groupName, types=typesForGroup) self.upgradeGroups = upgradeGroups.values() self.upgradeGroups.sort(key=lambda g: g.groupName) for groupInfo in self.upgradeGroups: groupInfo.types.sort(key=lambda t: t.typeName)
def GetItemsRequiringSkill(self, typeID, level): requiredBySkill = cfg.GetTypesRequiredBySkill(typeID).get(level, {}) publishedItemsBySkill = defaultdict(dict) for marketGroup, metaDict in requiredBySkill.iteritems(): for metaGroupID, typeIDs in metaDict.iteritems(): publishedTypeIDs = [ typeID for typeID in typeIDs if evetypes.IsPublished(typeID) ] if publishedTypeIDs: publishedItemsBySkill[marketGroup][metaGroupID] = publishedTypeIDs return dict(publishedItemsBySkill)
def PreviewType(self, typeID, subsystems=None): evetypes.RaiseIFNotExists(typeID) godma = sm.GetService('godma') if IsModularShip(typeID): if subsystems is None: subsystems = {} subSystemsForType = {} for groupID in evetypes.GetGroupIDsByCategory( const.categorySubSystem): if groupID not in subSystemsForType: subSystemsForType[groupID] = [] for typeID in evetypes.GetTypeIDsByGroup(groupID): if evetypes.IsPublished( typeID) and godma.GetTypeAttribute( typeID, const.attributeFitsToShipType) == typeID: subSystemsForType[groupID].append(typeID) for k, v in subSystemsForType.iteritems(): subsystems[k] = random.choice(v) model = sm.StartService('t3ShipSvc').GetTech3ShipFromDict( typeID, subsystems) else: dna = gfxutils.BuildSOFDNAFromTypeID(typeID) if dna is not None: spaceObjectFactory = sm.GetService( 'sofService').spaceObjectFactory model = spaceObjectFactory.BuildFromDNA(dna) else: fileName = inventorycommon.typeHelpers.GetGraphicFile(typeID) if fileName == '': log.LogWarn('type', typeID, 'has no graphicFile') return model = trinity.Load(fileName) if model is None: self.sceneContainer.ClearScene() raise UserError('PreviewNoModel') if getattr(model, 'boosters', None) is not None: model.boosters = None if getattr(model, 'modelRotationCurve', None) is not None: model.modelRotationCurve = None if getattr(model, 'modelTranslationCurve', None) is not None: model.modelTranslationCurve = None if hasattr(model, 'ChainAnimationEx'): model.ChainAnimationEx('NormalLoop', 0, 0, 1.0) self._CreateRotationCurve(model) self.sceneContainer.AddToScene(model) camera = self.sceneContainer.camera if camera is not None: rad = model.GetBoundingSphereRadius() minZoom = rad + camera.frontClip camera.translationFromParent = minZoom * 2 self.sceneContainer.UpdateViewPort()
def GetAllSkills(self): if not self.allskills: self.allskills = {} for typeID in evetypes.GetTypeIDsByCategory(const.categorySkill): if evetypes.IsPublished(typeID): self.allskills[typeID] = KeyVal( typeID=typeID, skillLevel=0, skillPoints=0, skillRank=self.GetSkillRank(typeID)) return self.allskills
def GetMarketTypes(): data = [] for typeID in evetypes.Iterate(): blue.pyos.BeNice() if evetypes.IsPublished(typeID) and evetypes.IsGroupPublished( typeID) and evetypes.IsCategoryPublished(typeID): data.append( util.KeyVal(typeID=typeID, marketGroupID=evetypes.GetMarketGroupID(typeID), typeName=evetypes.GetName(typeID))) return data
def GetRequiredForLevelGroupMetaSubContent(self, data): skillTypeID = data['typeID'] skillLevel = data['skillLevel'] skillMarketGroup = data['marketGroupID'] metaLevel = data['metaLevel'] scrolllist = [] reqFor = self.GetItemsRequiringSkill(skillTypeID, skillLevel)[skillMarketGroup][metaLevel] for typeID in reqFor: if not evetypes.IsPublished(typeID): continue data = {'label': evetypes.GetName(typeID), 'sublevel': 3, 'typeID': typeID, 'showinfo': True, 'getIcon': True} scrolllist.append(listentry.Get('Item', data)) return scrolllist
def LoadStructureScroll(self, buildEntry, groupEnabled, color): scrolllist = [] if buildEntry.groupID == const.groupPlanetaryLinks: data = util.KeyVal( label=localization.GetByLabel('UI/PI/Common/CreateLink'), createLink=True, hideLines=1, fontColor=(self.COLOR_DISABLED, self.COLOR_ENABLED)[groupEnabled], OnClick=self.OnBuildEntryClicked, ignoreRightClick=True) scrolllist.append(('', listentry.Get('Generic', data=data))) else: for typeID in self.GetStructuresForGroup(buildEntry.groupID): if not evetypes.IsPublished(typeID): continue data = util.KeyVal(label=evetypes.GetName(typeID), typeID=typeID, hideLines=1, ignoreRightClick=True) isEnabled, hint = self.IsBuildEntryEnabled( buildEntry.groupID, typeID, groupEnabled) if isEnabled: data.OnClick = self.OnBuildEntryClicked data.fontColor = self.COLOR_ENABLED else: data.fontColor = self.COLOR_DISABLED data.hint = hint if buildEntry.groupID == const.groupCommandPins: sortBy = evetypes.GetBasePrice(typeID) else: sortBy = data.label.lower() scrolllist.append((sortBy, listentry.Get('Generic', data=data))) scrolllist = uiutil.SortListOfTuples(scrolllist) buildEntry.structureScroll.Load(contentList=scrolllist)
def GetRequiredForLevelGroupSubContent(self, data, *args): scrolllist = [] skillTypeID = data['typeID'] skillLevel = data['skillLevel'] skillMarketGroup = data['marketGroupID'] requiredFor = self.GetItemsRequiringSkill(skillTypeID, skillLevel)[skillMarketGroup] if const.metaGroupUnused in requiredFor: for typeID in requiredFor[const.metaGroupUnused]: if not evetypes.IsPublished(typeID): continue data = {'label': evetypes.GetName(typeID), 'sublevel': 1, 'typeID': typeID, 'showinfo': True, 'getIcon': True} scrolllist.append(listentry.Get('Item', data)) for metaLevel in requiredFor.keys(): if metaLevel == const.metaGroupUnused: continue data = {'GetSubContent': self.GetRequiredForLevelGroupMetaSubContent, 'id': ('skillGroups_Meta', metaLevel), 'label': cfg.invmetagroups.Get(metaLevel).metaGroupName, 'groupItems': requiredFor[metaLevel], 'state': 'locked', 'sublevel': 1, 'showicon': uix.GetTechLevelIconID(metaLevel), 'metaLevel': metaLevel, 'BlockOpenWindow': True, 'typeID': skillTypeID, 'skillLevel': skillLevel, 'marketGroupID': skillMarketGroup, 'typeIDs': requiredFor[metaLevel], 'showlen': False} scrolllist.append(listentry.Get('MarketMetaGroupEntry', data)) return scrolllist
def CheckSubsystemValid(subsystemTypeID): fitsToType = sm.GetService('godma').GetTypeAttribute( subsystemTypeID, const.attributeFitsToShipType) return evetypes.IsPublished(typeID) and fitsToType == typeID
def Execute(self, banID, numBans, curBans, deadline, respondToNodeID, shipList): self.banID = banID self.deadline = deadline self.respondToNodeID = respondToNodeID self.resetButton = uicontrols.Button( label='Submit Ban' if numBans > 0 else 'Okay', parent=self.sr.main, align=uiconst.TOBOTTOM, func=self.Submit, state=uiconst.UI_NORMAL, padding=5) uicontrols.EveLabelLarge(text="Let's ban some ships!" if numBans > 0 else "Here's the bans:", parent=self.sr.main, align=uiconst.TOTOP, top=10, padding=5, color=(0.5, 0.5, 1, 1)) uicontrols.Label(text='You have banned:', parent=self.sr.main, align=uiconst.TOTOP, top=5, padding=5) uicontrols.Label(text='<br>'.join( [evetypes.GetName(typeID) for typeID in curBans[0]]), padding=5, parent=self.sr.main, align=uiconst.TOTOP) uicontrols.Label(text='They have banned:', parent=self.sr.main, align=uiconst.TOTOP, top=5, padding=5) uicontrols.Label(text='<br>'.join( [evetypes.GetName(typeID) for typeID in curBans[1]]), padding=5, parent=self.sr.main, align=uiconst.TOTOP) ships = [] for typeID in evetypes.GetTypeIDsByCategory(const.categoryShip): if typeID in [tup[1] for tup in shipList]: if evetypes.IsPublished(typeID): name = evetypes.GetName(typeID) if not name.startswith('[no messageID:'): ships.append((name, typeID)) banOptions = [('Pass', -1)] + sorted(ships) self.banChoices = [] for banNum in xrange(numBans): self.banChoices.append( uicontrols.Combo(label='Ban: ', parent=self.sr.main, options=banOptions, top=20, padding=5, align=uiconst.TOTOP)) if numBans > 0: banCont = uiprimitives.Container(name='banTimer', parent=self.sr.main, align=uiconst.TOTOP, height=50) self.countdownText = uicontrols.Label(parent=banCont, align=uiconst.CENTER, fontsize=36, color=(1, 0, 0, 1)) self.countdownTimer = base.AutoTimer(100, self.UpdateTimer) uicore.registry.SetFocus(self) self.MakeUnKillable()
def Published(skill): return evetypes.IsPublished(skill.typeID)