75 lines
2.2 KiB
PHP
75 lines
2.2 KiB
PHP
<?php
|
||
require __DIR__ . '/../vendor/autoload.php';
|
||
|
||
use Game\Core\ServiceContainer;
|
||
use Game\Event\Event;
|
||
use Game\Model\Quest;
|
||
use Symfony\Component\Console\Input\ArrayInput;
|
||
use Symfony\Component\Console\Output\BufferedOutput;
|
||
use Symfony\Component\Console\Helper\HelperSet;
|
||
use Symfony\Component\Console\Helper\QuestionHelper;
|
||
|
||
$input = new ArrayInput([]);
|
||
$output = new BufferedOutput();
|
||
$helperSet = new HelperSet(['question' => 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";
|