import 'dart:async'; import '../models/game_event.dart'; import '../models/player.dart'; import 'player_driver.dart'; class DriverUser extends PlayerDriver { late Completer<String> requestMove; DriverUser(Player player) : super(player); @override Future<bool> tryDraw() { return Future.value(true); } @override Future<String?> move() { requestMove = Completer<String>(); player.manager.add(GameLockEvent(false)); // 招法提示 player.manager.requestHelp(); return requestMove.future; } @override Future<String> ponder() { // TODO: implement ponder throw UnimplementedError(); } @override void completeMove(String move) { if (!requestMove.isCompleted) { requestMove.complete(move); } } @override Future<bool> tryRetract() { throw UnimplementedError(); } }