İçeriğe atla

Fonksiyonlar

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()

fonksiyon
validateStadium(source: string): StadiumValidation

Stadyumu 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

sourcestringzorunlu
Stadyum kaynak metni: bir .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.

check-stadium.mjs
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()

fonksiyon
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

blobBlobzorunlu
Bir kayıt, stopRecording() 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.

JavaScript
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

readonly namestringzorunlu
Stadyum adı, en fazla 64 karakter. Kaynakta ad yoksa Untitled stadium.
readonly canBeStoredbooleanzorunlu
Yalnızca kaynak canBeStored: false ayarladığında false.
readonly warningsreadonly string[]zorunlu
Desteklenmeyen alanlar, yollarıyla birlikte. En fazla 64 tanesi listelenir.