From 027682b9aa73af4258e03cd613b36b6dae001fd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B8=D1=85=D0=B0=D0=B8=D0=BB=20=D0=9A=D0=B0=D0=BF?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=BA=D0=BE?= Date: Fri, 21 Jun 2024 22:37:44 +0300 Subject: [PATCH] d --- v5/Window.py | 89 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/v5/Window.py b/v5/Window.py index bf19eee..802d80c 100644 --- a/v5/Window.py +++ b/v5/Window.py @@ -4,47 +4,54 @@ CELL = 25 HEIGHT = 600 WIDTH = 900 -images = [ - ["res/tiles_0.png", 0, 0, 75, 100], - ["res/tiles_0.png", 75, 0, 75, 100], - ["res/tiles_1.png", 0, 0, 75, 100], -] -positions = [ - [9, 1], - [14, 1], - [19, 1], - [24, 1], +class Context: + def __init__(self): + self.images = [ + ["res/tiles_0.png", 0, 0, 75, 100], + ["res/tiles_0.png", 75, 0, 75, 100], + ["res/tiles_1.png", 0, 0, 75, 100], + ] + + self.positions = [ + [9, 1], + [14, 1], + [19, 1], + [24, 1], - [9, 7], - [14, 7], - [19, 7], - [24, 7], + [9, 7], + [14, 7], + [19, 7], + [24, 7], - [9, 13], - [14, 13], - [19, 13], - [24, 13], + [9, 13], + [14, 13], + [19, 13], + [24, 13], - [9, 19], - [14, 19], - [19, 19], - [24, 19], -] -textures = None -deselected_tiles = [] -selected_tiles = [] + [9, 19], + [14, 19], + [19, 19], + [24, 19], + ] + self.textures = None + self.deselected_tiles = None + self.selected_tiles = None class Window(arcade.Window): def __init__(self): super().__init__(WIDTH, HEIGHT, "OGS Memory") arcade.set_background_color(arcade.color.WHITE) self.all_sprites = arcade.SpriteList() + self.c = Context() + c = self.c - textures = load_textures(images) - deselected_tiles = create_deselected_tiles(positions, textures) - for t in deselected_tiles: + c.textures = load_textures(c.images) + c.deselected_tiles = create_deselected_tiles(c.positions, c.textures) + for t in c.deselected_tiles: + self.all_sprites.append(t) + c.selected_tiles = create_selected_tiles(c.positions, c.textures) + for t in c.selected_tiles: self.all_sprites.append(t) - #selected_tiles = create_selected_tiles(positions, textures) def on_draw(self): arcade.start_render() @@ -53,8 +60,12 @@ class Window(arcade.Window): def on_mouse_press(self, x, y, button, key_modifiers): print("click", x, y) sprites = arcade.get_sprites_at_point([x, y], self.all_sprites) - if len(sprites) == 1: - print("selected: ", sprites[0].guid) + id = sprites[0].guid + print("selected id: ", id) + #print("deselected_tiles: ", self.c.deselected_tiles) + #print("selected_tiles: ", self.c.selected_tiles) + self.c.deselected_tiles[id].visible = False + self.c.selected_tiles[id].visible = True def on_update(self, delta): self.all_sprites.update_animation() @@ -83,3 +94,17 @@ def create_deselected_tiles(positions, textures): tile.center_x = CELL * 2 + p[0] * CELL tile.center_y = HEIGHT - CELL * 2 - p[1] * CELL return tiles + +def create_selected_tiles(positions, textures): + tiles = [] + for (id, p) in enumerate(positions): + tile = arcade.Sprite() + tiles.append(tile) + tile.guid = id + tile.texture = textures[2] + # Position. + tile.center_x = CELL * 2 + p[0] * CELL + tile.center_y = HEIGHT - CELL * 2 - p[1] * CELL + # Invisible by default. + tile.visible = False + return tiles