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

data.py (2353B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\dynamicresources\common\ess\data.py
      2 from fsdBuiltData.common.base import BuiltDataLoader
      3 try:
      4     import essReserveKeysLoader
      5 except ImportError:
      6     essReserveKeysLoader = None
      7 
      8 class EssReserveKeysDataLoader(BuiltDataLoader):
      9     __resBuiltFile__ = 'res:/staticdata/essReserveKeys.fsdbinary'
     10     __serverAutobuildBuiltFile__ = 'eve/autobuild/staticData/server/essReserveKeys.fsdbinary'
     11     __clientAutobuildBuiltFile__ = 'eve/autobuild/staticData/client/essReserveKeys.fsdbinary'
     12     __loader__ = essReserveKeysLoader
     13 
     14 
     15 class EssReserveKeysCache(object):
     16     __instance = None
     17 
     18     def __init__(self, loader):
     19         self._loader = loader
     20         self._is_primed = False
     21         self._ess_keys_by_type_id = {}
     22         self._loader.ConnectToOnReload(self.reset)
     23 
     24     @staticmethod
     25     def instance():
     26         if EssReserveKeysCache.__instance is None:
     27             EssReserveKeysCache.__instance = EssReserveKeysCache(EssReserveKeysDataLoader)
     28         return EssReserveKeysCache.__instance
     29 
     30     def __getitem__(self, ess_key_type_id):
     31         self._ensure_primed()
     32         return self._ess_keys_by_type_id[ess_key_type_id]
     33 
     34     def __iter__(self):
     35         self._ensure_primed()
     36         return self._ess_keys_by_type_id.itervalues()
     37 
     38     def all(self):
     39         self._ensure_primed()
     40         return self._ess_keys_by_type_id.values()
     41 
     42     def reload(self):
     43         self._loader.ReloadDataFromDisk()
     44 
     45     def reset(self):
     46         self._is_primed = False
     47         self._load_expert_systems_data()
     48 
     49     def _ensure_primed(self):
     50         if not self._is_primed:
     51             self._is_primed = True
     52             self._load_ess_key_data()
     53 
     54     def _load_ess_key_data(self):
     55         ess_key_data = self._loader.GetData()
     56         self._ess_keys_by_type_id = {data.keyTypeID:EssReserveBankKey(data) for data in ess_key_data.itervalues()}
     57 
     58 
     59 cache = EssReserveKeysCache.instance()
     60 
     61 class EssReserveBankKey(object):
     62 
     63     def __init__(self, data):
     64         self._data = data
     65 
     66     @property
     67     def type_id(self):
     68         return int(self._data.keyTypeID)
     69 
     70     @property
     71     def location_list(self):
     72         return self._data.locationListID
     73 
     74     @property
     75     def total_pulses(self):
     76         return self._data.totalPulses
     77 
     78 
     79 def get_key_by_type(key_type_id):
     80     return cache[key_type_id]