care_taker.dart 607 B

1234567891011121314151617181920212223242526272829
  1. import 'memo.dart';
  2. class CareTaker {
  3. final List<Memo> _mementoList = [];
  4. void add(Memo memo) {
  5. _mementoList.add(memo);
  6. if (_mementoList.length > 10) {
  7. _mementoList.removeAt(0);
  8. }
  9. }
  10. /// 撤销人类+AI 各一步(共两步),恢复到此前快照。
  11. Memo getLast() {
  12. if (_mementoList.length < 3) {
  13. return Memo();
  14. }
  15. final memo = _mementoList[_mementoList.length - 3];
  16. _mementoList.removeLast();
  17. _mementoList.removeLast();
  18. return Memo(memo.state);
  19. }
  20. void clear() {
  21. _mementoList.clear();
  22. }
  23. int get length => _mementoList.length;
  24. }