fanren/tests/test_map_display.php
2025-12-24 21:10:08 +08:00

54 lines
1.8 KiB
PHP

<?php
require __DIR__ . '/../vendor/autoload.php';
use Game\Core\ServiceContainer;
use Game\Event\Event;
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("HanLi", 100, 10, 5);
$player->gainGold(50); // 给玩家一些初始金币
$stateManager->setPlayer($player);
$stateManager->setCurrentTileId('TOWN_01');
echo "=== 《凡人修仙传》第一阶段地图显示测试 ===\n\n";
// 测试地图显示
$mapRepo = $container->getMapRepository();
$stateManager->setCurrentTileId('CAVE_01');
$dispatcher->dispatch(new Event('StartInteractionEvent', ['npcId' => 'MODOCTOR']));
dd(2);
// 手动调用UIService显示地图信息
$uiService = new \Game\System\UIService($output, $stateManager, $container->getQuestRepository());
echo "1. 地图显示测试:\n";
$uiService->handleEvent(new Event('ShowMenuEvent'));
echo "\n" . $output->fetch() . "\n";
echo "\n2. 目标位置名称验证:\n";
foreach ($tile->connections as $dir => $targetId) {
$targetTile = $mapRepo->createTile($targetId);
$directionMap = [
'N' => '北',
'S' => '南',
'E' => '东',
'W' => '西'
];
$direction = $directionMap[$dir] ?? $dir;
echo " - {$direction}方向: {$targetTile->name} (ID: {$targetId})\n";
}
echo "\n=== 测试完成 ===\n";
echo "地图显示已更新,现在会显示方向和目标位置名称!\n";