setStream($stream); $input->setInteractive(true); $output = new BufferedOutput(); $helperSet = new HelperSet(['question' => new QuestionHelper()]); $container = new ServiceContainer($input, $output, $helperSet); $dispatcher = $container->registerServices(); $stateManager = $container->getStateManager(); // Manually create and set player for test environment $player = new \Game\Model\Player("TestHero", 100, 10, 5); $stateManager->setPlayer($player); echo "Player Initialized.\n"; // 1. Simulate meeting NPC (Starts Dialogue) echo "Dispatching Interaction Event...\n"; $dispatcher->dispatch(new Event('AttemptInteractEvent', ['npcId' => 'VILLAGER_1'])); echo "Checking output...\n"; $display = $output->fetch(); echo $display; if (strpos($display, '你好啊,年轻人') !== false) { echo "SUCCESS: Dialogue triggered.\n"; } else { echo "FAILURE: Dialogue text not found.\n"; } // 2. Simulate User Input: Select Option 0 (via Event, since InputHandler is not running loop) echo "Dispatching Choice 0...\n"; $dispatcher->dispatch(new Event('DialogueChoice', ['choice' => '0'])); $display = $output->fetch(); echo $display; if (strpos($display, '真的吗?那太好了') !== false) { echo "SUCCESS: Dialogue advanced.\n"; } else { echo "FAILURE: Dialogue advancement failed.\n"; } // 3. Simulate User Input: Select Option 0 (Accept Quest) echo "Dispatching Choice 0 (Accept)...\n"; $dispatcher->dispatch(new Event('DialogueChoice', ['choice' => '0'])); $display = $output->fetch(); echo $display; if (strpos($display, '接受任务') !== false) { echo "SUCCESS: Quest accepted.\n"; } else { echo "FAILURE: Quest acceptance message not found.\n"; }