GameServiceProvider.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <?php
  2. namespace App\Module\Game\Providers;
  3. use App\Module\Game\Commands\CleanExpiredRewardLogsCommand;
  4. use App\Module\Game\Commands\ImportRewardGroupsCommand;
  5. use App\Module\Game\Commands\TestConditionCommand;
  6. use App\Module\Game\Commands\TestConsumeCommand;
  7. use App\Module\Game\Commands\TestItemTempCommand;
  8. use App\Module\Game\Events\RewardGrantedEvent;
  9. // 这些事件类需要在 Farm 模块中定义
  10. // 如果 Farm 模块中尚未定义这些事件类,请先在 Farm 模块中创建它们
  11. use App\Module\Farm\Events\HouseDowngradedEvent;
  12. use App\Module\Farm\Events\HouseUpgradedEvent;
  13. use App\Module\Farm\Events\LandCreatedEvent;
  14. use App\Module\Farm\Events\LandStatusChangedEvent;
  15. use App\Module\Farm\Events\LandUpgradedEvent;
  16. use App\Module\Fund\Events\FundChangedEvent;
  17. use App\Module\Game\Listeners\FundChangedListener;
  18. use App\Module\Game\Listeners\HouseDowngradedListener;
  19. use App\Module\Game\Listeners\HouseUpgradedListener;
  20. use App\Module\Game\Listeners\ItemQuantityChangedListener;
  21. use App\Module\Game\Listeners\LandCreatedListener;
  22. use App\Module\Game\Listeners\LandStatusChangedListener;
  23. use App\Module\Game\Listeners\LandUpgradedListener;
  24. use App\Module\Game\Listeners\LogRewardGrantedListener;
  25. use App\Module\Game\Listeners\NotifyRewardGrantedListener;
  26. use App\Module\Game\Listeners\PetCreatedListener;
  27. use App\Module\Game\Listeners\PetStatusChangedListener;
  28. use App\Module\Game\Listeners\PetUpdateListener;
  29. use App\Module\GameItems\Events\ItemQuantityChanged;
  30. use App\Module\Pet\Events\PetCreatedEvent;
  31. use App\Module\Pet\Events\PetStatusChangedEvent;
  32. use App\Module\Pet\Events\PetUpdateEvent;
  33. use Illuminate\Support\ServiceProvider;
  34. use Illuminate\Support\Facades\Event;
  35. /**
  36. * 游戏模块服务提供者
  37. *
  38. * 负责注册游戏模块的事件监听器、命令和其他服务
  39. */
  40. class GameServiceProvider extends ServiceProvider
  41. {
  42. /**
  43. * 要注册的命令
  44. *
  45. * @var array
  46. */
  47. protected $commands = [
  48. TestItemTempCommand::class,
  49. ImportRewardGroupsCommand::class,
  50. CleanExpiredRewardLogsCommand::class,
  51. TestConsumeCommand::class,
  52. TestConditionCommand::class,
  53. ];
  54. /**
  55. * 注册服务
  56. */
  57. public function register(): void
  58. {
  59. // 注册命令
  60. $this->commands($this->commands);
  61. }
  62. /**
  63. * 启动服务
  64. */
  65. public function boot(): void
  66. {
  67. // 注册事件监听器
  68. Event::listen(
  69. ItemQuantityChanged::class,
  70. ItemQuantityChangedListener::class
  71. );
  72. // 注册宠物事件监听器
  73. Event::listen(
  74. PetCreatedEvent::class,
  75. PetCreatedListener::class
  76. );
  77. Event::listen(
  78. PetStatusChangedEvent::class,
  79. PetStatusChangedListener::class
  80. );
  81. Event::listen(
  82. PetUpdateEvent::class,
  83. PetUpdateListener::class
  84. );
  85. // 注册奖励组系统事件监听器
  86. Event::listen(
  87. RewardGrantedEvent::class,
  88. LogRewardGrantedListener::class
  89. );
  90. Event::listen(
  91. RewardGrantedEvent::class,
  92. NotifyRewardGrantedListener::class
  93. );
  94. // 注册土地事件监听器
  95. Event::listen(
  96. LandCreatedEvent::class,
  97. LandCreatedListener::class
  98. );
  99. Event::listen(
  100. LandUpgradedEvent::class,
  101. LandUpgradedListener::class
  102. );
  103. Event::listen(
  104. LandStatusChangedEvent::class,
  105. LandStatusChangedListener::class
  106. );
  107. // 注册房屋事件监听器
  108. Event::listen(
  109. HouseUpgradedEvent::class,
  110. HouseUpgradedListener::class
  111. );
  112. Event::listen(
  113. HouseDowngradedEvent::class,
  114. HouseDowngradedListener::class
  115. );
  116. // 注册资金事件监听器
  117. Event::listen(
  118. FundChangedEvent::class,
  119. FundChangedListener::class
  120. );
  121. }
  122. }