clickpoint = fife.ScreenPoint(event.getX(), event.getY())
if event.getButton() == fife.MouseEvent.LEFT:
instances = self.get_instances_at(clickpoint, self._layers['ground_layer'])
instance = instances[0]
points_A = []
points_B = []
def add_point(points, x, y):
zoom = self._cameras['main'].getZoom()
points.append(fife.Point(int(round(x * zoom)), int(round(y * zoom))))
add_point(points_A, 0, -70)
add_point(points_A, 0, -69)
add_point(points_A, -1, -69)
add_point(points_B, 60, -34)
add_point(points_B, 59, -34)
add_point(points_B, 60, -33)
for point_A in points_A:
for point_B in points_B:
i1 = fife.RendererNode(instance, point_A)
i2 = fife.RendererNode(instance, point_B)
self._generic_renderer.addLine('123', i1, i2, 255, 255, 255)
Something like this works as intended, but only for 1.0 zoom (attached picture zoom 0.5). Code looks bad, but i can not figure out a better way to do the same thing. Will have to "whitelist" available zoom values and calibrate each of them manually later on.
And one more thing. ref_cell_height in map file is ignored if ref_cell_width was set before. Hard to make hexagonal tiles to be placed tight, when each tile must lay inside a box with 1:2*3^-0.5 ratio sides. Thinking about using square hexagons Imperialism-style.