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

mapViewData.py (6054B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\mapViewData.py
      2 from carbonui.util.bunch import Bunch
      3 from eve.client.script.ui.shared.mapView.mapViewUtil import WorldPosToMapPos
      4 from eve.client.script.ui.shared.maps.mapcommon import SUN_DATA
      5 from eve.common.script.sys.idCheckers import IsKnownSpaceSystem, IsKnownSpaceRegion, IsKnownSpaceConstellation
      6 from utillib import KeyVal
      7 import cPickle
      8 import blue
      9 import logging
     10 log = logging.getLogger(__name__)
     11 
     12 class MapViewData(object):
     13     starMapCache = None
     14     knownSolarSystems = None
     15     knownRegions = None
     16     knownConstellations = None
     17     mapJumps = None
     18 
     19     def GetStarMapCache(self):
     20         if self.starMapCache is None:
     21             res = blue.ResFile()
     22             starMapResPath = 'res:/staticdata/starMapCache.pickle'
     23             if not res.open('%s' % starMapResPath):
     24                 log.error('Could not load Starmap Cache data file: %s' % starMapResPath)
     25             else:
     26                 try:
     27                     pickleData = res.Read()
     28                     self.starMapCache = cPickle.loads(pickleData)
     29                 finally:
     30                     res.Close()
     31 
     32         return self.starMapCache
     33 
     34     def GetKnownUniverseSolarSystems(self):
     35         if self.knownSolarSystems is None:
     36             self.knownSolarSystems = {}
     37             for systemID, system in self.GetStarMapCache()['solarSystems'].iteritems():
     38                 if not IsKnownSpaceSystem(systemID):
     39                     continue
     40                 center = system['center']
     41                 solarSystemInfo = Bunch()
     42                 solarSystemInfo.center = center
     43                 solarSystemInfo.mapPosition = WorldPosToMapPos(center)
     44                 solarSystemInfo.regionID = system['regionID']
     45                 solarSystemInfo.constellationID = system['constellationID']
     46                 solarSystemInfo.star = SUN_DATA[system['sunTypeID']]
     47                 solarSystemInfo.factionID = system['factionID']
     48                 solarSystemInfo.neighbours = system['neighbours']
     49                 solarSystemInfo.planetCountByType = system['planetCountByType']
     50                 solarSystemInfo.planetItemIDs = system['planetItemIDs']
     51                 self.knownSolarSystems[systemID] = solarSystemInfo
     52 
     53         return self.knownSolarSystems
     54 
     55     def GetKnownUniverseRegions(self):
     56         if self.knownRegions is None:
     57             self.knownRegions = {}
     58             for regionID, region in self.GetStarMapCache()['regions'].iteritems():
     59                 if not IsKnownSpaceRegion(regionID):
     60                     continue
     61                 regionInfo = Bunch()
     62                 regionInfo.neighbours = region['neighbours']
     63                 regionInfo.solarSystemIDs = region['solarSystemIDs']
     64                 regionInfo.constellationIDs = region['constellationIDs']
     65                 regionInfo.center = region['center']
     66                 regionInfo.mapPosition = WorldPosToMapPos(region['center'])
     67                 self.knownRegions[regionID] = regionInfo
     68 
     69         return self.knownRegions
     70 
     71     def GetKnownUniverseConstellations(self):
     72         if self.knownConstellations is None:
     73             self.knownConstellations = {}
     74             for constellationID, constellation in self.GetStarMapCache()['constellations'].iteritems():
     75                 if not IsKnownSpaceConstellation(constellationID):
     76                     continue
     77                 constellationInfo = Bunch()
     78                 constellationInfo.regionID = constellation['regionID']
     79                 constellationInfo.neighbours = constellation['neighbours']
     80                 constellationInfo.solarSystemIDs = constellation['solarSystemIDs']
     81                 constellationInfo.center = constellation['center']
     82                 constellationInfo.mapPosition = WorldPosToMapPos(constellation['center'])
     83                 self.knownConstellations[constellationID] = constellationInfo
     84 
     85         return self.knownConstellations
     86 
     87     def GetKnownSolarSystem(self, solarSystemID):
     88         return self.GetKnownUniverseSolarSystems()[solarSystemID]
     89 
     90     def GetKnownConstellation(self, constellationID):
     91         return self.GetKnownUniverseConstellations()[constellationID]
     92 
     93     def GetKnownRegion(self, regionID):
     94         return self.GetKnownUniverseRegions()[regionID]
     95 
     96     def GetAllianceSolarSystems(self):
     97         allianceSolarSystems = {}
     98         allianceSystemCache = sm.RemoteSvc('stationSvc').GetAllianceSystems()
     99         for x in allianceSystemCache:
    100             allianceSolarSystems[x.solarSystemID] = x.allianceID
    101 
    102         occupationStatesBySolarsystemByWarzone = sm.GetService('fwWarzoneSvc').GetAllOccupationStates()
    103         for occupationStatesBySolarsystem in occupationStatesBySolarsystemByWarzone.itervalues():
    104             for solarsystemID, occupationState in occupationStatesBySolarsystem.iteritems():
    105                 allianceSolarSystems[solarsystemID] = occupationState.occupierID
    106 
    107         return allianceSolarSystems
    108 
    109     def GetAllFactions(self):
    110         return list(cfg.mapFactionsOwningSolarSystems)
    111 
    112     def GetAllFactionsAndAlliances(self):
    113         factions = self.GetAllFactions()
    114         alliances = self.GetAllianceSolarSystems().values()
    115         return list(set(factions + alliances))
    116 
    117     def IterateJumps(self):
    118         if self.mapJumps is None:
    119             self.mapJumps = []
    120             for jump in self.GetStarMapCache()['jumps']:
    121                 jumpInfo = self.PrimeJumpData(jump['fromSystemID'], jump['toSystemID'], jump['jumpType'])
    122                 self.mapJumps.append(jumpInfo)
    123                 yield jumpInfo
    124 
    125         else:
    126             for jump in self.mapJumps:
    127                 yield jump
    128 
    129     def PrimeJumpData(self, fromSolarSystemID, toSolarSystemID, jumpType, colorFrom = None, colorTo = None):
    130         jumpInfo = KeyVal()
    131         jumpInfo.jumpType = jumpType
    132         jumpInfo.fromSolarSystemID = fromSolarSystemID
    133         jumpInfo.toSolarSystemID = toSolarSystemID
    134         jumpInfo.colorFrom = colorFrom
    135         jumpInfo.colorTo = colorTo
    136         return jumpInfo
    137 
    138 
    139 mapViewData = MapViewData()