add support for 9.x and 10.x tilepalettemapper API.
This commit is contained in:
parent
8d7141d02e
commit
7f89d19b5f
4 changed files with 50 additions and 15 deletions
|
|
@ -19,7 +19,7 @@ import adafruit_imageload
|
||||||
|
|
||||||
|
|
||||||
# use the built-in HSTX display
|
# use the built-in HSTX display
|
||||||
request_display_config(320,240)
|
request_display_config(320, 240)
|
||||||
display = supervisor.runtime.display
|
display = supervisor.runtime.display
|
||||||
|
|
||||||
# screen size in tiles, tiles are 16x16
|
# screen size in tiles, tiles are 16x16
|
||||||
|
|
@ -67,7 +67,12 @@ for i in range(0, len(COLORS)):
|
||||||
shader_palette[i + 1] = COLORS[i]
|
shader_palette[i + 1] = COLORS[i]
|
||||||
|
|
||||||
# mapper to change colors of tiles within the grid
|
# 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
|
# load the spritesheet
|
||||||
katakana_bmp, katakana_pixelshader = adafruit_imageload.load("matrix_characters.bmp")
|
katakana_bmp, katakana_pixelshader = adafruit_imageload.load("matrix_characters.bmp")
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import array
|
||||||
import atexit
|
import atexit
|
||||||
import io
|
import io
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
|
|
||||||
import board
|
import board
|
||||||
|
|
@ -217,7 +218,11 @@ for i in range(2):
|
||||||
|
|
||||||
# create tile palette mappers
|
# create tile palette mappers
|
||||||
for i in range(2):
|
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)
|
palette_mappers.append(palette_mapper)
|
||||||
|
|
||||||
# create tilegrid for each mouse
|
# create tilegrid for each mouse
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
|
import sys
|
||||||
import time
|
import time
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
|
|
@ -133,7 +134,10 @@ class Match3Card(Group):
|
||||||
|
|
||||||
def __init__(self, card_tuple, **kwargs):
|
def __init__(self, card_tuple, **kwargs):
|
||||||
# tile palette mapper to color the card
|
# 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
|
kwargs["pixel_shader"] = self._mapper
|
||||||
# tile grid to for the visible sprite
|
# tile grid to for the visible sprite
|
||||||
self._tilegrid = TileGrid(**kwargs)
|
self._tilegrid = TileGrid(**kwargs)
|
||||||
|
|
@ -580,9 +584,11 @@ class Match3Game(Group):
|
||||||
# if 3 cards have been clicked
|
# if 3 cards have been clicked
|
||||||
if len(self.clicked_cards) == 3:
|
if len(self.clicked_cards) == 3:
|
||||||
# check if the 3 cards make a valid set
|
# check if the 3 cards make a valid set
|
||||||
valid_set = validate_set(self.clicked_cards[0],
|
valid_set = validate_set(
|
||||||
self.clicked_cards[1],
|
self.clicked_cards[0],
|
||||||
self.clicked_cards[2])
|
self.clicked_cards[1],
|
||||||
|
self.clicked_cards[2],
|
||||||
|
)
|
||||||
|
|
||||||
# if they are a valid set
|
# if they are a valid set
|
||||||
if valid_set:
|
if valid_set:
|
||||||
|
|
@ -660,7 +666,9 @@ class Match3Game(Group):
|
||||||
# load the game from the given game state
|
# load the game from the given game state
|
||||||
self.load_from_game_state(self.game_state)
|
self.load_from_game_state(self.game_state)
|
||||||
# hide the title screen
|
# 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
|
# set the current state to open play
|
||||||
self.cur_state = STATE_PLAYING_OPEN
|
self.cur_state = STATE_PLAYING_OPEN
|
||||||
|
|
||||||
|
|
@ -676,7 +684,9 @@ class Match3Game(Group):
|
||||||
# initialize a new game
|
# initialize a new game
|
||||||
self.init_new_game()
|
self.init_new_game()
|
||||||
# hide the title screen
|
# 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
|
# set the current state to open play
|
||||||
self.cur_state = STATE_PLAYING_OPEN
|
self.cur_state = STATE_PLAYING_OPEN
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# SPDX-FileCopyrightText: Copyright (c) 2025 Tim Cocks for Adafruit Industries
|
# SPDX-FileCopyrightText: Copyright (c) 2025 Tim Cocks for Adafruit Industries
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: MIT
|
# SPDX-License-Identifier: MIT
|
||||||
|
import sys
|
||||||
|
|
||||||
import supervisor
|
import supervisor
|
||||||
from displayio import Group, OnDiskBitmap, TileGrid
|
from displayio import Group, OnDiskBitmap, TileGrid
|
||||||
|
|
@ -20,14 +21,28 @@ display.root_group = main_group
|
||||||
spritesheet_bmp = OnDiskBitmap("match3_cards_spritesheet.bmp")
|
spritesheet_bmp = OnDiskBitmap("match3_cards_spritesheet.bmp")
|
||||||
|
|
||||||
# create a TilePaletteMapper
|
# create a TilePaletteMapper
|
||||||
tile_palette_mapper = TilePaletteMapper(
|
if sys.implementation.version[0] == 9:
|
||||||
spritesheet_bmp.pixel_shader, # input pixel_shader
|
tile_palette_mapper = TilePaletteMapper(
|
||||||
5, # input color count
|
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
|
# create a TileGrid to show some cards
|
||||||
cards_tilegrid = TileGrid(spritesheet_bmp, pixel_shader=tile_palette_mapper,
|
cards_tilegrid = TileGrid(
|
||||||
width=3, height=1, tile_width=24, tile_height=32)
|
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
|
# set each tile in the grid to a different sprite index
|
||||||
cards_tilegrid[0, 0] = 10
|
cards_tilegrid[0, 0] = 10
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue