player.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import 'package:flutter_chinese_chees/models/game_event.dart';
  2. import '../driver/player_driver.dart';
  3. import '../global.dart';
  4. import 'game_manager.dart';
  5. class Player {
  6. GameManager manager;
  7. String lastPosition = '';
  8. String team = 'r';
  9. String title = '红方';
  10. int totalTime = 0;
  11. int stepTime = 0;
  12. late DriverType _driverType;
  13. late PlayerDriver driver;
  14. Player(
  15. this.team,
  16. this.manager, {
  17. this.title = '',
  18. DriverType type = DriverType.user,
  19. }) {
  20. _driverType = type;
  21. }
  22. set driverType(DriverType type) {
  23. _driverType = type;
  24. driver = PlayerDriver.createDriver(this, _driverType);
  25. }
  26. DriverType get driverType => _driverType;
  27. bool get isUser => _driverType == DriverType.user;
  28. bool get isRobot => _driverType == DriverType.robot;
  29. bool get canBacktrace => driver.canBacktrace;
  30. // 通知界面,从界面上过来的着法不需要调用
  31. Future<String> onMove(String move) {
  32. logger.info('onmove');
  33. manager.add(GameMoveEvent(move));
  34. return Future.value(move);
  35. }
  36. Future<bool> onDraw() => driver.tryDraw();
  37. Future<String?> move() => driver.move();
  38. void completeMove(String move) {
  39. driver.completeMove(move);
  40. }
  41. }