Maçlar
Maçları başlatın, duraklatın ve durdurun, sınırlarını belirleyin ve skoru okuyun.
Bir oda her zaman şu aşamalardan birindedir: maçlar arasında lobby, oynanırken playing, bir golden sonra 5.5 saniye boyunca goal ve bir galibiyetten sonra lobiye dönmeden önce 5 saniye boyunca finished. Simülasyon saniyede 60 tick hızında çalışır.
Kontrol
startGame()
room.startGame(): Promise<void>Maçı lobiden veya bitmiş aşamadan başlatır. Bir maç sürerken hiçbir şey yapmaz. Minimum oyuncu sayısı yoktur. onGameStart olayını tetikler.
Döndürür
Promise<void>
room.onPlayerJoin = async () => {
const fielded = room
.getPlayerList()
.filter((p) => p.team !== 0);
if (
fielded.length >= 2 &&
room.getScores() === null
)
await room.startGame();
};stopGame()
room.stopGame(): Promise<void>Maçı sonlandırır ve lobiye döner. onGameStop olayını tetikler.
Döndürür
Promise<void>
pauseGame()
room.pauseGame(paused: boolean): Promise<void>Sürmekte olan bir maçı dondurur veya devam ettirir; lobide hiçbir şey yapmaz. Devam ettirme, oyun sürmeden önce iki saniyelik bir geri sayım (119 tick) başlatır. onGamePause veya onGameUnpause olayını, ardından onGamePauseChange olayını tetikler.
Parametreler
booleanzorunlutrue duraklatmak için, false devam ettirmek için.Döndürür
Promise<void>
room.onPlayerLeave = async (player) => {
if (player.team !== 0)
await room.pauseGame(true);
};Kurallar
setScoreLimit()
room.setScoreLimit(limit: number): Promise<void>Yalnızca maçlar arasında uygulanır: bir maç sırasında çağrı hiçbir şey yapmaz. Varsayılan değer 5'tir.
Parametreler
numberzorunlu0dan 99a kadar. 0, skor sınırı olmadığı anlamına gelir. Diğer tam sayılar sınırlanır.Döndürür
Promise<void>
await room.setScoreLimit(3);
await room.setTimeLimit(5);
await room.startGame();setTimeLimit()
room.setTimeLimit(minutes: number): Promise<void>Yalnızca maçlar arasında uygulanır. Varsayılan değer 5 dakikadır. Süre dolduğunda önde olan takım kazanır; skor eşitse oyun bir sonraki gole kadar sürer.
Parametreler
numberzorunlu0dan 99a kadar. 0, süre sınırı olmadığı anlamına gelir.Döndürür
Promise<void>
setKickRateLimit()
room.setKickRateLimit(min?: number, rate?: number, burst?: number): Promise<void>Şut spam’ini önlemek için oyuncuların ne kadar hızlı şut atabileceğini sınırlar. Her oyuncu, her tick’te bir tick’lik yeniden dolum kazanır, rate × burst’e kadar, ve şut atmak için negatif olmayan bir bakiyeye ihtiyaç duyar. Değerler kendi aralıklarına sınırlanır. Bir maç sırasında dahil olmak üzere hemen etkili olur. Sınırlanmış değerlerle onKickRateLimitSet olayını tetikler.
Parametreler
number0–255. Varsayılan 2dir.numberrate tick’te bir şut atabilir. 0–255; 0 (varsayılan) kotayı kapatır.number0–100. Varsayılan 0dır.Döndürür
Promise<void>
// A 6-tick cooldown, two kicks a second
// sustained, and up to three kicks saved
// for a quick exchange.
await room.setKickRateLimit(6, 30, 3);Durum
getScores()
room.getScores(): HostScores | nulltime saniye cinsinden oynanan süredir ve timeLimit saniye cinsindendir. Bkz. HostScores.
Döndürür
HostScores | nullSkor, ya da lobide ve oda kapandıktan sonra null.
const scores = room.getScores();
if (scores) {
const minute = Math.floor(scores.time / 60);
await room.sendAnnouncement(
`${minute}' Red ${scores.red}` +
` – ${scores.blue} Blue`,
);
}getBallPosition()
room.getBallPosition(): { x: number; y: number; } | nullDöndürür
{ x: number; y: number; } | nullTopun konumu, ya da lobide ve oda kapandıktan sonra null.
room.onGameTick = () => {
const ball = room.getBallPosition();
if (ball && Math.abs(ball.x) < 1)
centreTicks++;
};getState()
room.getState(): MatchStateTam MatchState nesnesini döndürür: aşama, tick sayaçları, sınırlar, başlama vuruşunu alacak takım ve ham disk verisi. Çoğu ihtiyaç için getScores() ve fizik metotlarını kullanın; getState(), maçı ayrıntılı olarak analiz eden araçlar içindir.
Döndürür
MatchStateMaçın tamamının bir anlık görüntüsü.
const { phase, elapsed, red, blue } =
room.getState();
console.log(
phase,
(elapsed / 60).toFixed(1),
red,
blue,
);