sovereigntyHub.py (5958B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\environment\spaceObject\sovereigntyHub.py 2 import logging 3 import uthread 4 from eve.client.script.environment.spaceObject.spaceObject import SpaceObject 5 from evegraphics.logoLoader import LogoLoader 6 from sovereignty.client.sovHub import hubConst 7 from sovereignty.upgrades.client.errors import SovUpgradeDataUnavailableError 8 from sovereignty.workforce.client.errors import SovWorkforceError 9 logger = logging.getLogger(__name__) 10 11 class SovereigntyHub(SpaceObject): 12 13 def __init__(self): 14 SpaceObject.__init__(self) 15 self.upgrades = {} 16 self.fitted = False 17 self.miningUpgradesOnline = 0 18 self.logoLoader = LogoLoader((LogoLoader.ALLIANCE, LogoLoader.CORP, LogoLoader.CEO)) 19 20 def OnSlimItemUpdated(self, slimItem): 21 self.SetControllerVariablesFromSlimItem(slimItem) 22 uthread.new(self.logoLoader.Load, self.model, slimItem) 23 24 def _SetMuActive(self): 25 if self.miningUpgradesOnline > 0: 26 self.model.SetControllerVariable(hubConst.CTRL_MINING, hubConst.CTRL_ON) 27 else: 28 self.model.SetControllerVariable(hubConst.CTRL_MINING, hubConst.CTRL_OFF) 29 30 def SetUpgradeControllerVariables(self, upgradeTypeId, isBuilt, isOnline): 31 for upgradesMember in hubConst.UPGRADES_MAPPINGS: 32 if upgradeTypeId in upgradesMember: 33 if upgradeTypeId in hubConst.MINING_UPGRADES and isOnline: 34 self.miningUpgradesOnline += 1 35 isBuiltVariable = upgradesMember[0] + hubConst.CTRL_IS_BUILT 36 self.model.SetControllerVariable(isBuiltVariable, hubConst.CTRL_ON if isBuilt else hubConst.CTRL_OFF) 37 lowPowerVariable = upgradesMember[0] + hubConst.CTRL_LOW_POWER 38 self.model.SetControllerVariable(lowPowerVariable, hubConst.CTRL_ON if not isOnline else hubConst.CTRL_OFF) 39 40 if upgradeTypeId in hubConst.STARTUP_CTRL_VALUES.keys(): 41 ctrl_variables = hubConst.STARTUP_CTRL_VALUES[upgradeTypeId] 42 for i in range(len(ctrl_variables['name'])): 43 self.model.SetControllerVariable(ctrl_variables['name'][i], ctrl_variables['value'][i]) 44 45 def _UpdateInstalledUpgrades(self, slimItem): 46 sovHubSvc = sm.GetService('sovHubSvc') 47 try: 48 installedUpgrades = sovHubSvc.GetInstalledUpgradesLocal(slimItem.itemID) 49 except SovUpgradeDataUnavailableError as e: 50 logger.warning('spaceobject.SovereigntyHub - Failed to get installed upgrades for hub %s - %s', slimItem.itemID, e) 51 installedUpgrades = [] 52 53 self.miningUpgradesOnline = 0 54 for upgrade in installedUpgrades: 55 self.SetUpgradeControllerVariables(upgrade.upgrade_type_id, True, upgrade.is_power_online) 56 self.upgrades[upgrade.upgrade_type_id] = (True, upgrade.is_power_online) 57 58 self._SetMuActive() 59 60 def OnUpgradesUpdated(self, installedUpgrades): 61 installedUpgradesTypeIds = [ upgrade.upgrade_type_id for upgrade in installedUpgrades ] 62 self.miningUpgradesOnline = 0 63 for upgradeTypeID in self.upgrades.keys(): 64 if upgradeTypeID not in installedUpgradesTypeIds: 65 self.SetUpgradeControllerVariables(upgradeTypeID, False, False) 66 self.upgrades.pop(upgradeTypeID, None) 67 68 for installedUpgrade in installedUpgrades: 69 self.SetUpgradeControllerVariables(installedUpgrade.upgrade_type_id, True, installedUpgrade.is_power_online) 70 if installedUpgrade.upgrade_type_id not in self.upgrades.keys(): 71 self.upgrades[installedUpgrade.upgrade_type_id] = (True, installedUpgrade.is_power_online) 72 73 self._SetMuActive() 74 75 def OnWorkforceTransportUpdated(self, transportState): 76 transportStateVariable = hubConst.PopulationTransportVFX + hubConst.CTRL_TRANSPORT_STATE 77 lowPowerVariable = hubConst.PopulationTransportVFX + hubConst.CTRL_LOW_POWER 78 if transportState in hubConst.WORKFORCE_MAPPINGS.keys(): 79 self.model.SetControllerVariable(transportStateVariable, hubConst.WORKFORCE_MAPPINGS.get(transportState)) 80 self.model.SetControllerVariable(lowPowerVariable, hubConst.CTRL_OFF) 81 else: 82 self.model.SetControllerVariable(lowPowerVariable, hubConst.CTRL_ON) 83 84 def UpdateWorkforceTransportState(self, slimItem): 85 sovHubSvc = sm.GetService('sovHubSvc') 86 try: 87 transportState = sovHubSvc.GetWorkforceConfiguration(slimItem.itemID).get_mode() 88 except SovWorkforceError as e: 89 logger.warning('spaceobject.SovereigntyHub - Failed to get workforce configuration for hub %s - %s', slimItem.itemID, e) 90 return 91 92 self.OnWorkforceTransportUpdated(transportState) 93 94 def LoadModel(self, fileName = None, loadedModel = None, notify = True, addToScene = True): 95 self.model = self._SetupModelAndAddToScene(fileName, loadedModel, addToScene) 96 if self.model is None: 97 return 98 self.SetStaticRotation() 99 slimItem = self.typeData.get('slimItem') 100 uthread.new(self._UpdateInstalledUpgrades, slimItem) 101 uthread.new(self.UpdateWorkforceTransportState, slimItem) 102 uthread.new(self.logoLoader.Load, self.model, slimItem) 103 self.SetupAnimationInformation(self.model) 104 if notify: 105 self.NotifyModelLoaded() 106 107 108 def UpdateUpgradesOnUpgradesUpdated(sovHubID, installedUpgrades): 109 try: 110 sovHub = sm.GetService('michelle').GetBall(sovHubID) 111 if sovHub: 112 sovHub.OnUpgradesUpdated(installedUpgrades) 113 except KeyError: 114 pass 115 116 117 def UpdateWorkforceTransportState(sovHubID, workforceConfiguration): 118 try: 119 sovHub = sm.GetService('michelle').GetBall(sovHubID) 120 if sovHub: 121 sovHub.OnWorkforceTransportUpdated(workforceConfiguration.get_mode()) 122 except KeyError: 123 pass