PetServiceProvider.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace App\Module\Pet\Providers;
  3. use App\Module\Pet\Commands\GeneratePetJsonCommand;
  4. use App\Module\Pet\Console\ProcessActiveSkillsCommand;
  5. use App\Module\Pet\Events\PetBattleEvent;
  6. use App\Module\Pet\Events\PetCreatedEvent;
  7. use App\Module\Pet\Events\PetLevelUpEvent;
  8. use App\Module\Pet\Events\PetRemouldEvent;
  9. use App\Module\Pet\Events\PetSkillUsedEvent;
  10. use App\Module\Pet\Events\PetStatusChangedEvent;
  11. use App\Module\Pet\Events\PetUpdateEvent;
  12. use App\Module\Pet\Listeners\ItemChangedListener;
  13. use App\Module\Pet\Listeners\LoginSuccessListener;
  14. use App\Module\Pet\Logic\PetLogic;
  15. use Illuminate\Support\Facades\Event;
  16. use Illuminate\Support\Facades\Schedule;
  17. use Illuminate\Support\ServiceProvider;
  18. /**
  19. * 宠物模块服务提供者
  20. *
  21. * 负责注册宠物模块的服务、事件监听器、命令等
  22. */
  23. class PetServiceProvider extends ServiceProvider
  24. {
  25. /**
  26. * 事件到监听器的映射
  27. *
  28. * @var array
  29. */
  30. protected $listen = [
  31. // 监听来自其他模块的事件
  32. \App\Module\AppGame\Events\LoginSuccessEvent::class => [
  33. LoginSuccessListener::class,
  34. ]
  35. ];
  36. /**
  37. * 注册服务
  38. *
  39. * @return void
  40. */
  41. public function register()
  42. {
  43. }
  44. /**
  45. * 启动服务
  46. *
  47. * @return void
  48. */
  49. public function boot()
  50. {
  51. // 注册事件监听器
  52. $this->registerEventListeners();
  53. // 注册命令
  54. if ($this->app->runningInConsole()) {
  55. $this->commands([
  56. \App\Module\Pet\Commands\GeneratePetJsonCommand::class, // 生成宠物配置JSON数据命令
  57. \App\Module\Pet\Console\ProcessActiveSkillsCommand::class, // 处理宠物激活技能命令
  58. ]);
  59. }
  60. // 注册宠物定时任务
  61. $this->registerSchedules();
  62. }
  63. /**
  64. * 注册事件监听器
  65. *
  66. * @return void
  67. */
  68. protected function registerEventListeners()
  69. {
  70. foreach ($this->listen as $event => $listeners) {
  71. foreach ($listeners as $listener) {
  72. Event::listen($event, $listener);
  73. }
  74. }
  75. }
  76. /**
  77. * 注册宠物相关的定时任务
  78. *
  79. * 将原本在 routes/console.php 中的宠物调度配置迁移到此处
  80. */
  81. protected function registerSchedules(): void
  82. {
  83. // 在应用完全启动后注册定时任务
  84. $this->app->booted(function () {
  85. // 每分钟处理宠物激活技能
  86. Schedule::command('pet:process-active-skills')
  87. ->everyMinute()
  88. ->description('处理宠物激活技能');
  89. });
  90. }
  91. }