def drawTradeRoute(draw, route, hexSize, scheme): colour = traderoute.getColourForBtn(int(route['btn'])) size = traderoute.getSizeForBtn(int(route['btn'])) for i in range(0, len(route['nodes']) - 1): source = sector.getCoordsFromHex(route['nodes'][i]) dest = sector.getCoordsFromHex(route['nodes'][i + 1]) s = hexutils.getCenter( hexutils.getPosition(source[0] - 1, source[1] - 1, hexSize), hexSize) d = hexutils.getCenter( hexutils.getPosition(dest[0] - 1, dest[1] - 1, hexSize), hexSize) draw.line([s, d], fill=colour, width=size)
def drawTraffic(input, output, hexSize=256, scheme=DRAFT_SCHEME): routes = traderoute.readFromFile(input) traffic = traderoute.getTrafficFromRoutes(routes) draw, img = hexgrid.getSectorCanvas(hexSize) for node, btn in traffic.items(): colour = traderoute.getColourForBtn(int(btn)) size = traderoute.getSizeForBtn(int(btn)) s = hexutils.getCenter( hexutils.getPosition(node[0][0] - 1, node[0][1] - 1, hexSize), hexSize) d = hexutils.getCenter( hexutils.getPosition(node[1][0] - 1, node[1][1] - 1, hexSize), hexSize) draw.line([s, d], fill=colour, width=size) img.save(output)
def drawSector(input, output, hexSize=256, scheme=DRAFT_SCHEME): systems = sector.readSystemsFromFile(input) draw, img = hexgrid.getSectorCanvas(hexSize) for system in (system for system in systems if system['type'] == 'system'): x, y = sector.getCoords(system) # x,y coords start from 1 origin = hexutils.getPosition(x - 1, y - 1, hexSize) drawSystem(draw, origin, system, hexSize, scheme) img.save(output)
def drawHex(draw, x, y, hexSize, scheme, blank=False): colour = scheme['hexes'] # Draw the hex outline origin = hexutils.getPosition(x, y, hexSize) vertices = hexutils.getVertices(hexSize, origin) draw.line(vertices, fill=colour, width=2) # Write the hex coordinates if not blank: fnt = ImageFont.truetype('Arial.ttf', size=int(hexSize / 10)) coords = "%02d%02d" % (x + 1, y + 1) size = fnt.getsize(coords) position = ((hexutils.widthBlock(hexSize) * 2) - int(size[0] / 2) + origin[0], origin[1] + 3) draw.text(position, coords, font=fnt, fill=colour)
def drawWorldTradeNumber(input, output, hexSize=256, scheme=DRAFT_SCHEME): systems = sector.readSystemsFromFile(input) politicalPalette = political.constructPalette(systems) economics = [] for system in systems: if system['type'] == 'system': wtn = trade.getWorldTradeNumber(uwp.strToUwp(system['uwpString'])) economics.append({'wtn': wtn, 'system': system}) economics.sort(key=lambda i: i['wtn'], reverse=True) draw, img = hexgrid.getSectorCanvas(hexSize) for entry in economics: system = entry['system'] x, y = sector.getCoords(system) # x,y coords start from 1 origin = hexutils.getPosition(x - 1, y - 1, hexSize) drawSystemEconomics(draw, origin, entry['wtn'], hexSize, politicalPalette[entry['system']['allegiance']]) img.save(output)
def drawDemographics(input, output, hexSize=256, scheme=DRAFT_SCHEME): systems = sector.readSystemsFromFile(input) politicalPalette = political.constructPalette(systems) demographics = [] for system in systems: if system['type'] == 'system': s = uwp.strToUwp(system['uwpString']) demographic = (int(s['Population'], 16), int(system['p'])) demographics.append({ 'demographics': demographic, 'system': system }) demographics.sort(key=lambda i: i['demographics'][0], reverse=True) draw, img = hexgrid.getSectorCanvas(hexSize) for entry in demographics: system = entry['system'] x, y = sector.getCoords(system) # x,y coords start from 1 origin = hexutils.getPosition(x - 1, y - 1, hexSize) drawSystemDemographics(draw, origin, system, hexSize, politicalPalette[entry['system']['allegiance']]) img.save(output)