PublicApi.getAvailableMaps()

| Chrono Divide | 3 Reads

以下程式碼片段擷取自 @chronodivide/game-api 的型別宣告檔,可看到 getAvailableMaps()PublicApi 類別的一部分,會在完成初始化後回傳可用地圖清單:

export declare class PublicApi {
    #private;
    init(mixDir: string): Promise<void>;
    getAvailableMaps(): string[];
    getAvailableGameModes(mapName: string): number[];
    /**
     * Creates a new game
     *
     * If {@link CreateOfflineOpts.online} is false, an offline game is created, in which multiple AI agents can battle

getAvailableMaps() 會在 cdapi.init() 載入 MIX 資料後,回傳一個字串陣列,內容即為偵測到的全部地圖檔名。通常在選擇地圖或是建立遊戲前需要先呼叫此方法。


使用範例

import { cdapi, CreateOfflineOpts } from "@chronodivide/game-api";

// 初始化 (路徑指向原始 RA2 安裝資料夾或 MIX 檔所在位置)
await cdapi.init(process.env.MIX_DIR || "./");

// 取得目前可用的地圖清單
const mapNames = cdapi.getAvailableMaps();
console.log(`可用地圖共 ${mapNames.length} 張:`);
mapNames.forEach((name, i) => {
    console.log(`${i + 1}. ${name}`);
});

// 選定第一張地圖並查詢可用的遊戲模式
const mapName = mapNames[0];
const mode = cdapi.getAvailableGameModes(mapName)[0];

// 建立一場離線遊戲(簡化設定)
const game = await cdapi.createGame({
    online: false,
    agents: [],               // 此處省略實際 Bot 設定
    mapName,
    gameMode: mode,
});

// 簡易的遊戲迴圈
while (!game.isFinished()) {
    await game.update();
}
game.dispose();

透過此方法,可以列舉所有可選的地圖,進而決定要在哪張地圖開局,並配合 getAvailableGameModes() 取得支援的遊戲模式後建立比賽。这样一來,就能靈活地在多張地圖間測試或開發各種 AI 行為。

 

→返回《@chronodivide/game-api 使用教學與完整 API 對照表》

This article was last edited at