Skip to content

Commit 7f89d19

Browse files
committed
add support for 9.x and 10.x tilepalettemapper API.
1 parent 8d7141d commit 7f89d19

File tree

4 files changed

+50
-15
lines changed

4 files changed

+50
-15
lines changed

Metro/Metro_RP2350_CircuitPython_Matrix/code.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020

2121
# use the built-in HSTX display
22-
request_display_config(320,240)
22+
request_display_config(320, 240)
2323
display = supervisor.runtime.display
2424

2525
# screen size in tiles, tiles are 16x16
@@ -67,7 +67,12 @@
6767
shader_palette[i + 1] = COLORS[i]
6868

6969
# mapper to change colors of tiles within the grid
70-
grid_color_shader = TilePaletteMapper(shader_palette, 2)
70+
if sys.implementation.version[0] == 9:
71+
grid_color_shader = TilePaletteMapper(
72+
shader_palette, 2, SCREEN_WIDTH, SCREEN_HEIGHT
73+
)
74+
elif sys.implementation.version[0] >= 10:
75+
grid_color_shader = TilePaletteMapper(shader_palette, 2)
7176

7277
# load the spritesheet
7378
katakana_bmp, katakana_pixelshader = adafruit_imageload.load("matrix_characters.bmp")

Metro/Metro_RP2350_Match3/match3_game/code.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import atexit
1010
import io
1111
import os
12+
import sys
1213
import time
1314

1415
import board
@@ -217,7 +218,11 @@
217218

218219
# create tile palette mappers
219220
for i in range(2):
220-
palette_mapper = TilePaletteMapper(remap_palette, 3)
221+
if sys.implementation.version[0] == 9:
222+
palette_mapper = TilePaletteMapper(remap_palette, 3, 1, 1)
223+
elif sys.implementation.version[0] >= 10:
224+
palette_mapper = TilePaletteMapper(remap_palette, 3)
225+
221226
palette_mappers.append(palette_mapper)
222227

223228
# create tilegrid for each mouse

Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# SPDX-License-Identifier: MIT
44
import os
55
import random
6+
import sys
67
import time
78
from io import BytesIO
89

@@ -133,7 +134,10 @@ class Match3Card(Group):
133134

134135
def __init__(self, card_tuple, **kwargs):
135136
# tile palette mapper to color the card
136-
self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5)
137+
if sys.implementation.version[0] == 9:
138+
self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5, 1, 1)
139+
elif sys.implementation.version[0] >= 10:
140+
self._mapper = TilePaletteMapper(kwargs["pixel_shader"], 5)
137141
kwargs["pixel_shader"] = self._mapper
138142
# tile grid to for the visible sprite
139143
self._tilegrid = TileGrid(**kwargs)
@@ -580,9 +584,11 @@ def handle_left_click(self, player_index, coords):
580584
# if 3 cards have been clicked
581585
if len(self.clicked_cards) == 3:
582586
# check if the 3 cards make a valid set
583-
valid_set = validate_set(self.clicked_cards[0],
584-
self.clicked_cards[1],
585-
self.clicked_cards[2])
587+
valid_set = validate_set(
588+
self.clicked_cards[0],
589+
self.clicked_cards[1],
590+
self.clicked_cards[2],
591+
)
586592

587593
# if they are a valid set
588594
if valid_set:
@@ -660,7 +666,9 @@ def handle_left_click(self, player_index, coords):
660666
# load the game from the given game state
661667
self.load_from_game_state(self.game_state)
662668
# hide the title screen
663-
self.title_screen.hidden = True # pylint: disable=attribute-defined-outside-init
669+
self.title_screen.hidden = (
670+
True # pylint: disable=attribute-defined-outside-init
671+
)
664672
# set the current state to open play
665673
self.cur_state = STATE_PLAYING_OPEN
666674

@@ -676,7 +684,9 @@ def handle_left_click(self, player_index, coords):
676684
# initialize a new game
677685
self.init_new_game()
678686
# hide the title screen
679-
self.title_screen.hidden = True # pylint: disable=attribute-defined-outside-init
687+
self.title_screen.hidden = (
688+
True # pylint: disable=attribute-defined-outside-init
689+
)
680690
# set the current state to open play
681691
self.cur_state = STATE_PLAYING_OPEN
682692

Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# SPDX-FileCopyrightText: Copyright (c) 2025 Tim Cocks for Adafruit Industries
22
#
33
# SPDX-License-Identifier: MIT
4+
import sys
45

56
import supervisor
67
from displayio import Group, OnDiskBitmap, TileGrid
@@ -20,14 +21,28 @@
2021
spritesheet_bmp = OnDiskBitmap("match3_cards_spritesheet.bmp")
2122

2223
# create a TilePaletteMapper
23-
tile_palette_mapper = TilePaletteMapper(
24-
spritesheet_bmp.pixel_shader, # input pixel_shader
25-
5, # input color count
26-
)
24+
if sys.implementation.version[0] == 9:
25+
tile_palette_mapper = TilePaletteMapper(
26+
spritesheet_bmp.pixel_shader, # input pixel_shader
27+
5, # input color count
28+
3, # grid width
29+
1, # grid height
30+
)
31+
elif sys.implementation.version[0] >= 10:
32+
tile_palette_mapper = TilePaletteMapper(
33+
spritesheet_bmp.pixel_shader, # input pixel_shader
34+
5, # input color count
35+
)
2736

2837
# create a TileGrid to show some cards
29-
cards_tilegrid = TileGrid(spritesheet_bmp, pixel_shader=tile_palette_mapper,
30-
width=3, height=1, tile_width=24, tile_height=32)
38+
cards_tilegrid = TileGrid(
39+
spritesheet_bmp,
40+
pixel_shader=tile_palette_mapper,
41+
width=3,
42+
height=1,
43+
tile_width=24,
44+
tile_height=32,
45+
)
3146

3247
# set each tile in the grid to a different sprite index
3348
cards_tilegrid[0, 0] = 10

0 commit comments

Comments
 (0)