import 'package:boardgames_app/games/checkers.dart'; import 'package:boardgames_core/games.dart'; import 'package:flame/components.dart'; import 'package:flame/events.dart'; import 'package:flutter/material.dart'; class CheckerComp extends PositionComponent with HasGameRef, Tappable { Checker checker; bool selected = false; CheckerComp(this.checker); @override bool onTapDown(TapDownInfo event) { if (selected) { selected = false; return false; } else if (!checker.isOwner(game.boardGame.currentPlayer!)) { return true; } for (final element in game.children) { if (element != this && element is CheckerComp) { element.selected = false; } } selected = true; return false; } @override void render(Canvas canvas) { position = Vector2(checker.position.column * width, checker.position.row * height); Color color = checker.getOwners().first.id % 2 == 1 ? Colors.red : Colors.white; if (selected) { color = Colors.blue; } final paint = Paint()..color = color; final radius = width / 2; canvas.drawCircle(Offset(radius, radius), radius, paint); } }