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