Newer
Older
rpg / v2 / apps / game / tools / probe-dev.mjs
// Одноразовая проба трека 28: дев-панель + вьювер моделей
import { startDevServer, launchBrowser, openGame } from '@rpg/engine/tools/agent-lib.mjs';
const dev = startDevServer({ port: 5334, cwd: 'apps/game' });
await dev.waitReady;
const browser = await launchBrowser();
try {
    const client = await openGame(browser, { url: 'http://localhost:5334/' });
    await client.call('startGame', false);
    await client.call('stepTicks', 20);
    console.log('каталог:', (await client.call('devInfo')).entries.map((e) => e.id).join(', '));
    await client.call('devOpen');
    console.log('панель открыта:', (await client.call('devInfo')).open);
    const id = 'char:Путник (герой)';
    console.log('вьювер:', await client.call('devOpenEntry', id));
    await client.screenshot('/tmp/t28_dev_hero.png');
    console.log('статы:', await client.call('devStats'));
    // скин: переключить на Милу
    await client.evaluate(() => {
        const sel = document.getElementById('dev-skin');
        sel.value = '1';
        sel.dispatchEvent(new Event('change'));
    });
    await client.screenshot('/tmp/t28_dev_mila.png');
    console.log('статы после скина:', await client.call('devStats'));
    // олень и дерево
    console.log('олень:', await client.call('devOpenEntry', 'deer'));
    await client.screenshot('/tmp/t28_dev_deer.png');
    console.log('статы оленя:', await client.call('devStats'));
    console.log('дерево:', await client.call('devOpenEntry', 'tree0'));
    await client.screenshot('/tmp/t28_dev_tree.png');
    console.log('статы дерева:', await client.call('devStats'));
    await client.call('devClose');
    console.log('закрыто:', !(await client.call('devInfo')).open);
    console.log('pageerrors:', client.errors());
} finally {
    await browser.close();
    dev.stop();
    process.exit(0);
}