Skip to content

Commit 0b7aa5d

Browse files
authored
Merge pull request #3034 from FoamyGuy/tilepalettemapper_api_update
Tilepalettemapper api update
2 parents 54ab01f + 84b025b commit 0b7aa5d

File tree

4 files changed

+52
-18
lines changed

4 files changed

+52
-18
lines changed

Metro/Metro_RP2350_CircuitPython_Matrix/code.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@
1414
import supervisor
1515
from displayio import Group, TileGrid
1616
from tilepalettemapper import TilePaletteMapper
17+
from adafruit_fruitjam.peripherals import request_display_config
1718
import adafruit_imageload
1819

20+
1921
# use the built-in HSTX display
22+
request_display_config(320, 240)
2023
display = supervisor.runtime.display
2124

2225
# screen size in tiles, tiles are 16x16
@@ -64,7 +67,12 @@
6467
shader_palette[i + 1] = COLORS[i]
6568

6669
# mapper to change colors of tiles within the grid
67-
grid_color_shader = TilePaletteMapper(shader_palette, 2, SCREEN_WIDTH, SCREEN_HEIGHT)
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)
6876

6977
# load the spritesheet
7078
katakana_bmp, katakana_pixelshader = adafruit_imageload.load("matrix_characters.bmp")

Metro/Metro_RP2350_Match3/match3_game/code.py

Lines changed: 9 additions & 3 deletions
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,9 +218,11 @@
217218

218219
# create tile palette mappers
219220
for i in range(2):
220-
palette_mapper = TilePaletteMapper(remap_palette, 3, 1, 1)
221-
# remap index 2 to each of the colors in mouse colors list
222-
palette_mapper[0] = [0, 1, i + 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+
223226
palette_mappers.append(palette_mapper)
224227

225228
# create tilegrid for each mouse
@@ -228,6 +231,9 @@
228231
mouse_tg.y = display.height // scale_factor // 2
229232
mouse_tgs.append(mouse_tg)
230233

234+
# remap index 2 to each of the colors in mouse colors list
235+
palette_mapper[0] = [0, 1, i + 3]
236+
231237
# USB info lists
232238
mouse_interface_indexes = []
233239
mouse_endpoint_addresses = []

Metro/Metro_RP2350_Match3/match3_game/match3_game_helpers.py

Lines changed: 13 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, 1, 1)
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,7 @@ 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 = True
664670
# set the current state to open play
665671
self.cur_state = STATE_PLAYING_OPEN
666672

@@ -676,7 +682,7 @@ def handle_left_click(self, player_index, coords):
676682
# initialize a new game
677683
self.init_new_game()
678684
# hide the title screen
679-
self.title_screen.hidden = True # pylint: disable=attribute-defined-outside-init
685+
self.title_screen.hidden = True
680686
# set the current state to open play
681687
self.cur_state = STATE_PLAYING_OPEN
682688

@@ -727,6 +733,7 @@ class Match3TitleScreen(Group):
727733

728734
def __init__(self, display_size):
729735
super().__init__()
736+
self.hidden = False
730737
self.display_size = display_size
731738
# background bitmap color
732739
bg_bmp = Bitmap(display_size[0] // 10, display_size[1] // 10, 1)

Metro/Metro_RP2350_Match3/tilepalettemapper_demo/code.py

Lines changed: 21 additions & 8 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,16 +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-
3, # grid width
27-
1 # grid height
28-
)
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+
)
2936

3037
# create a TileGrid to show some cards
31-
cards_tilegrid = TileGrid(spritesheet_bmp, pixel_shader=tile_palette_mapper,
32-
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+
)
3346

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

0 commit comments

Comments
 (0)