def GMShowResource(self, resourceTypeID, layer): self.LogInfo('GMShowResource', resourceTypeID, layer) planet = sm.GetService('planetSvc').GetPlanet(self.planetID) data = planet.remoteHandler.GMGetCompleteResource( resourceTypeID, layer) sh = builder.CreateSHFromBuffer(data.data, data.numBands) self.ShowSH(sh, scaleIt=layer == 'base')
def GetResourceData(self, resourceTypeID): if not hasattr(self, 'resources'): self.LogInfo('GetResourceData: creating resource collection') self.resources = {} if resourceTypeID not in self.resources: self.LogInfo( 'GetResourceData: creating new resource entry for resource', resourceTypeID) entry = self.CreateResourceEntry() self.resources[resourceTypeID] = entry else: entry = self.resources[resourceTypeID] inRange = True info = self.CreateResourceInfo(resourceTypeID, entry) if getattr(info, 'skillMissing', False): inRange = False eve.Message( 'PISkillRequiredToSurveyPlanetResources', {'skill': cfg.invtypes.Get(const.typeRemoteSensing).typeName}) elif getattr(info, 'unreachableSystem', False): inRange = False eve.Message('PIUnableToScanWorholeSystemRemotely') elif hasattr(info, 'requiredSkill'): inRange = False eve.Message('PISkillLevelToLowForRemoteSensing', {'level': info.requiredSkill}) elif hasattr(info, 'systemOutOfRange'): inRange = False eve.Message( 'PISkillLevelToLowForRemoteSensingDistance', { 'systemDistance': info.systemDistance, 'maxScanDistance': info.maxScanDistance }) elif info.newBand > entry.numBands or blue.os.GetWallclockTime( ) > entry.updateTime: self.LogInfo('GetResourceData: refreshing data: newBand', info.newBand, 'currentBand', entry.numBands, 'updateTime', entry.updateTime) shData = self.remoteHandler.GetResourceData(info) if shData.data is not None: entry.sh = builder.CreateSHFromBuffer(shData.data, shData.numBands) entry.updateTime = blue.os.GetWallclockTime( ) + planetCommon.RESOURCE_CACHE_TIMEOUT entry.proximity = shData.proximity entry.numBands = shData.numBands self.LogInfo('GetResourceData: creating SH for ', resourceTypeID, 'upto band', shData.numBands) else: self.LogInfo('GetResourceData: no new data received') else: self.LogInfo('GetResourceData: no need to refresh data') return (inRange, self.resources[resourceTypeID].sh)