game_event.dart 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. enum GameEventType {
  2. move,
  3. engine,
  4. player,
  5. load,
  6. result,
  7. lock,
  8. step,
  9. flip,
  10. }
  11. abstract class GameEvent<T> {
  12. GameEventType type;
  13. T? data;
  14. GameEvent(this.type, [this.data]);
  15. @override
  16. String toString() => '$type $data';
  17. static GameEventType? eventType(Type t) {
  18. switch (t) {
  19. case GameMoveEvent:
  20. return GameEventType.move;
  21. case GameEngineEvent:
  22. return GameEventType.engine;
  23. case GamePlayerEvent:
  24. return GameEventType.player;
  25. case GameLoadEvent:
  26. return GameEventType.load;
  27. case GameResultEvent:
  28. return GameEventType.result;
  29. case GameLockEvent:
  30. return GameEventType.lock;
  31. case GameStepEvent:
  32. return GameEventType.step;
  33. case GameFlipEvent:
  34. return GameEventType.flip;
  35. }
  36. return null;
  37. }
  38. }
  39. class GameMoveEvent extends GameEvent<String> {
  40. GameMoveEvent(String move) : super(GameEventType.move, move);
  41. }
  42. class GameEngineEvent extends GameEvent<String> {
  43. GameEngineEvent(String move) : super(GameEventType.engine, move);
  44. }
  45. class GamePlayerEvent extends GameEvent<int> {
  46. GamePlayerEvent(int hand) : super(GameEventType.player, hand);
  47. }
  48. class GameLoadEvent extends GameEvent<int> {
  49. GameLoadEvent(int state) : super(GameEventType.load, state);
  50. }
  51. class GameResultEvent extends GameEvent<String> {
  52. GameResultEvent(String move) : super(GameEventType.result, move);
  53. }
  54. class GameLockEvent extends GameEvent<bool> {
  55. GameLockEvent(bool isLock) : super(GameEventType.lock, isLock);
  56. }
  57. class GameStepEvent extends GameEvent<String> {
  58. GameStepEvent(String step) : super(GameEventType.step, step);
  59. }
  60. class GameFlipEvent extends GameEvent<bool> {
  61. GameFlipEvent(bool isFlip) : super(GameEventType.flip, isFlip);
  62. }