boardgames_app/lib/components/checker_comp.dart
2025-06-14 14:28:16 +02:00

45 lines
1.2 KiB
Dart

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<CheckersGame>, 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);
}
}