NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

mercDenUiController.py (3211B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\planet\mecDen\mercDenUiController.py
      2 import sys
      3 from clientsettings.setting import CharSettingNumeric
      4 from clonegrade import CLONE_STATE_ALPHA
      5 from eve.client.script.ui.shared.planet.mecDen.mercDenUtil import MercDenEntryInfo
      6 from localization import GetByLabel
      7 from omega.client.clone_grade_svc import get_clone_grade_svc
      8 from sovereignty.mercenaryden.client.repository import get_mercenary_den_repository
      9 from sovereignty.mercenaryden.common.errors import ServiceUnavailable, UnknownMercenaryDen, GenericError
     10 
     11 class MercDenUiController(object):
     12 
     13     def __init__(self):
     14         self._absoluteMaxDens = None
     15         self._myMaxDens = None
     16         self._repository = get_mercenary_den_repository()
     17         self.selectedSetting = CharSettingNumeric('mercDenSelected', 0, 0, sys.maxsize)
     18 
     19     def GetEntryInfosForMyMercDens(self):
     20         mercDenIDs = self._repository.get_my_mercenary_dens_ids()
     21         if not mercDenIDs:
     22             return []
     23         activites = self._repository.get_all_mercenary_den_activities_for_character()
     24         mercDens = []
     25         for eachID in mercDenIDs:
     26             mercDen = self.GetMercDenEntryInfo(eachID, activites)
     27             mercDens.append(mercDen)
     28 
     29         return mercDens
     30 
     31     def GetMercDenEntryInfo(self, itemID, activites = None):
     32         try:
     33             if activites is None:
     34                 activites = self._repository.get_all_mercenary_den_activities_for_character()
     35             mercDen = self._repository.get_mercenary_den(itemID)
     36             activitesForDen = [ x for x in activites if x.den_id == itemID ]
     37             return MercDenEntryInfo(itemID, mercDen, activitesForDen)
     38         except (ServiceUnavailable, UnknownMercenaryDen, GenericError):
     39             return MercDenEntryInfo(itemID)
     40 
     41     @property
     42     def absoluteMaxDenNum(self):
     43         if self._absoluteMaxDens is None:
     44             self._fetch_max_dens()
     45         return self._absoluteMaxDens
     46 
     47     @property
     48     def myMaxDenNum(self):
     49         if self._myMaxDens is None:
     50             self._fetch_max_dens()
     51         return self._myMaxDens
     52 
     53     def _fetch_max_dens(self):
     54         self._myMaxDens, self._absoluteMaxDens = self._repository.get_maximum_dens_for_character()
     55 
     56     def ClearMyMaxDens(self):
     57         self._myMaxDens = None
     58 
     59     def GetDeployedDensText(self, numDens):
     60         if self.absoluteMaxDenNum is None or self.myMaxDenNum is None:
     61             return GetByLabel('UI/Sovereignty/MercenaryDen/MyMercenaryDensWindow/InfoNotAvailable')
     62         return GetByLabel('UI/Sovereignty/MercenaryDen/MyMercenaryDensWindow/NumMyDensAndMax', numMyDens=numDens, numMax=self.myMaxDenNum)
     63 
     64     def SelectEntry(self, itemID):
     65         self.selectedSetting.set(itemID)
     66 
     67     def GetSelectedItemID(self):
     68         return self.selectedSetting.get()
     69 
     70     def IsAlpha(self):
     71         clone_state = get_clone_grade_svc().get_clone_grade_with_grace_period()
     72         return clone_state == CLONE_STATE_ALPHA
     73 
     74     def CanTrainMoreSkills(self):
     75         if self.absoluteMaxDenNum is None:
     76             return False
     77         if self.myMaxDenNum < self.absoluteMaxDenNum:
     78             return True
     79         return False