PublicApi.getAvailableMaps()
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1239
以下程式碼片段擷取自 @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