Ejemplo n.º 1
0
    def PostValidateCreatePin(self, charID, typeID, latitude, longitude):
        skills = sm.GetService('skills').GetSkills()
        if evetypes.GetGroupID(typeID) != const.groupCommandPins:
            basePrice = evetypes.GetBasePrice(typeID)
            totalIskCost = self.cumulativePinCreationCost + basePrice
            currentBalance = sm.GetService('wallet').GetWealth()
            if totalIskCost > currentBalance:
                raise UserError('CannotBuildNotEnoughCash',
                                {'cost': util.FmtISK(basePrice)})
            self.cumulativePinCreationCost += basePrice
        else:
            planetRows = sm.GetService('planetSvc').GetMyPlanets()
            if len(planetRows) > 0 and skills.get(const.typeOmnipotent,
                                                  None) is None:
                deploymentSkill = skills.get(
                    const.typeInterplanetaryConsolidation, None)
                if deploymentSkill is None:
                    raise UserError('CannotPlaceCommandCenterNotEnoughSkill',
                                    {'maxPlanets': 1})
                elif deploymentSkill.skillLevel < len(planetRows):
                    raise UserError('CannotPlaceCommandCenterNotEnoughSkill',
                                    {'maxPlanets': len(planetRows)})
        requiredSkills = sm.GetService('skills').GetRequiredSkills(typeID)
        lackingSkills = []
        for skillTypeID, level in requiredSkills.iteritems():
            skillRec = skills.get(skillTypeID, None)
            myLevel = getattr(skillRec, 'skillLevel', -1)
            if myLevel < level:
                if level:
                    levelTxt = localization.GetByLabel(
                        'UI/PI/Common/SkillLevel', skillLevel=level)
                else:
                    levelTxt = ''
                lacked = localization.GetByLabel(
                    'UI/PI/Common/SkillNameAndLevel',
                    skillName=evetypes.GetName(skillTypeID),
                    skillLevel=levelTxt)
                lackingSkills.append(lacked)

        if len(lackingSkills) > 0:
            raise UserError(
                'CannotPlacePinNotEnoughSkill', {
                    'requiredSkills': ', '.join(lackingSkills),
                    'itemName': evetypes.GetName(typeID)
                })
Ejemplo n.º 2
0
    def GetAveragePrice(self, typeID, days=7):
        history = self.GetPriceHistory(typeID)
        now = blue.os.GetWallclockTime()
        averagePrice = -1.0
        volume = 0
        priceVolume = 0.0
        for entry in history:
            if entry[0] < now - days * const.DAY:
                continue
            priceVolume += entry[3] * entry[4]
            volume += entry[4]

        if volume > 0:
            averagePrice = priceVolume / volume
        else:
            averagePrice = float(evetypes.GetBasePrice(
                typeID)) / evetypes.GetPortionSize(typeID)
            if averagePrice <= 0.0:
                averagePrice = 1.0
        return round(float(averagePrice), 2)
Ejemplo n.º 3
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)
Ejemplo n.º 4
0
 def PostValidateRemovePin(self, charID, pinID):
     pin = self.GetPin(pinID)
     typeID = pin.typeID
     if evetypes.GetGroupID(typeID) == const.groupExtractorPins:
         self.cumulativePinCreationCost -= evetypes.GetBasePrice(typeID)
Ejemplo n.º 5
0
 def RemoveCreationCost(self, typeID):
     self.cumulativePinCreationCost -= evetypes.GetBasePrice(typeID)
     if self.cumulativePinCreationCost < 0:
         self.cumulativePinCreationCost = 0L
Ejemplo n.º 6
0
def GetPriceByTagTypeID(typeIDs):
    return {typeID: evetypes.GetBasePrice(typeID) for typeID in typeIDs}