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

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)