zego-mini-game-engine
Version:
ZEGO GAME ENGINE
829 lines (828 loc) • 21.2 kB
TypeScript
export interface ZegoErrorResult {
errorCode: ZegoErrorCode;
message: string;
}
export interface ZegoGameInfo {
desc: string;
gameMode: ZegoGameMode[];
gameOrientation: ZegoGameOrientation;
miniGameId: string;
mgName: string;
thumbnail: string;
}
export interface ZegoGameInfoDetail extends ZegoGameInfo {
designHeight: number;
designWidth: number;
mgUrl: string;
player: number[];
safeHeight: number;
spin: number[];
}
export interface ZegoCustomComponent {
name: string;
label: string;
isShow: boolean;
}
export interface ZegoCustomFunction {
name: string;
label: string;
}
export interface ZegoGameIntroduction {
useHtmlString: boolean;
title?: string;
content?: string;
}
export declare enum ZegoRole {
Player = 0,
Audience = 1
}
export declare enum ZegoTaxType {
AllDeduction = 1,
WinnerDeduction = 2
}
export declare enum ZegoSoundPlayType {
Once = 0,
Loop = 1
}
export declare enum ZegoActionType {
Ready = 1000,
CancelReady = 1001,
Join = 1002,
Start = 1003,
Stop = 1004,
End = 1005,
SettleClose = 1006,
SettleAgain = 1007,
SupplementaryPoints = 1008,
BlankArea = 1009,
Quit = 1010,
PointsInsufficientConfirmButton = 1011,
AvatarClicked = 2000,
ClickNoGamingAreas = 2001,
SettleData = 3001,
AvatarData = 3002,
Share = 8008
}
export interface ZegoLoadGameConfig {
[index: string]: any;
}
export interface ZegoStartGameConfig {
taxType?: ZegoTaxType;
taxRate?: number;
customConfig?: Record<string, any>;
minGamePoint: number;
timeout: number;
}
export interface ZegoGameList {
total: number;
list: ZegoGameInfo[];
}
export interface ZegoRobotAttribute {
robotLevel: number;
robotName: string;
robotAvatar: string;
seatIndex: number;
robotPoint: number;
}
export interface ZegoSettings extends ZegoRobotAttribute {
useRobotAfterSeconds: number;
}
export interface ZegoPlayer {
userId: string;
seatIndex: number;
}
export declare enum ZegoGamePlayerState {
ZegoGamePlayerStartPlay = 0,
ZegoGamePlayerStopPlay = 1
}
export interface ZegoStreamProfile {
fps: number;
minBitrate: number;
maxBitrate: number;
}
export interface ZegoStartCloudGameConfig {
runningParameters: string;
resolution?: string;
codecType?: number;
bitRate?: number;
fps?: number;
}
export declare enum ZegoGameMode {
GameModeAll = 0,
GameModeHostsGame = 1,
GameModeShowGame = 2,
GameModeMallGame = 3,
GameModeCloudGame = 4,
GameModeMatchInGame = 5
}
export declare enum ZegoGameOrientation {
OrientationBoth = 0,
OrientationPortrait = 1,
OrientationLandscape = 2
}
/**
* 命名规则:6位数字符串,前2位代表供应商或客户(如:00代表zego),前3-4位代表设置类型(如:01代表背景),后2位代表设置值类型(如:00代表开关、01代表值大小)
*/
export declare enum ZegoGameSettingType {
BGMState = "000100",
BGMRange = "000101",
SoundEffectsState = "000200",
SoundEffectsRange = "000201",
VibrateState = "000300"
}
export declare enum ZegoGameSettingState {
Close = "0",
Open = "1"
}
export interface ZegoGameSettingUpdate {
settingType: ZegoGameSettingType;
settingValue: ZegoGameSettingState | string;
}
export declare enum ZegoGameState {
ZegoGameIdle = 0,
ZegoGamePreparing = 1,
ZegoGamePlaying = 2,
ZegoGameStopping = 3,
ZegoGameOver = 4
}
export declare enum ZegoGameStateReasonCode {
Normal = 0,
MissingPlayers = 1,
InsufficientPoints = 2,
MatchTimeout = 3,
Undefined = 9999
}
export declare enum ZegoGameLoadStateUpdate {
Loading = 1,
Loaded = 2
}
export declare enum ZegoEvent {
TokenWillExpire = "tokenWillExpire",
Unloaded = "unloaded",
PointsInsufficient = "pointsInsufficient",
PlayerStateUpdate = "playerStateUpdate",
GameStateUpdate = "gameStateUpdate",
GameLoadStateUpdate = "gameLoadStateUpdate",
ActionEventUpdate = "actionEventUpdate",
GameResult = "gameResult",
GameError = "gameError",
GameSoundPlay = "gameSoundPlay",
GameSoundVolumeChange = "gameSoundVolumeChange",
RobotConfigRequire = "robotConfigRequire",
MicStateChange = "micStateChange",
SpeakerStateChange = "speakerStateChange",
ActionRequest = "actionRequest",
ComponentListUpdate = "componentListUpdate",
CloudGameFirstFrame = "cloudGameFirstFrame",
CloudGameError = "cloudGameError"
}
export interface ZegoEventHandler {
[ZegoEvent.TokenWillExpire]: (data: ZegoEventOfTokenWillExpireResult) => void;
[ZegoEvent.Unloaded]: (data: ZegoEventOfUnloadedResult) => void;
[ZegoEvent.PointsInsufficient]: (data: ZegoEventOfPointsInsufficientResult) => void;
[ZegoEvent.PlayerStateUpdate]: (data: ZegoEventOfPlayerStateUpdateResult) => void;
[ZegoEvent.GameStateUpdate]: (data: ZegoEventOfGameStateUpdateResult) => void;
[ZegoEvent.GameLoadStateUpdate]: (data: ZegoEventOfGameLoadStateUpdateResult) => void;
[ZegoEvent.ActionEventUpdate]: (data: ZegoEventOfActionEventUpdateResult) => void;
[ZegoEvent.GameResult]: (data: ZegoEventOfGameResult) => void;
[ZegoEvent.GameError]: (data: ZegoEventOfGameErrorResult) => void;
[ZegoEvent.GameSoundPlay]: (data: ZegoEventOfGameSoundPlayResult) => void;
[ZegoEvent.GameSoundVolumeChange]: (data: ZegoEventOfGameSoundVolumeChangeResult) => void;
[ZegoEvent.RobotConfigRequire]: (data: ZegoEventOfRobotConfigRequireResult) => void;
[ZegoEvent.MicStateChange]: (data: ZegoEventOfMicStateChangeResult) => void;
[ZegoEvent.SpeakerStateChange]: (data: ZegoEventOfSpeakerStateChangeResult) => void;
[ZegoEvent.ActionRequest]: (data: ZegoEventOfActionRequestResult) => void;
[ZegoEvent.CloudGameFirstFrame]: () => void;
[ZegoEvent.CloudGameError]: (data: any) => void;
}
export interface ZegoEventOfTokenWillExpireResult {
}
export interface ZegoEventOfPointsInsufficientResult {
miniGameId: string;
}
export interface ZegoEventOfPlayerStateUpdateResult {
isPlaying: ZegoGamePlayerState;
}
export interface ZegoEventOfGameStateUpdateResult {
state: ZegoGameState;
reasonCode: ZegoGameStateReasonCode;
}
export interface ZegoEventOfUnloadedResult {
miniGameId: string;
}
export interface ZegoEventOfGameLoadStateUpdateResult {
state: ZegoGameLoadStateUpdate;
}
export interface ZegoEventOfActionEventUpdateResult {
eventType: ZegoActionType;
data: string;
}
export interface ZegoEventOfGameErrorResult {
errorCode: number;
message: string;
}
export interface ZegoEventOfGameResult {
reportId: string;
roomId: string;
miniGameId: string;
anchorId: string;
roundId: string;
reportTime: number;
currencyDiff: number;
currencyBalance: number;
gameDuration: number;
}
export interface ZegoEventOfGameSoundPlayResult {
name: string;
isPlay: boolean;
volume: number;
url: string;
playType: ZegoSoundPlayType;
}
export interface ZegoEventOfGameSoundVolumeChangeResult {
name: string;
volume: number;
}
export interface ZegoEventOfRobotConfigRequireResult {
done: (robotLevel: number, robotName: string, robotAvatar: string, useRobotAfterSeconds: number, minPoint: number, maxPoint: number) => void;
}
export interface ZegoEventOfActionRequestResult {
actionID: number;
actionCallback: {
success: () => {};
fail: (code?: number) => {};
};
data?: string;
}
export interface ZegoEventOfMicStateChangeResult {
mute: boolean;
}
export interface ZegoEventOfSpeakerStateChangeResult {
userIdList: string[];
mute: boolean;
}
/**
* af, // 南非荷兰语
* am, // 阿姆哈拉语
* ar,// 阿拉伯语
* as, // 阿萨姆语
* az, // 阿塞拜疆语(拉丁语)
* ba, // 巴什基尔语
* be, // 白俄罗斯语
* bem, // 别姆巴语
* bg, // 保加利亚语
* bi, // 比斯拉马语
* bn, // 孟加拉语
* bo, // 藏语
* bs, // 波斯尼亚语(拉丁语系)
* ca, // 加泰罗尼亚语
* ceb, // 宿务语
* co, // 科西嘉语
* crs, // 塞舌尔克里奥尔语
* cs, // 捷克语
* cy, // 威尔士语
* da, // 丹麦语
* de, // 德语
* ee, // 埃维语
* dv, // 马尔代夫语
* el, // 希腊语
* en, // 英语
* eo, // 世界语
* es, // 西班牙语
* et, // 爱沙尼亚语
* eu, // 巴斯克语
* fa, // 波斯语
* fi, // 芬兰语
* fil, // 菲律宾语
* fj, // 斐济语
* fo, // 法罗语
* fr, // 法语
* fy, // 弗里西语
* ga, // 爱尔兰语
* gd, // 苏格兰盖尔语
* gl, // 加利西亚语
* gu, // 古吉拉特语
* ha, // 豪萨语
* haw, // 夏威夷语
* he, // 希伯来语
* hi, // 印地语
* hr, // 克罗地亚语
* hsb, // 上索布语
* ht, // 海地克里奥尔语
* hu, // 匈牙利语
* hy, // 亚美尼亚语
* id, // 印度尼西亚语
* ig, // 伊博语
* ikt, // 因纽纳敦语
* is, // 冰岛语
* it, // 意大利语
* iu, // 因纽特语
* ja, // 日语
* jv, // 印尼爪哇语
* ka, // 格鲁吉亚语
* kek, // 凯克其语
* kg, // 刚果语
* kk, // 哈萨克语
* km, // 高棉语
* kmr, // 库尔德语(北部)
* kn, // 卡纳达语
* ko, // 韩语
* ku, // 库尔德语(中部)
* ky, // 吉尔吉斯语(西里尔语)
* la, // 拉丁语
* lb, // 卢森堡语
* lg, // 卢干达语
* ln, // 林加拉语
* lo, // 老挝语
* lt, // 立陶宛语
* lv, // 拉脱维亚语
* mg, // 马达加斯加语
* mhr, // 马里语
* mi, // 毛利语
* mk, // 马其顿语
* ml, // 马拉雅拉姆语
* mn, // 蒙古语(传统)
* mr, // 马拉地语
* mrj, // 山地马里语
* ms, // 马来语
* mt, // 马耳他语
* my, // 缅甸
* nb, // 博克马尔语
* ne, // 尼泊尔语
* nl, // 荷兰语
* no, // 挪威语
* ny, // 齐切瓦语
* om, // 奥罗莫语
* or, // 奥里亚语
* os, // 奥赛梯语
* otq, // 克雷塔罗奥托米语
* pa, // 旁遮普语
* pap, // 帕皮阿门托语
* pl, // 波兰语
* prs, // 达里语
* ps, // 普什图语
* pt, // 葡萄牙语
* rn, // 隆迪语
* ro, // 罗马尼亚语
* ru, // 俄语
* rw, // 卢旺达语
* sd, // 信德语
* sg, // 桑戈语
* si, // 僧伽罗语
* sk, // 斯洛伐克语
* sl, // 斯洛文尼亚语
* sm, // 萨摩亚语(拉丁语)
* sn, // 修纳语
* so, // 索马里语(阿拉伯语)
* sq, // 阿尔巴尼亚语
* sr, // 塞尔维亚语
* st, // 塞索托语
* su, // 印尼巽他语
* sv, // 瑞典语
* sw, // 斯瓦希里语(拉丁语)
* ta, // 泰米尔语
* te, // 泰卢固语
* tg, // 塔吉克语
* tn, // 茨瓦纳语
* th, // 泰语
* ti, // 提格里尼亚语
* tig, // 提格雷语
* tk, // 土库曼语(拉丁语)
* tlh, // 克林贡语
* to, // 汤加语
* tpi, // 巴布亚皮钦语
* tr, // 土耳其语
* ts, // 聪加语
* tt, // 鞑靼语(拉丁语)
* tw, // 契维语
* ty, // 塔希提语
* udm, // 乌德穆尔特语
* uk, // 乌克兰语
* ur, // 乌尔都语
* uz, // 乌兹别克语
* vi, // 越南语
* war, // 瓦瑞语
* xh, // 南非科萨语
* yi, // 意第绪语
* yo, // 约鲁巴语
* yua, // 尤卡坦玛雅语
* yue, // 粤语(繁体)
* zh_CN, // 简体中文
* zh_TW, // 中文(繁体)
* zu, // 祖鲁语
*/
export declare enum ZegoLanguage {
af = "af",
am = "am",
ar = "ar",
as = "as",
az = "az",
ba = "ba",
be = "be",
bem = "bem",
bg = "bg",
bi = "bi",
bn = "bn",
bo = "bo",
bs = "bs",
ca = "ca",
ceb = "ceb",
co = "co",
crs = "crs",
cs = "cs",
cy = "cy",
da = "da",
de = "de",
ee = "ee",
dv = "dv",
el = "el",
en = "en",
eo = "eo",
es = "es",
et = "et",
eu = "eu",
fa = "fa",
fi = "fi",
fil = "fil",
fj = "fj",
fo = "fo",
fr = "fr",
fy = "fy",
ga = "ga",
gd = "gd",
gl = "gl",
gu = "gu",
ha = "ha",
haw = "haw",
he = "he",
hi = "hi",
hr = "hr",
hsb = "hsb",
ht = "ht",
hu = "hu",
hy = "hy",
id = "id",
ig = "ig",
ikt = "ikt",
is = "is",
it = "it",
iu = "iu",
ja = "ja",
jv = "jv",
ka = "ka",
kek = "kek",
kg = "kg",
kk = "kk",
km = "km",
kmr = "kmr",
kn = "kn",
ko = "ko",
ku = "ku",
ky = "ky",
la = "la",
lb = "lb",
lg = "lg",
ln = "ln",
lo = "lo",
lt = "lt",
lv = "lv",
mg = "mg",
mhr = "mhr",
mi = "mi",
mk = "mk",
ml = "ml",
mn = "mn",
mr = "mr",
mrj = "mrj",
ms = "ms",
mt = "mt",
my = "my",
nb = "nb",
ne = "ne",
nl = "nl",
no = "no",
ny = "ny",
om = "om",
or = "or",
os = "os",
otq = "otq",
pa = "pa",
pap = "pap",
pl = "pl",
prs = "prs",
ps = "ps",
pt = "pt",
rn = "rn",
ro = "ro",
ru = "ru",
rw = "rw",
sd = "sd",
sg = "sg",
si = "si",
sk = "sk",
sl = "sl",
sm = "sm",
sn = "sn",
so = "so",
sq = "sq",
sr = "sr",
st = "st",
su = "su",
sv = "sv",
sw = "sw",
ta = "ta",
te = "te",
tg = "tg",
tn = "tn",
th = "th",
ti = "ti",
tig = "tig",
tk = "tk",
tlh = "tlh",
to = "to",
tpi = "tpi",
tr = "tr",
ts = "ts",
tt = "tt",
tw = "tw",
ty = "ty",
udm = "udm",
uk = "uk",
ur = "ur",
uz = "uz",
vi = "vi",
war = "war",
xh = "xh",
yi = "yi",
yo = "yo",
yua = "yua",
yue = "yue",
zh_CN = "zh_CN",
zh_TW = "zh_TW",
zu = "zu"
}
export interface ZegoBasicUserInfo {
userId: string;
userName: string;
}
export interface ZegoUserInfo extends ZegoBasicUserInfo {
avatar?: string;
}
export default class ZegoMiniGameEngine {
private static instance;
private manager;
private static isInit;
constructor();
/**
* 获取ZegoMiniGameEngine单例
* @returns ZegoMiniGameEngine
*/
static getInstance(): ZegoMiniGameEngine;
/**
* 获取游戏引擎SDK的版本。
* @returns string
*/
static getVersion(): string;
private isConnected;
/**
* 更新token
* @param token string
*/
updateToken(token: string): void;
/**
* 初始化实例
* @param appId number
* @param token string
* @param userInfo ZegoUserInfo
* @returns Promise<ZegoMiniGameEngine>
*/
static init(appId: number, token: string, userInfo: ZegoUserInfo): Promise<ZegoMiniGameEngine>;
/**
* 销毁实例
*/
unInit(): void;
getAllGameList(): Promise<ZegoGameList>;
/**
* 获取游戏列表
* @param pageIndex number
* @param pageSize number
* @param gameMode ZegoMiniGameGameMode
* @returns Promise<ZegoMiniGameGameList>
*/
getGameList(gameMode: ZegoGameMode): Promise<ZegoGameList>;
/**
* 获取游戏详细信息
* @param miniGameId string
* @returns Promise<ZegoGameInfoDetail>
*/
getGameInfo(miniGameId: string): Promise<ZegoGameInfoDetail>;
/**
* 创建房间
* @param miniGameId string
* @param roomId string
* @param maxPlayerNum number
* @param gamePoint number
* @param taxType ZegoTaxType
* @param taxRate number
* @returns Promise<boolean>
*/
createGameRoom(miniGameId: string, roomId: string, maxPlayerNum: number, gamePoint: number, taxType?: ZegoTaxType, taxRate?: number): Promise<boolean>;
/**
* 关闭房间
* @param miniGameId string
* @param roomId string
* @returns Promise<boolean>
*/
closeGameRoom(miniGameId: string, roomId: string): Promise<boolean>;
/**
* 设置加载游戏的容器
* @param domId string
* @returns boolean
*/
setGameContainer(domId: string): boolean;
/**
* 加载游戏
* @param miniGameId string
* @param gameMode ZegoGameMode
* @param option ZegoLoadGameConfig
* @returns Promise<HTMLIFrameElement>
*/
loadGame(miniGameId: string, gameMode: ZegoGameMode, config?: ZegoLoadGameConfig): Promise<HTMLIFrameElement>;
/**
* 卸载游戏
* @returns void
*/
unloadGame(forceQuit?: boolean): void;
/**
* 主播带玩开始游戏
* @param gameConfig 游戏配置
* @param userList 用户列表
* @param robotList 机器人列表
* @returns boolean
*/
startGame(gameConfig: ZegoStartGameConfig, userList: ZegoPlayer[], robotList: ZegoRobotAttribute[]): Promise<boolean>;
/**
* 开关游戏振动
* @param isVibrate boolean
*/
enableGameVibrate(isVibrate: boolean): void;
/**
* 开关游戏音效
* @param mute boolean
*/
muteGameSoundEffect(mute: boolean): void;
/**
* 开关游戏背景音乐
* @param mute boolean
*/
muteGameMusic(mute: boolean): void;
/**
* 设置游戏内音效音量(0-100)
* @param volume
*/
setGameSoundEffectVolume(volume: number): void;
/**
* 设置游戏内音乐音量
* @param volume
*/
setGameMusicVolume(volume: number): void;
/**
* 获取游戏音乐开关
* @returns Promise<boolean>
*/
getGameMusicSwitch(): Promise<boolean>;
/**
* 获取游戏音乐音量
* @returns Promise<boolean>
*/
getGameMusicVolume(): Promise<number>;
/**
* 获取游戏音效开关
* @returns Promise<boolean>
*/
getGameSoundEffectSwitch(): Promise<boolean>;
/**
* 获取游戏音效音量
* @returns Promise<number>
*/
getGameSoundEffectVolume(): Promise<number>;
/**
* 获取游戏振动开关
* @returns Promise<boolean>
*/
getGameVibrateSwitch(): Promise<boolean>;
/**
* 设置游戏的语言
* 在load()之前调用
* @param language ZegoLanguage
*/
setGameLanguage(language: ZegoLanguage): void;
/**
* 通知游戏刷新用户的游戏币
*/
refreshGamePoint(): void;
/**
* 获取游戏内可设置展示与否的组件
* @returns Promise<ZegoCustomComponent[]>
*/
getGameComponentList(): Promise<ZegoCustomComponent[]>;
/**
* 获取游戏内可调用的功能函数
* @returns Promise<ZegoCustomComponent[]>
*/
getGameFunctionList(): Promise<ZegoCustomFunction[]>;
/**
* 设置游戏内组件展示与否
* @param componentName string
* @param isShow boolean
* @returns Promise<boolean>
*/
setGameComponent(componentName: string, isShow: boolean): Promise<boolean>;
/**
* 运行游戏内功能函数
* @param functionName string
* @returns Promise<boolean>
*/
runGameFunction(functionName: string): Promise<boolean>;
/**
* 刷新token(内部使用)
* @param
*/
refreshToken(): Promise<any>;
/**
* 刷新麦克风和扬声器状态
* @param
*/
refreshMicAndSpeakerState(): void;
/**
* 开始云游戏
* @param
*/
startCloudGame(gameID: string, roomID: string, gameConfig: ZegoStartCloudGameConfig): Promise<any>;
/**
* 停止云游戏
*/
stopCloudGame(gameID: string, roomID: string): Promise<unknown>;
/**
* 设置云游戏容器
*/
setCloudGameContainer(cloudDomId: string): boolean;
/**
* 开始转推流
*/
startPublishCloudGameStream(cloudGameID: string, roomID: string, streamID: string): Promise<import("./entity").ServerResponse>;
/**
* 停止转推流
*/
stopPublishCloudGameStream(cloudGameID: string, roomID: string, streamID: string): Promise<import("./entity").ServerResponse>;
/**
* 设置码流参数
*/
setStreamProfile(streamProfile: ZegoStreamProfile): void;
/**
* 设置 video 音量
*/
setPlayVolume(volume: number): void;
/**
* 获取 video 音量
*/
getPlayVolume(): Promise<unknown>;
/**
* 发送键盘事件
*/
sendKeyboardEvent(key: number): void;
/**
* 绑定回调
* @param type 方法名
* @param listener 方法
*/
on<K extends keyof ZegoEventHandler>(type: K, listener: ZegoEventHandler[K]): void;
/**
* 解绑回调
* @param type 方法名
*/
off<K extends keyof ZegoEventHandler>(type: K): void;
}
export { ZegoMiniGameEngine };
export declare enum ZegoErrorCode {
Success = 0,
ErrorNetwork = 7000001,
ErrorInvalidUserInfo = 7000002,
ErrorInvalidParams = 7000003,
ErrorInvalidToken = 7000004,
ErrorInvalidRoomId = 7000005,
ErrorInvalidGameId = 7000006,
ErrorTimeout = 7000007,
ErrorAlreadyInit = 7000008,
ErrorNotInit = 7000009,
ErrorNotSetGameContainer = 7000010,
ErrorGameInfoIsNull = 7000011,
ErrorGameIsNotRunning = 7000012,
ErrorGameNotSupportThisMode = 7000013,
SystemModuleJSONParseError = 7100000,
SystemModuleSeqNotFounded = 7100001,
SystemModuleCurrentGameIsNotFounded = 7100002,
ErrorIframeIsNotFound = 7100003,
ErrorUndefinedCode = 7999999,
ErrorToken04Invalid = 7200401
}