fakeDataUtil.py (5640B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\evemap\map2d\fakeData\fakeDataUtil.py 2 from __future__ import print_function 3 from brennivin.itertoolsext import Bundle 4 from collections import defaultdict 5 import json 6 import os 7 from utillib import KeyVal 8 try: 9 from blue import pyos, paths 10 except ImportError: 11 pyos = None 12 paths = None 13 14 FILE_NAME_KILLS = 'kills.json' 15 KEY_PILOTS_BY_SOLARSYSTEM = 'pilotsBySolarSystemIDs' 16 FILE_NAME_PILOTS_BY_SOLARSYSTEM = 'pilotsBySolarSystemIDs.json' 17 KEY_FLEET_BEACON = 'cynoFleetBeacons' 18 KEY_SYSTEM_CYNO = 'cynoSystemBeacons' 19 FILE_NAME_CYNO = 'cyno.json' 20 KEY_FACTIONS = 'factionsBySolarSystemID' 21 FILE_NAME_FACTIONS = 'factions.json' 22 KEY_JB = 'jumpBridges' 23 KEY_JB_GATES = 'jumpBridgesGates' 24 KEY_JB_ACCESS = 'hasAccessTo' 25 KEY_JB_NOACCESS = 'hasNoAccessTo' 26 FILE_NAME_JB = 'jumpBridges.json' 27 28 def get_fake_data_path(fileName): 29 return os.path.join(_get_root(), '%s' % fileName) 30 31 32 def _GetCurrentFakeDataDict(fileName): 33 fakeDataPath = get_fake_data_path(fileName) 34 fakeDataDict = defaultdict(dict) 35 if os.path.exists(fakeDataPath): 36 with open(fakeDataPath, 'r') as f: 37 fileDict = json.load(f) 38 fakeDataDict.update(fileDict) 39 return fakeDataDict 40 41 42 def _get_root(): 43 root = os.path.dirname(__file__) 44 return root 45 46 47 def _SaveToFile(fileName, fakeDataDict): 48 fakeDataPath = get_fake_data_path(fileName) 49 with open(fakeDataPath, 'w') as f: 50 json.dump(fakeDataDict, f, indent=4, sort_keys=True) 51 print('done saving') 52 53 54 def SaveKillsDataToDict(statKey, data): 55 fakeDataPath = get_fake_data_path(FILE_NAME_KILLS) 56 fakeDataDict = defaultdict(dict) 57 if os.path.exists(fakeDataPath): 58 with open(fakeDataPath, 'r') as f: 59 fileDict = json.load(f) 60 fakeDataDict.update(fileDict) 61 for sID, value1, value2, value3 in data: 62 fakeDataDict[statKey][str(sID)] = {'value1': value1, 63 'value2': value2, 64 'value3': value3} 65 66 with open(fakeDataPath, 'w') as f: 67 json.dump(fakeDataDict, f, indent=4, sort_keys=True) 68 69 70 def GetKillsFakeData(statKey): 71 fakeDataDict = _GetCurrentFakeDataDict(FILE_NAME_KILLS) 72 if statKey not in fakeDataDict: 73 return [] 74 ret = [] 75 for sID, valuesDict in fakeDataDict[statKey].iteritems(): 76 ret.append(Bundle(solarSystemID=int(sID), value1=valuesDict['value1'], value2=valuesDict['value2'], value3=valuesDict['value3'])) 77 78 return ret 79 80 81 def GetInfoOnPilotsBySolarSystemIDs(): 82 fakeDataDict = _GetCurrentFakeDataDict(FILE_NAME_PILOTS_BY_SOLARSYSTEM) 83 if KEY_PILOTS_BY_SOLARSYSTEM not in fakeDataDict: 84 return {} 85 ret = {} 86 for sID, valuesDict in fakeDataDict[KEY_PILOTS_BY_SOLARSYSTEM].iteritems(): 87 ret[int(sID)] = Bundle(amountDocked=int(valuesDict['amountDocked']), amountInSpace=int(valuesDict['amountInSpace'])) 88 89 return ret 90 91 92 def SavePilotsBySolarSystemIDs(data): 93 fileName = FILE_NAME_PILOTS_BY_SOLARSYSTEM 94 fakeDataDict = _GetCurrentFakeDataDict(fileName) 95 for sID, amountDocked, amountInSpace in data: 96 fakeDataDict[KEY_PILOTS_BY_SOLARSYSTEM][str(sID)] = {'amountInSpace': amountInSpace, 97 'amountDocked': amountDocked} 98 99 _SaveToFile(fileName, fakeDataDict) 100 101 102 def GetCynoInfo(): 103 fakeDataDict = _GetCurrentFakeDataDict(FILE_NAME_CYNO) 104 cynoFleetBeacons = {} 105 for sID, numBeacons in fakeDataDict[KEY_FLEET_BEACON].iteritems(): 106 cynoFleetBeacons[int(sID)] = numBeacons 107 108 cynoSystemBeacons = set() 109 for sID in fakeDataDict[KEY_SYSTEM_CYNO].iterkeys(): 110 cynoSystemBeacons.add(int(sID)) 111 112 return (cynoFleetBeacons, cynoSystemBeacons) 113 114 115 def SaveCynoInfo(fleetBeacons, solarSystemsWithBeacons): 116 fileName = FILE_NAME_CYNO 117 fakeDataDict = _GetCurrentFakeDataDict(fileName) 118 for sID, value in fleetBeacons.iteritems(): 119 fakeDataDict[KEY_FLEET_BEACON][str(sID)] = value 120 121 for sID in solarSystemsWithBeacons: 122 fakeDataDict[KEY_SYSTEM_CYNO][str(sID)] = True 123 124 _SaveToFile(fileName, fakeDataDict) 125 126 127 def GetFactions(): 128 fakeDataDict = _GetCurrentFakeDataDict(FILE_NAME_FACTIONS) 129 factionsBySolarSystemID = {} 130 for sID, numBeacons in fakeDataDict[KEY_FACTIONS].iteritems(): 131 factionsBySolarSystemID[int(sID)] = numBeacons 132 133 return factionsBySolarSystemID 134 135 136 def SaveFactionsInfo(factionsBySolarSystemID): 137 fileName = FILE_NAME_FACTIONS 138 fakeDataDict = _GetCurrentFakeDataDict(fileName) 139 for sID, value in factionsBySolarSystemID.iteritems(): 140 fakeDataDict[KEY_FACTIONS][str(sID)] = value 141 142 _SaveToFile(fileName, fakeDataDict) 143 144 145 def GetJumpBridgeData(): 146 fakeDataDict = _GetCurrentFakeDataDict(FILE_NAME_JB) 147 hasAccessTo = set(fakeDataDict[KEY_JB][KEY_JB_ACCESS] or []) 148 hasNoAccessTo = set(fakeDataDict[KEY_JB][KEY_JB_NOACCESS] or []) 149 gateRet = [] 150 gates = fakeDataDict[KEY_JB][KEY_JB_GATES] 151 for gatePair in gates: 152 gateA, gateB = gatePair 153 gateRet.append((KeyVal(solarSystemID=gateA[0], structureID=gateA[1]), KeyVal(solarSystemID=gateB[0], structureID=gateB[1]))) 154 155 return (gateRet, hasAccessTo, hasNoAccessTo) 156 157 158 def SaveJumpBrides(jumpBridgesGates, hasAccessTo, hasNoAccessTo): 159 fileName = FILE_NAME_JB 160 fakeDataDict = _GetCurrentFakeDataDict(fileName) 161 gates = [ ((x[0]['solarSystemID'], x[0]['structureID']), (x[1]['solarSystemID'], x[1]['structureID'])) for x in jumpBridgesGates ] 162 fakeDataDict[KEY_JB][KEY_JB_GATES] = gates 163 fakeDataDict[KEY_JB][KEY_JB_ACCESS] = sorted(hasAccessTo) 164 fakeDataDict[KEY_JB][KEY_JB_NOACCESS] = sorted(hasNoAccessTo) 165 _SaveToFile(fileName, fakeDataDict)