feat: glossy tile rendering and per-season theme colors
Introduces candy-gloss tile rendering (diagonal gradient + glass highlight + optional glow) via a shared paintGlossyTile() in tile_painter.dart, applied to board filled-cells and tray/drag-overlay pieces. Adds ThemeColors to palette.dart for UI-layer season color resolution, and activeThemeProvider for one-call access to the active season's theme. Regenerates the game_screen golden to reflect the new look.
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../game/models/season.dart';
|
||||
|
||||
/// Season-themeable color set. Season 1 default: vivid candy tones on a
|
||||
/// deep navy board.
|
||||
class GamePalette {
|
||||
@@ -24,3 +26,26 @@ class GamePalette {
|
||||
static const ghostLegal = Color(0x66FFFFFF);
|
||||
static const ghostIllegal = Color(0x55FF5252);
|
||||
}
|
||||
|
||||
/// Resolved per-season colors for the UI layer. Built from a SeasonTheme;
|
||||
/// falls back to the GamePalette constants.
|
||||
class ThemeColors {
|
||||
ThemeColors(SeasonTheme theme)
|
||||
: gradient = [for (final c in theme.backgroundGradient) Color(c)],
|
||||
accent = Color(theme.accentColor),
|
||||
particleType = theme.particleType,
|
||||
board = theme.boardTint != null
|
||||
? Color(theme.boardTint!)
|
||||
: GamePalette.boardBackground,
|
||||
tiles = theme.tilePalette != null
|
||||
? [for (final c in theme.tilePalette!) Color(c)]
|
||||
: GamePalette.tileColors;
|
||||
|
||||
final List<Color> gradient;
|
||||
final Color accent;
|
||||
final String particleType;
|
||||
final Color board;
|
||||
final List<Color> tiles;
|
||||
|
||||
Color tile(int colorId) => tiles[colorId % tiles.length];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user