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]