Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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()
Пример #6
0
    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
Пример #7
0
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
Пример #8
0
    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
Пример #9
0
    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)
Пример #10
0
    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
Пример #11
0
 def CheckSubsystemValid(subsystemTypeID):
     fitsToType = sm.GetService('godma').GetTypeAttribute(
         subsystemTypeID, const.attributeFitsToShipType)
     return evetypes.IsPublished(typeID) and fitsToType == typeID
Пример #12
0
    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()
Пример #13
0
 def Published(skill):
     return evetypes.IsPublished(skill.typeID)