From f56a6fb93f1ec70c0bb2ef6286a9eca35bae5d83 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sat, 10 May 2025 09:32:34 -0500 Subject: [PATCH 1/4] update tilepalettemapper usage for new API --- Metro/Metro_RP2350_CircuitPython_Matrix/code.py | 5 ++++- Metro/Metro_RP2350_Match3/match3_game/code.py | 2 +- Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py | 2 +- Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py | 2 -- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Metro/Metro_RP2350_CircuitPython_Matrix/code.py b/Metro/Metro_RP2350_CircuitPython_Matrix/code.py index d383c7f14..f17d96954 100644 --- a/Metro/Metro_RP2350_CircuitPython_Matrix/code.py +++ b/Metro/Metro_RP2350_CircuitPython_Matrix/code.py @@ -14,9 +14,12 @@ import supervisor from displayio import Group, TileGrid from tilepalettemapper import TilePaletteMapper +from adafruit_fruitjam.peripherals import request_display_config import adafruit_imageload + # use the built-in HSTX display +request_display_config(320,240) display = supervisor.runtime.display # screen size in tiles, tiles are 16x16 @@ -64,7 +67,7 @@ shader_palette[i + 1] = COLORS[i] # mapper to change colors of tiles within the grid -grid_color_shader = TilePaletteMapper(shader_palette, 2, SCREEN_WIDTH, SCREEN_HEIGHT) +grid_color_shader = TilePaletteMapper(shader_palette, 2) # load the spritesheet katakana_bmp, katakana_pixelshader = adafruit_imageload.load("matrix_characters.bmp") diff --git a/Metro/Metro_RP2350_Match3/match3_game/code.py b/Metro/Metro_RP2350_Match3/match3_game/code.py index 3dd855aaf..dbe626d9e 100644 --- a/Metro/Metro_RP2350_Match3/match3_game/code.py +++ b/Metro/Metro_RP2350_Match3/match3_game/code.py @@ -217,7 +217,7 @@ # create tile palette mappers for i in range(2): - palette_mapper = TilePaletteMapper(remap_palette, 3, 1, 1) + palette_mapper = TilePaletteMapper(remap_palette, 3) # remap index 2 to each of the colors in mouse colors list palette_mapper[0] = [0, 1, i + 3] palette_mappers.append(palette_mapper) diff --git a/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py b/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py index fe9cbd262..298494a0f 100644 --- a/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py +++ b/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py @@ -133,7 +133,7 @@ class Match3Card(Group): def __init__(self, card_tuple, **kwargs): # tile palette mapper to color the card - self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5, 1, 1) + self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5) kwargs["pixel_shader"] = self._mapper # tile grid to for the visible sprite self._tilegrid = TileGrid(**kwargs) diff --git a/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py b/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py index 45c82cc39..ebf1341de 100644 --- a/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py +++ b/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py @@ -23,8 +23,6 @@ tile_palette_mapper = TilePaletteMapper( spritesheet_bmp.pixel_shader, # input pixel_shader 5, # input color count - 3, # grid width - 1 # grid height ) # create a TileGrid to show some cards From 8d7141d02ec5d918ace5caa36863187a61e2e403 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Sat, 10 May 2025 09:34:36 -0500 Subject: [PATCH 2/4] update mapping after create tilegrid --- Metro/Metro_RP2350_Match3/match3_game/code.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Metro/Metro_RP2350_Match3/match3_game/code.py b/Metro/Metro_RP2350_Match3/match3_game/code.py index dbe626d9e..b6f9434e6 100644 --- a/Metro/Metro_RP2350_Match3/match3_game/code.py +++ b/Metro/Metro_RP2350_Match3/match3_game/code.py @@ -218,8 +218,6 @@ # create tile palette mappers for i in range(2): palette_mapper = TilePaletteMapper(remap_palette, 3) - # remap index 2 to each of the colors in mouse colors list - palette_mapper[0] = [0, 1, i + 3] palette_mappers.append(palette_mapper) # create tilegrid for each mouse @@ -228,6 +226,9 @@ mouse_tg.y = display.height // scale_factor // 2 mouse_tgs.append(mouse_tg) + # remap index 2 to each of the colors in mouse colors list + palette_mapper[0] = [0, 1, i + 3] + # USB info lists mouse_interface_indexes = [] mouse_endpoint_addresses = [] From 7f89d19b5fcadf0e6b57bc480adbb26440ba35e6 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Tue, 20 May 2025 09:09:52 -0500 Subject: [PATCH 3/4] add support for 9.x and 10.x tilepalettemapper API. --- .../Metro_RP2350_CircuitPython_Matrix/code.py | 9 +++++-- Metro/Metro_RP2350_Match3/match3_game/code.py | 7 ++++- .../match3_game/match3_game_helpers.py | 22 ++++++++++----- .../tilepalettemapper_demo/code.py | 27 ++++++++++++++----- 4 files changed, 50 insertions(+), 15 deletions(-) diff --git a/Metro/Metro_RP2350_CircuitPython_Matrix/code.py b/Metro/Metro_RP2350_CircuitPython_Matrix/code.py index f17d96954..3e45bfe48 100644 --- a/Metro/Metro_RP2350_CircuitPython_Matrix/code.py +++ b/Metro/Metro_RP2350_CircuitPython_Matrix/code.py @@ -19,7 +19,7 @@ # use the built-in HSTX display -request_display_config(320,240) +request_display_config(320, 240) display = supervisor.runtime.display # screen size in tiles, tiles are 16x16 @@ -67,7 +67,12 @@ shader_palette[i + 1] = COLORS[i] # mapper to change colors of tiles within the grid -grid_color_shader = TilePaletteMapper(shader_palette, 2) +if sys.implementation.version[0] == 9: + grid_color_shader = TilePaletteMapper( + shader_palette, 2, SCREEN_WIDTH, SCREEN_HEIGHT + ) +elif sys.implementation.version[0] >= 10: + grid_color_shader = TilePaletteMapper(shader_palette, 2) # load the spritesheet katakana_bmp, katakana_pixelshader = adafruit_imageload.load("matrix_characters.bmp") diff --git a/Metro/Metro_RP2350_Match3/match3_game/code.py b/Metro/Metro_RP2350_Match3/match3_game/code.py index b6f9434e6..2a1fb4692 100644 --- a/Metro/Metro_RP2350_Match3/match3_game/code.py +++ b/Metro/Metro_RP2350_Match3/match3_game/code.py @@ -9,6 +9,7 @@ import atexit import io import os +import sys import time import board @@ -217,7 +218,11 @@ # create tile palette mappers for i in range(2): - palette_mapper = TilePaletteMapper(remap_palette, 3) + if sys.implementation.version[0] == 9: + palette_mapper = TilePaletteMapper(remap_palette, 3, 1, 1) + elif sys.implementation.version[0] >= 10: + palette_mapper = TilePaletteMapper(remap_palette, 3) + palette_mappers.append(palette_mapper) # create tilegrid for each mouse diff --git a/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py b/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py index 298494a0f..778c0008b 100644 --- a/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py +++ b/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py @@ -3,6 +3,7 @@ # SPDX-License-Identifier: MIT import os import random +import sys import time from io import BytesIO @@ -133,7 +134,10 @@ class Match3Card(Group): def __init__(self, card_tuple, **kwargs): # tile palette mapper to color the card - self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5) + if sys.implementation.version[0] == 9: + self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5, 1, 1) + elif sys.implementation.version[0] >= 10: + self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5) kwargs["pixel_shader"] = self._mapper # tile grid to for the visible sprite self._tilegrid = TileGrid(**kwargs) @@ -580,9 +584,11 @@ def handle_left_click(self, player_index, coords): # if 3 cards have been clicked if len(self.clicked_cards) == 3: # check if the 3 cards make a valid set - valid_set = validate_set(self.clicked_cards[0], - self.clicked_cards[1], - self.clicked_cards[2]) + valid_set = validate_set( + self.clicked_cards[0], + self.clicked_cards[1], + self.clicked_cards[2], + ) # if they are a valid set if valid_set: @@ -660,7 +666,9 @@ def handle_left_click(self, player_index, coords): # load the game from the given game state self.load_from_game_state(self.game_state) # hide the title screen - self.title_screen.hidden = True # pylint: disable=attribute-defined-outside-init + self.title_screen.hidden = ( + True # pylint: disable=attribute-defined-outside-init + ) # set the current state to open play self.cur_state = STATE_PLAYING_OPEN @@ -676,7 +684,9 @@ def handle_left_click(self, player_index, coords): # initialize a new game self.init_new_game() # hide the title screen - self.title_screen.hidden = True # pylint: disable=attribute-defined-outside-init + self.title_screen.hidden = ( + True # pylint: disable=attribute-defined-outside-init + ) # set the current state to open play self.cur_state = STATE_PLAYING_OPEN diff --git a/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py b/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py index ebf1341de..d8c9571a0 100644 --- a/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py +++ b/Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py @@ -1,6 +1,7 @@ # SPDX-FileCopyrightText: Copyright (c) 2025 Tim Cocks for Adafruit Industries # # SPDX-License-Identifier: MIT +import sys import supervisor from displayio import Group, OnDiskBitmap, TileGrid @@ -20,14 +21,28 @@ spritesheet_bmp = OnDiskBitmap("match3_cards_spritesheet.bmp") # create a TilePaletteMapper -tile_palette_mapper = TilePaletteMapper( - spritesheet_bmp.pixel_shader, # input pixel_shader - 5, # input color count -) +if sys.implementation.version[0] == 9: + tile_palette_mapper = TilePaletteMapper( + spritesheet_bmp.pixel_shader, # input pixel_shader + 5, # input color count + 3, # grid width + 1, # grid height + ) +elif sys.implementation.version[0] >= 10: + tile_palette_mapper = TilePaletteMapper( + spritesheet_bmp.pixel_shader, # input pixel_shader + 5, # input color count + ) # create a TileGrid to show some cards -cards_tilegrid = TileGrid(spritesheet_bmp, pixel_shader=tile_palette_mapper, - width=3, height=1, tile_width=24, tile_height=32) +cards_tilegrid = TileGrid( + spritesheet_bmp, + pixel_shader=tile_palette_mapper, + width=3, + height=1, + tile_width=24, + tile_height=32, +) # set each tile in the grid to a different sprite index cards_tilegrid[0, 0] = 10 From 84b025b1e7c2f32b2779ce5573b1f31b1a7b4f59 Mon Sep 17 00:00:00 2001 From: foamyguy Date: Tue, 20 May 2025 09:29:44 -0500 Subject: [PATCH 4/4] remove pylint disables and explcitly re-set hidden prop --- .../match3_game/match3_game_helpers.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py b/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py index 778c0008b..bbd5b9dbb 100644 --- a/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py +++ b/Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py @@ -666,9 +666,7 @@ def handle_left_click(self, player_index, coords): # load the game from the given game state self.load_from_game_state(self.game_state) # hide the title screen - self.title_screen.hidden = ( - True # pylint: disable=attribute-defined-outside-init - ) + self.title_screen.hidden = True # set the current state to open play self.cur_state = STATE_PLAYING_OPEN @@ -684,9 +682,7 @@ def handle_left_click(self, player_index, coords): # initialize a new game self.init_new_game() # hide the title screen - self.title_screen.hidden = ( - True # pylint: disable=attribute-defined-outside-init - ) + self.title_screen.hidden = True # set the current state to open play self.cur_state = STATE_PLAYING_OPEN @@ -737,6 +733,7 @@ class Match3TitleScreen(Group): def __init__(self, display_size): super().__init__() + self.hidden = False self.display_size = display_size # background bitmap color bg_bmp = Bitmap(display_size[0] // 10, display_size[1] // 10, 1)