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

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