From 8739fc0e26fc7a1b16fe29eb499d85bbfa764dae Mon Sep 17 00:00:00 2001 From: airkjw Date: Thu, 11 Jun 2026 21:06:26 +0900 Subject: [PATCH] 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. --- lib/state/providers.dart | 7 +++++ lib/ui/theme/palette.dart | 25 ++++++++++++++++ lib/ui/widgets/board_painter.dart | 40 ++++++++++++------------- lib/ui/widgets/piece_painter.dart | 17 ++++------- lib/ui/widgets/tile_painter.dart | 47 ++++++++++++++++++++++++++++++ test/ui/goldens/game_screen.png | Bin 19544 -> 31544 bytes 6 files changed, 104 insertions(+), 32 deletions(-) create mode 100644 lib/ui/widgets/tile_painter.dart diff --git a/lib/state/providers.dart b/lib/state/providers.dart index 707e35e..2245813 100644 --- a/lib/state/providers.dart +++ b/lib/state/providers.dart @@ -45,3 +45,10 @@ final seasonsProvider = FutureProvider>( final streakProvider = NotifierProvider( StreakNotifier.new, ); + +/// The visual theme of whatever season is in play; fallback outside seasons +/// (home, endless). Pure model — UI converts via ThemeColors. +final activeThemeProvider = Provider((ref) { + final flow = ref.watch(seasonFlowProvider); + return flow?.pack.theme ?? SeasonTheme.fallback; +}); diff --git a/lib/ui/theme/palette.dart b/lib/ui/theme/palette.dart index 45ea3f3..12620ea 100644 --- a/lib/ui/theme/palette.dart +++ b/lib/ui/theme/palette.dart @@ -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 gradient; + final Color accent; + final String particleType; + final Color board; + final List tiles; + + Color tile(int colorId) => tiles[colorId % tiles.length]; +} diff --git a/lib/ui/widgets/board_painter.dart b/lib/ui/widgets/board_painter.dart index e07e70f..68d80b7 100644 --- a/lib/ui/widgets/board_painter.dart +++ b/lib/ui/widgets/board_painter.dart @@ -6,6 +6,7 @@ import '../../game/models/piece.dart'; import '../theme/palette.dart'; import 'board_geometry.dart'; import 'piece_painter.dart'; +import 'tile_painter.dart'; /// Drag ghost preview: a piece hovering at a snapped anchor. class GhostSpec { @@ -55,27 +56,20 @@ class BoardPainter extends CustomPainter { for (var x = 0; x < GridState.size; x++) { final rect = geo.cellRect(x, y).deflate(inset); final cell = grid.cellAt(x, y); - final paint = Paint() - ..color = switch (cell.type) { - CellType.empty => GamePalette.emptyCell, - CellType.filled => GamePalette.tile(cell.colorId), - CellType.gem => GamePalette.emptyCell, - }; - canvas.drawRRect(RRect.fromRectAndRadius(rect, radius), paint); - - if (cell.type == CellType.gem) { - _paintGem(canvas, rect); - } else if (cell.type == CellType.filled) { - final highlight = Paint() - ..color = Colors.white.withValues(alpha: 0.15); - canvas.drawRRect( - RRect.fromRectAndRadius( - Rect.fromLTWH( - rect.left, rect.top, rect.width, rect.height * 0.32), - radius, - ), - highlight, - ); + switch (cell.type) { + case CellType.empty: + canvas.drawRRect( + RRect.fromRectAndRadius(rect, radius), + Paint()..color = GamePalette.emptyCell, + ); + case CellType.filled: + paintGlossyTile(canvas, rect, GamePalette.tile(cell.colorId)); + case CellType.gem: + canvas.drawRRect( + RRect.fromRectAndRadius(rect, radius), + Paint()..color = GamePalette.emptyCell, + ); + _paintGem(canvas, rect); } } } @@ -111,6 +105,10 @@ class BoardPainter extends CustomPainter { } void _paintGem(Canvas canvas, Rect rect) { + final glowPaint = Paint() + ..color = GamePalette.gem.withValues(alpha: 0.45) + ..maskFilter = MaskFilter.blur(BlurStyle.normal, rect.width * 0.25); + canvas.drawCircle(rect.center, rect.width * 0.32, glowPaint); final center = rect.center; final r = rect.width * 0.32; final path = Path() diff --git a/lib/ui/widgets/piece_painter.dart b/lib/ui/widgets/piece_painter.dart index d0f5793..59ca681 100644 --- a/lib/ui/widgets/piece_painter.dart +++ b/lib/ui/widgets/piece_painter.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import '../../game/models/piece.dart'; import '../theme/palette.dart'; +import 'tile_painter.dart'; /// Draws a piece as rounded tiles at a given cell size; reused by the tray, /// the drag overlay, and ghost previews. @@ -12,8 +13,6 @@ void paintPiece( Offset origin = Offset.zero, Color? overrideColor, }) { - final paint = Paint() - ..color = overrideColor ?? GamePalette.tile(piece.colorId); final inset = cellSize * 0.05; final radius = Radius.circular(cellSize * 0.18); for (final (dx, dy) in piece.offsets) { @@ -23,17 +22,13 @@ void paintPiece( cellSize - inset * 2, cellSize - inset * 2, ); - canvas.drawRRect(RRect.fromRectAndRadius(rect, radius), paint); - if (overrideColor == null) { - // Subtle top highlight for depth. - final highlight = Paint()..color = Colors.white.withValues(alpha: 0.18); + if (overrideColor != null) { canvas.drawRRect( - RRect.fromRectAndRadius( - Rect.fromLTWH(rect.left, rect.top, rect.width, rect.height * 0.32), - radius, - ), - highlight, + RRect.fromRectAndRadius(rect, radius), + Paint()..color = overrideColor, ); + } else { + paintGlossyTile(canvas, rect, GamePalette.tile(piece.colorId)); } } } diff --git a/lib/ui/widgets/tile_painter.dart b/lib/ui/widgets/tile_painter.dart new file mode 100644 index 0000000..9084fc2 --- /dev/null +++ b/lib/ui/widgets/tile_painter.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; + +Color lighten(Color c, double amount) => Color.lerp(c, Colors.white, amount)!; +Color darken(Color c, double amount) => Color.lerp(c, Colors.black, amount)!; + +/// Candy-gloss tile: diagonal gradient body, glass top highlight, optional +/// colored glow (used for gems and clear flashes). Shared by the board, +/// tray, and drag overlay so every tile in the game matches. +void paintGlossyTile( + Canvas canvas, + Rect rect, + Color color, { + double radiusFactor = 0.18, + double glow = 0, +}) { + final radius = Radius.circular(rect.width * radiusFactor); + final rrect = RRect.fromRectAndRadius(rect, radius); + + if (glow > 0) { + final glowPaint = Paint() + ..color = color.withValues(alpha: 0.55 * glow) + ..maskFilter = + MaskFilter.blur(BlurStyle.normal, rect.width * 0.28 * glow); + canvas.drawRRect(rrect.inflate(rect.width * 0.05), glowPaint); + } + + final body = Paint() + ..shader = LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [lighten(color, 0.28), color, darken(color, 0.22)], + stops: const [0.0, 0.45, 1.0], + ).createShader(rect); + canvas.drawRRect(rrect, body); + + final highlight = Paint()..color = Colors.white.withValues(alpha: 0.30); + final hl = Rect.fromLTWH( + rect.left + rect.width * 0.10, + rect.top + rect.height * 0.07, + rect.width * 0.80, + rect.height * 0.30, + ); + canvas.drawRRect( + RRect.fromRectAndRadius(hl, Radius.circular(rect.width * 0.12)), + highlight, + ); +} diff --git a/test/ui/goldens/game_screen.png b/test/ui/goldens/game_screen.png index 83df2ecc6d61ee9d69857df89725d127fba77979..f85011cf6adc7b1da24052f5d71eb87b72563428 100644 GIT binary patch literal 31544 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 QoPLd?s;sG0py62nj_%2u+X{2q<-fAW9dc_dq~O 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 OQG2ZUs94cF;Qs-W7jgLj