Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
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)
Пример #6
0
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)