Skip to content

API Reference(zh)

Gamepiaynmo edited this page Aug 7, 2020 · 2 revisions

API文档

English Version

日志

有时你可能想用日志记录一些信息,以在日后出错时方便排查。

BML提供了一个简单的日志系统。你可以通过调用IMod接口的GetLogger()函数获得它的实例。

这个日志系统仅有3个函数:

	virtual void Info(const char* fmt, ...);
	virtual void Warn(const char* fmt, ...);
	virtual void Error(const char* fmt, ...);

为不同的信息严重级别而准备。

所有订阅信息条目

开始加载开始菜单 & 开始菜单加载完毕。

virtual void OnPreStartMenu() {};
virtual void OnPostStartMenu() {};

退出游戏。

virtual void OnExitGame() {};

开始加载关卡 & 关卡加载完毕。

virtual void OnPreLoadLevel() {};
virtual void OnPostLoadLevel() {};

开始游玩关卡。

virtual void OnStartLevel() {};

开始重置关卡 & 关卡重置完毕。

virtual void OnPreResetLevel() {};
virtual void OnPostResetLevel() {};

暂停 & 恢复。

virtual void OnPauseLevel() {};
virtual void OnUnpauseLevel() {};

开始退出关卡 & 关卡退出完毕。

virtual void OnPreExitLevel() {};
virtual void OnPostExitLevel() {};

开始加载下一关 & 下一关加载完毕。

virtual void OnPreNextLevel() {};
virtual void OnPostNextLevel() {};

游戏结束菜单出现。

virtual void OnDead() {};

到达气球飞船 & 游戏通关菜单出现。

virtual void OnPreEndLevel() {};
virtual void OnPostEndLevel() {};

分数计时器启动 & 停止。

virtual void OnCounterActive() {};
virtual void OnCounterInactive() {};

球控制模块启动 & 停止。玩家是否能够控制球。

virtual void OnBallNavActive() {};
virtual void OnBallNavInactive() {};

摄像机控制模块启动 & 停止。玩家是否能够旋转摄像机。

virtual void OnCamNavActive() {};
virtual void OnCamNavInactive() {};

球进入死亡区。

virtual void OnBallOff() {};

球到达盘点火 & 下一小节加载完成。

virtual void OnPreCheckpointReached() {};
virtual void OnPostCheckpointReached() {};

到达气球飞船,在OnPreEndLevel之前触发。

virtual void OnLevelFinish() {};

球在没有额外生命时进入死亡区。在OnBallOff之后。

virtual void OnGameOver() {};

球碰到分数球时触发,不论大小。

virtual void OnExtraPoint() {};

开始播放生命球减少动画 & 动画播放完毕。

virtual void OnPreSubLife() {};
virtual void OnPostSubLife() {};

开始播放生命球增加动画 & 动画播放完毕。

virtual void OnPreLifeUp() {};
virtual void OnPostLifeUp() {};

模组的初始化 & 释放。

virtual void OnLoad() {};
virtual void OnUnload() {};

当有配置条目被修改时。

virtual void OnModifyConfig(CKSTRING category, CKSTRING key, IProperty* prop) {};

当“Object Load”这个BB被用来加载一个新的nmo文件时。

virtual void OnLoadObject(CKSTRING filename, BOOL isMap, CKSTRING masterName,
	CK_CLASSID filterClass, BOOL addtoscene, BOOL reuseMeshes, BOOL reuseMaterials,
	BOOL dynamic, XObjectArray* objArray, CKObject* masterObj) {};
virtual void OnLoadScript(CKSTRING filename, CKBehavior* script) {};

在每次游戏循环/渲染帧时调用。

virtual void OnProcess() {};
virtual void OnRender(CK_RENDER_FLAGS flags) {};

在作弊模式开启/关闭时调用。

virtual void OnCheatEnabled(bool enable) {};

所有注册条目

注册一个新的球种。

virtual void RegisterBallType(CKSTRING ballFile, CKSTRING ballId, CKSTRING ballName, CKSTRING objName,
	float friction, float elasticity, float mass, CKSTRING collGroup, float linearDamp, float rotDamp,
	float force, float radius);

注册一种新的路面。

virtual void RegisterFloorType(CKSTRING floorName, float friction, float elasticity, float mass,
	CKSTRING collGroup, bool enableColl);

注册一个新的道具球种。

virtual void RegisterModulBall(CKSTRING modulName, bool fixed, float friction, float elasticity,
	float mass, CKSTRING collGroup, bool frozen, bool enableColl, bool calcMassCenter, float linearDamp,
	float rotDamp, float radius);

注册一个新的凸网格物理化机关(大本钟和纸球)。

virtual void RegisterModulConvex(CKSTRING modulName, bool fixed, float friction, float elasticity,
	float mass, CKSTRING collGroup, bool frozen, bool enableColl, bool calcMassCenter, float linearDamp,
	float rotDamp);

注册一个新的变球器。

virtual void RegisterTrafo(CKSTRING modulName);

注册一种新机关。

virtual void RegisterModul(CKSTRING modulName);