| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- <?php
- namespace App\Module\Pet\Providers;
- use App\Module\Pet\Commands\GeneratePetJsonCommand;
- use App\Module\Pet\Console\ProcessActiveSkillsCommand;
- use App\Module\Pet\Events\PetBattleEvent;
- use App\Module\Pet\Events\PetCreatedEvent;
- use App\Module\Pet\Events\PetLevelUpEvent;
- use App\Module\Pet\Events\PetRemouldEvent;
- use App\Module\Pet\Events\PetSkillUsedEvent;
- use App\Module\Pet\Events\PetStatusChangedEvent;
- use App\Module\Pet\Events\PetUpdateEvent;
- use App\Module\Pet\Listeners\ItemChangedListener;
- use App\Module\Pet\Listeners\LoginSuccessListener;
- use App\Module\Pet\Logic\PetLogic;
- use Illuminate\Support\Facades\Event;
- use Illuminate\Support\Facades\Schedule;
- use Illuminate\Support\ServiceProvider;
- /**
- * 宠物模块服务提供者
- *
- * 负责注册宠物模块的服务、事件监听器、命令等
- */
- class PetServiceProvider extends ServiceProvider
- {
- /**
- * 事件到监听器的映射
- *
- * @var array
- */
- protected $listen = [
- // 监听来自其他模块的事件
- \App\Module\AppGame\Events\LoginSuccessEvent::class => [
- LoginSuccessListener::class,
- ]
- ];
- /**
- * 注册服务
- *
- * @return void
- */
- public function register()
- {
- }
- /**
- * 启动服务
- *
- * @return void
- */
- public function boot()
- {
- // 注册事件监听器
- $this->registerEventListeners();
- // 注册命令
- if ($this->app->runningInConsole()) {
- $this->commands([
- \App\Module\Pet\Commands\GeneratePetJsonCommand::class, // 生成宠物配置JSON数据命令
- \App\Module\Pet\Console\ProcessActiveSkillsCommand::class, // 处理宠物激活技能命令
- ]);
- }
- // 注册宠物定时任务
- $this->registerSchedules();
- }
- /**
- * 注册事件监听器
- *
- * @return void
- */
- protected function registerEventListeners()
- {
- foreach ($this->listen as $event => $listeners) {
- foreach ($listeners as $listener) {
- Event::listen($event, $listener);
- }
- }
- }
- /**
- * 注册宠物相关的定时任务
- *
- * 将原本在 routes/console.php 中的宠物调度配置迁移到此处
- */
- protected function registerSchedules(): void
- {
- // 在应用完全启动后注册定时任务
- $this->app->booted(function () {
- // 每分钟处理宠物激活技能
- Schedule::command('pet:process-active-skills')
- ->everyMinute()
- ->description('处理宠物激活技能');
- });
- }
- }
|