Stadyumlar ve tekrarlar
Oda açmadan stadyum dosyalarını kontrol edin ve kayıtları çözün.
Her iki fonksiyon da ball2d ve ball2d/node tarafından dışa aktarılır ve API anahtarı veya çalışan bir oda olmadan çalışır.
validateStadium()
validateStadium(source: string): StadiumValidationStadyumu tam olarak bir odanın yapacağı gibi ayrıştırır ve bir oda yükleyemeyecekse hata fırlatır. Sözdizimini, yapıyı, geometriyi ve çarpışma bütçesini kontrol eder; geçmesi, stadyumun yüklendiği anlamına gelir, iyi oynadığı anlamına gelmez.
Kaynaklar 256 KB, 63 disk, 1,024 köşe, 64 düzlem, 16 kale ve 128 eklemle sınırlıdır. Bilinmeyen alanlar doğrulamayı başarısız kılmaz; her biri warnings içinde bildirilir, örneğin Unsupported stadium field: $.discs[2].bar.
Parametreler
stringzorunlu.ball2dstadium veya JSON dosyasının içeriği.Döndürür
StadiumValidationStadyum adı, saklanıp saklanamayacağı ve Ball2D'nin yok saydığı alanlar için uyarılar.
import { readFile } from 'node:fs/promises';
import { validateStadium } from 'ball2d/node';
const source = await readFile(
'futsal.ball2dstadium',
'utf8',
);
try {
const report = validateStadium(source);
console.log(report.name, report.warnings);
} catch (error) {
console.error(
'Stadium rejected:',
error.message,
);
}readReplay()
readReplay(blob: Blob): Promise<Replay>Bir kaydı çözer ve doğrular. Kayıtlar ikilidir (binary); onları JSON olarak ayrıştırmayın.
Yalnızca aynı motor derlemesiyle yapılan kayıtlar okunabilir. Başka bir motordan gelen bir kayıt Unsupported replay engine/version ile reddedilir, bu nedenle eski dosyaları okumanız gerekiyorsa kayıt yaptığınız SDK sürümünü koruyun.
Parametreler
BlobzorunlustopRecording() tarafından döndürüldüğü veya bir .ball2drep dosyasından okunduğu şekliyle. En fazla 32 MB.Döndürür
Promise<Replay>Çözülmüş kayıt.
import { readFile } from 'node:fs/promises';
import { readReplay } from 'ball2d/node';
const bytes = await readFile('final.ball2drep');
const replay = await readReplay(
new Blob([bytes]),
);
const seconds =
(replay.end - replay.initial.tick) / 60;
console.log(
`${seconds.toFixed(1)} s,` +
` ${replay.commands.length} commands`,
);StadiumValidation
İçe aktarmaball2dball2d/node
interface StadiumValidationstringzorunluUntitled stadium.booleanzorunlucanBeStored: false ayarladığında false.readonly string[]zorunlu