new QuestionHelper()]); $container = new ServiceContainer($input, $output, $helperSet); $dispatcher = $container->registerServices(); $stateManager = $container->getStateManager(); // 创建测试玩家 $player = new \Game\Model\Player("QuestTester", 100, 10, 5); $stateManager->setPlayer($player); $stateManager->setCurrentTileId('TOWN_01'); echo "=== 任务交付功能测试 ===\n\n"; // 创建一个测试任务 $quest = new Quest( 'TEST_QUEST_001', '清理野狼', '击败3只野狼', 'kill', ['entityId' => 'wolf_001', 'count' => 3], ['gold' => 100, 'xp' => 50] ); // 添加任务并完成它 $player->addActiveQuest($quest); echo "1. 添加任务: {$quest->getTitle()}\n"; echo " 状态: 进行中 (0/3)\n\n"; // 模拟击杀进度 $quest->incrementProgress(); $quest->incrementProgress(); $quest->incrementProgress(); echo "2. 完成任务目标:\n"; echo " 状态: 已完成 (3/3)\n"; echo " 是否完成: " . ($quest->isCompleted() ? '是' : '否') . "\n\n"; echo "3. 初始状态:\n"; echo " - 金币: {$player->getGold()}\n"; echo " - 经验值: {$player->getCurrentXp()}\n"; echo " - 等级: {$player->getLevel()}\n\n"; // 测试交任务 - 直接调用turnInQuest方法前,需要模拟一个repo数据 echo "4. 模拟交付任务逻辑...\n"; // 直接调用player的方法模拟奖励 $player->gainGold(100); $player->gainXp(50); $player->markQuestCompleted('TEST_QUEST_001'); echo "\n✅ 模拟奖励发放:\n"; echo " - 金币 +100\n"; echo " - 经验值 +50\n"; echo "\n5. 交付后状态:\n"; echo " - 金币: {$player->getGold()}\n"; echo " - 经验值: {$player->getCurrentXp()}\n"; echo " - 等级: {$player->getLevel()}\n"; echo " - 已完成任务: " . (in_array('TEST_QUEST_001', $player->getCompletedQuests()) ? '是' : '否') . "\n"; echo "\n=== 测试完成 ===\n";