def DoRewardChart_Thread(self, rewardID, size, icon): """This function is generating the reward graph for the incursion journal The image is build opon data from the reward system, which is cached with the policy never, None, None""" reward = self.GetRewardData(rewardID) maxRewardValue = 0 minPlayerCount = 0 maxPlayerCount = 0 allSecurityBandTable = None lowSecurityBandTable = None highSecurityBandTable = None for rewardCriteria, rewardTables in reward.immediateRewards.iteritems( ): if not rewardTables: continue if rewardCriteria == const.rewardCriteriaAllSecurityBands: maxRewardValue = self.GetMaxRewardValue( rewardTables, const.rewardTypeISK) minPlayerCount = self.GetMinRewardPlayerCount(rewardTables) maxPlayerCount = self.GetMaxRewardPlayerCount(rewardTables) allSecurityBandTable = rewardTables[0] break if rewardCriteria == const.rewardCriteriaHighSecurity: highSecurityBandTable = rewardTables[0] elif rewardCriteria == const.rewardCriteriaLowSecurity: lowSecurityBandTable = rewardTables[0] else: continue maxRewardValue = max( maxRewardValue, self.GetMaxRewardValue(rewardTables, const.rewardTypeISK)) minPlayerCount = min(minPlayerCount, self.GetMinRewardPlayerCount(rewardTables)) maxPlayerCount = max(maxPlayerCount, self.GetMaxRewardPlayerCount(rewardTables)) scale = 1.0 / maxRewardValue majorTick = (maxPlayerCount - minPlayerCount) / 4 data = [] labels = [] for x in xrange(minPlayerCount, maxPlayerCount + 1): if allSecurityBandTable is not None: quantity = self.GetQuantityForCount(allSecurityBandTable, x) * scale data.append(quantity) else: quantityHigh = self.GetQuantityForCount( highSecurityBandTable, x) * scale quantityLow = self.GetQuantityForCount(lowSecurityBandTable, x) * scale data.append((quantityHigh, quantityLow)) labels.append(str(x)) chart = XYChart(size, size, BLACK, GRAY, False) chart.setPlotArea(PLOT_OFFSET, PLOT_OFFSET, size - PLOT_OFFSET - PLOT_RIGHT_MARGIN, size - PLOT_OFFSET - PLOT_BOTTOM_MARGIN, DARKGRAY, -1, -1, GRAY, Transparent) if localization.util.GetLanguageID( ) == localization.const.LOCALE_SHORT_ENGLISH: font = 'arial.ttf' titleFont = 'arialbd.ttf' else: font = titleFont = uicore.font.GetFontDefault() chart.addLegend(LEGEND_OFFSET, LEGEND_OFFSET, 0, font, 8).setBackground(Transparent) legend = chart.getLegend() legend.setFontColor(WHITE) chart.addTitle(localization.GetByLabel('UI/Incursion/Reward/Title'), titleFont, 12, WHITE).setBackground(Transparent) yAxis = chart.yAxis() yAxis.setTitle( localization.GetByLabel('UI/Incursion/Reward/PayoutMultiplier'), font, 10, WHITE) yAxis.setColors(GRAY, WHITE) yAxis.setLinearScale(0, 1.02, 0.5, 0.25) xAxis = chart.xAxis() xAxis.setLabels(labels) xAxis.setLabelStep(majorTick) xAxis.setColors(GRAY, WHITE) xAxis.setTitle( localization.GetByLabel('UI/Incursion/Reward/NumberPilots'), font, 9, WHITE) layer = chart.addLineLayer2() layer.setLineWidth(1) if allSecurityBandTable is not None: layer.addDataSet(data, COLOR_HIGH_SEC, localization.GetByLabel('UI/Common/Ratio')) else: dataHigh, dataLow = zip(*data) layer.addDataSet(dataHigh, COLOR_HIGH_SEC, localization.GetByLabel('UI/Common/HighSec')) layer.addDataSet(dataLow, COLOR_NULL_SEC, localization.GetByLabel('UI/Common/LowNullSec')) directory = os.path.normpath( os.path.join(blue.paths.ResolvePath(u'cache:/'), 'Pictures', 'Rewards')) if not os.path.exists(directory): os.makedirs(directory) pictureName = 'rewardchart2_%s_%d_%d.png' % (session.languageID, size, rewardID) resPath = u'cache:/Pictures/Rewards/' + pictureName path = os.path.join(directory, pictureName) imageBuffer = chart.makeChart2(PNG) f = open(path, 'wb') f.write(imageBuffer) f.close() icon.LoadTexture(resPath) icon.SetRect(0, 0, size, size)
def DoRewardChart_Thread(self, rewardID, size, icon): reward = self.GetRewardData(rewardID) maxRewardValue = 0 minPlayerCount = 0 maxPlayerCount = 0 allSecurityBandTable = None lowSecurityBandTable = None highSecurityBandTable = None for rewardCriteria, rewardTables in reward.immediateRewards.iteritems(): if not rewardTables: continue if rewardCriteria == const.rewardCriteriaAllSecurityBands: maxRewardValue = self.GetMaxRewardValue(rewardTables, const.rewardTypeISK) minPlayerCount = self.GetMinRewardPlayerCount(rewardTables) maxPlayerCount = self.GetMaxRewardPlayerCount(rewardTables) allSecurityBandTable = rewardTables[0] break if rewardCriteria == const.rewardCriteriaHighSecurity: highSecurityBandTable = rewardTables[0] elif rewardCriteria == const.rewardCriteriaLowSecurity: lowSecurityBandTable = rewardTables[0] else: continue maxRewardValue = max(maxRewardValue, self.GetMaxRewardValue(rewardTables, const.rewardTypeISK)) minPlayerCount = min(minPlayerCount, self.GetMinRewardPlayerCount(rewardTables)) maxPlayerCount = max(maxPlayerCount, self.GetMaxRewardPlayerCount(rewardTables)) scale = 1.0 / maxRewardValue majorTick = (maxPlayerCount - minPlayerCount) / 4 data = [] labels = [] for x in xrange(minPlayerCount, maxPlayerCount + 1): if allSecurityBandTable is not None: quantity = self.GetQuantityForCount(allSecurityBandTable, x) * scale data.append(quantity) else: quantityHigh = self.GetQuantityForCount(highSecurityBandTable, x) * scale quantityLow = self.GetQuantityForCount(lowSecurityBandTable, x) * scale data.append((quantityHigh, quantityLow)) labels.append(str(x)) chart = XYChart(size, size, BLACK, GRAY, False) chart.setPlotArea(PLOT_OFFSET, PLOT_OFFSET, size - PLOT_OFFSET - PLOT_RIGHT_MARGIN, size - PLOT_OFFSET - PLOT_BOTTOM_MARGIN, DARKGRAY, -1, -1, GRAY, Transparent) if localizationUtil.GetLanguageID() == localization.LOCALE_SHORT_ENGLISH: font = 'arial.ttf' titleFont = 'arialbd.ttf' else: font = titleFont = sm.GetService('font').GetFontDefault() chart.addLegend(LEGEND_OFFSET, LEGEND_OFFSET, 0, font, 8).setBackground(Transparent) legend = chart.getLegend() legend.setFontColor(WHITE) chart.addTitle(localization.GetByLabel('UI/Incursion/Reward/Title'), titleFont, 12, WHITE).setBackground(Transparent) yAxis = chart.yAxis() yAxis.setTitle(localization.GetByLabel('UI/Incursion/Reward/PayoutMultiplier'), font, 10, WHITE) yAxis.setColors(GRAY, WHITE) yAxis.setLinearScale(0, 1.02, 0.5, 0.25) xAxis = chart.xAxis() xAxis.setLabels(labels) xAxis.setLabelStep(majorTick) xAxis.setColors(GRAY, WHITE) xAxis.setTitle(localization.GetByLabel('UI/Incursion/Reward/NumberPilots'), font, 9, WHITE) layer = chart.addLineLayer2() layer.setLineWidth(1) if allSecurityBandTable is not None: layer.addDataSet(data, COLOR_HIGH_SEC, localization.GetByLabel('UI/Common/Ratio')) else: dataHigh, dataLow = zip(*data) layer.addDataSet(dataHigh, COLOR_HIGH_SEC, localization.GetByLabel('UI/Common/HighSec')) layer.addDataSet(dataLow, COLOR_NULL_SEC, localization.GetByLabel('UI/Common/LowNullSec')) directory = os.path.normpath(os.path.join(blue.paths.ResolvePath(u'cache:/'), 'Pictures', 'Rewards')) if not os.path.exists(directory): os.makedirs(directory) pictureName = 'rewardchart2_%s_%d_%d.png' % (session.languageID, size, rewardID) resPath = u'cache:/Pictures/Rewards/' + pictureName path = os.path.join(directory, pictureName) imageBuffer = chart.makeChart2(PNG) f = open(path, 'wb') f.write(imageBuffer) f.close() icon.LoadTexture(resPath) icon.SetRect(0, 0, size, size)