doric-engine/render_test/main.py

70 lines
2.2 KiB
Python
Raw Normal View History

from kivy.app import App
2017-07-27 08:28:46 -04:00
from kivy.graphics import *
from kivy.uix.widget import Widget
from kivy.utils import get_color_from_hex
2017-07-27 08:28:46 -04:00
HEX_SIZE = 100
HORIZONTAL_BUFFER = 0.9
VERTICAL_BUFFER = 0.8
class HexMap(Widget):
2017-07-27 08:28:46 -04:00
def __init__(self, **kwargs):
super(HexMap, self).__init__(**kwargs)
self.redraw_scene()
# It is crucial to redraw the scene whenever the scene or position changes.
self.bind(size=self.redraw_scene, pos=self.redraw_scene)
def redraw_scene(self, *args):
with self.canvas:
# Clear scene
Color(*get_color_from_hex("#000000ff"))
2017-07-27 08:28:46 -04:00
Rectangle(
pos=(0, 0),
size=(self.width, self.height)
)
2017-07-27 08:28:46 -04:00
# Draw a hexagon in a decent spot.
2017-07-27 08:50:19 -04:00
tiles_in_even_row = int(self.width / (HEX_SIZE * HORIZONTAL_BUFFER))
tiles_in_odd_row = int((self.width - HEX_SIZE / 2) / (HEX_SIZE * HORIZONTAL_BUFFER))
tiles_in_col = int(self.height / (HEX_SIZE * VERTICAL_BUFFER))
for y in range(tiles_in_col):
if y % 2 == 0:
hex_color = "#0000dd55"
even_row = True
2017-07-27 08:50:19 -04:00
tiles_in_row = tiles_in_even_row
else:
hex_color = "#dd000055"
even_row = False
2017-07-27 08:50:19 -04:00
tiles_in_row = tiles_in_odd_row
for x in range(tiles_in_row):
Color(*get_color_from_hex(hex_color))
if even_row:
Ellipse(
pos=(x * HEX_SIZE * HORIZONTAL_BUFFER, y * HEX_SIZE * VERTICAL_BUFFER),
segments=6,
size=(HEX_SIZE, HEX_SIZE),
)
else:
Ellipse(
pos=((x * HEX_SIZE * HORIZONTAL_BUFFER) + (0.5 * HEX_SIZE * HORIZONTAL_BUFFER),
y * HEX_SIZE * VERTICAL_BUFFER),
segments=6,
size=(HEX_SIZE, HEX_SIZE),
)
class HexMapApp(App):
2017-07-27 17:21:35 -04:00
pass
if __name__ == '__main__':
HexMapApp().run()