Select Git revision
pubspec.yaml
-
Benoît Harrault authoredBenoît Harrault authored
game_board_painter.dart 6.24 KiB
import 'dart:math';
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
import 'package:jeweled/config/default_global_settings.dart';
import 'package:jeweled/models/game.dart';
import 'package:jeweled/models/cell_location.dart';
import 'package:jeweled/utils/color_extensions.dart';
import 'package:jeweled/utils/color_theme.dart';
class GameBoardPainter extends CustomPainter {
const GameBoardPainter({
required this.game,
required this.animations,
});
final Game game;
final List<List<Animation<double>?>> animations;
@override
void paint(Canvas canvas, Size size) {
int graphicTheme = game.globalSettings.graphicTheme;
final double canvasSize = min(size.width, size.height);
const double cellBorderWidth = 2;
const double boardBorderWidth = 3;
switch (graphicTheme) {
case DefaultGlobalSettings.graphicThemeSolidBackground:
this.drawBoard(
canvas: canvas,
canvasSize: canvasSize,
game: game,
);
break;
case DefaultGlobalSettings.graphicThemeGradientAndBorder:
this.drawBoard(
canvas: canvas,
canvasSize: canvasSize,
game: game,
borderWidth: cellBorderWidth,
gradientFrom: -10,
gradientTo: 10,
);
break;
case DefaultGlobalSettings.graphicThemeEmojis:
this.drawBoard(
canvas: canvas,
canvasSize: canvasSize,
game: game,
contentStrings: DefaultGlobalSettings.graphicThemeContentEmojiStrings,
);
break;
case DefaultGlobalSettings.graphicThemePatterns:
this.drawBoard(
canvas: canvas,
canvasSize: canvasSize,
game: game,
contentStrings: DefaultGlobalSettings.graphicThemeContentPatternStrings,
);
break;
default:
}
// board borders
final boardPaintBorder = Paint();
boardPaintBorder.color = ColorTheme.getBorderColor();