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()