doric-engine/main.py

89 lines
3.1 KiB
Python

import random
from kivy import app, properties
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.graphics import Color, Rectangle, Ellipse
from hexmap import HexMapCell
class HexSpace(Label):
def __init__(self):
super(HexSpace, self).__init__(size_hint=(0.5, 1), text=':)')
class StrategyGame(BoxLayout):
main_map = properties.ObjectProperty(None)
status = properties.ObjectProperty(None)
map_rows = properties.NumericProperty(0)
map_cols = properties.NumericProperty(0)
def __init__(self, **kwargs):
super(StrategyGame, self).__init__(**kwargs)
for row in range(0, self.map_rows):
hex_map_row = BoxLayout(orientation='horizontal')
if row % 2 == 1:
hex_map_row.add_widget(HexSpace())
for col in range(0, self.map_cols):
# map_tile = HexMapCell(col=col, row=row)
# map_tile.visible_on_map = True
# map_tile.disabled = False
# map_tile.bind(pos=map_tile.update_pos, size=map_tile.update_pos)
map_tile = Button(text="{} {}".format(col, row), background_color=(
random.random(), random.random(), random.random(), 0.6))
with map_tile.canvas.after:
Color(random.random(), random.random(), random.random(), 0.6)
solid_x = map_tile.x - map_tile.height
solid_y = map_tile.y - map_tile.height
solid_size = (map_tile.height, map_tile.height)
Ellipse(pos=(solid_x, solid_y), size=solid_size, segments=6)
hex_map_row.add_widget(map_tile)
if row % 2 == 0:
hex_map_row.add_widget(HexSpace())
self.main_map.add_widget(hex_map_row)
# number_of_regions = self.map_rows * self.map_cols
# for region in range(0, number_of_regions):
# row = region / self.map_cols
# col = region % self.map_cols
#
# # Add hex cells to make up the map.
# hex_cell = HexMapCell(row, col)
# hex_cell.disabled = True
# self.main_map.add_widget(hex_cell)
#
# # Add overlay conditionally.
# if (row % 6 == 1 and col % 2 == 1) or (row % 6 == 4 and col % 2 == 0) and (col > 0):
# hex_cell.disabled = False
# hex_cell.visible_on_map = True
#
# # Bind the cell code so as to update its position and size when the parent widget resizes.
# hex_cell.bind(pos=hex_cell.update_pos, size=hex_cell.update_pos)
#
def update_selected_cell(self, coords, terrain_colour, *args):
self.status.text = 'Coords: ({}, {})'.format(coords[0], coords[1])
with self.status.canvas.before:
Color(*terrain_colour)
Rectangle(pos=self.status.pos, size=self.status.size)
return True
class StrategyGameApp(app.App):
def build(self):
return StrategyGame()
if __name__ == '__main__':
StrategyGameApp().run()