From 5b1161f2f3c1e71531c4b299555c2eb4d07f8b07 Mon Sep 17 00:00:00 2001 From: Dorian Pula Date: Sat, 16 Jul 2016 15:11:41 -0400 Subject: [PATCH] Add coordinate labels to hexes. --- main.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/main.py b/main.py index 46997c9..1627033 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ import collections from kivy import app, properties -from kivy.uix import label +from kivy.uix.label import Label from kivy.uix.floatlayout import FloatLayout from kivy.graphics import Color, Ellipse, Line import kivy.utils @@ -23,7 +23,7 @@ class StrategyGame(FloatLayout): col = region % self.map_cols # Add hex cells to make up the map. - hex_cell = HexMapCell() + hex_cell = HexMapCell(row, col) self.main_map.add_widget(hex_cell) # Add overlay conditionally. @@ -46,15 +46,23 @@ class StrategyGame(FloatLayout): Color(*kivy.utils.get_random_color(alpha=.5)) hex_cell.solid = Ellipse(pos=(solid_x, solid_y), size=solid_size, segments=6) + Color(1, 1, 1, 1) + hex_cell.coord_label = Label( + text=hex_cell.coordinate_text(), center_x=hex_cell.x, center_y=hex_cell.y) + + # 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) -class HexMapCell(label.Label): +class HexMapCell(Label): def __init__(self, row=0, col=0, **kwargs): super(HexMapCell, self).__init__(**kwargs) self.coords = MapCoords(row, col) + def coordinate_text(self): + return '({}, {})'.format(self.coords.row, self.coords.col) + def update_pos(self, instance, value): # Determine the location of the solid hexagon cell. Needs to be offset from the centre of the hex. radius = 2 * self.height @@ -69,6 +77,9 @@ class HexMapCell(label.Label): self.solid.pos = (solid_x, solid_y) self.solid.size = solid_size + self.coord_label.center_x = self.x + self.coord_label.center_y = self.y + class StrategyGameApp(app.App): def build(self):