mirror of
https://gitee.com/dgflash/oops-plugin-framework.git
synced 2026-09-07 04:07:19 +08:00
新增与优化核心模块 🎯 GUI 交互增强 ButtonInterceptor:按钮点击事件劫持器 劫持 EventHandler.emitEvents / ButtonSimple.onClick 核心方法 支持多类型按钮音效配置注册,按按钮类型自动匹配音效 单例模式管理,支持全局动态激活 / 停用拦截功能 🧩 对象池管理系统 GameNodePool:通用游戏节点对象池管理器 基于预制体(Prefab)UUID 实现池化隔离管理 支持特效、UI 元素等高频对象预加载、复用与回收 全局单例访问,统一管控对象创建 / 销毁逻辑 🔊 音频管理系统 AudioManager:音频核心管理器 独立背景音乐(AudioMusic)+ 音效池(AudioEffectPool)双模块 支持全局音量控制、播放状态恢复与场景切换管理 AudioEffect:基础音效播放器 AudioEnum:音频类型、音效分类枚举定义 📦 资源加载系统 ResLoader:资源加载核心控制器 资源包(Bundle)统一管理 + 并发加载限流控制 远程资源本地缓存、自动释放与内存优化 完整加载进度回调 + 错误异常处理机制 ResTypes:资源类型规范定义 ResErrors:资源加载错误码与异常处理 ResUtils:资源路径、格式转换等工具方法 🧱 模块化组件系统 GameComponent:游戏显示对象组件基类 集成资源自动引用计数(RC)管理 模块化部件(GamePartRegistry)插拔式架构 内置音频、按钮、事件、键盘、节点、对象池、资源七大部件 部件封装: GamePartAudio:音频功能部件 GamePartButton:按钮交互部件 GamePartEvent:全局事件部件 GamePartKeyboard:键盘输入部件 GamePartNode:节点操作部件 GamePartNodePool:对象池调用部件 GamePartRes:资源加载部件 📝 类型定义完善 新增 IAudio 音频数据与播放参数接口 统一全模块 TS 类型定义与导出规范 优化接口注释与类型约束,提升开发体验
86 lines
2.5 KiB
TypeScript
86 lines
2.5 KiB
TypeScript
/*
|
||
* 网络相关接口定义
|
||
*/
|
||
export type NetData = (string | ArrayBufferLike | Blob | ArrayBufferView);
|
||
export type NetCallFunc = (data: any) => void;
|
||
|
||
/** 请求协议 */
|
||
export interface IRequestProtocol {
|
||
/** 协议命令编号 */
|
||
cmd: string,
|
||
/** 回调方法名 */
|
||
callback?: string,
|
||
/** 是否压缩 */
|
||
isCompress: boolean,
|
||
/** 渠道编号 */
|
||
channelid: number,
|
||
/** 消息内容 */
|
||
data?: any;
|
||
}
|
||
|
||
/** 响应协议 */
|
||
export interface IResponseProtocol {
|
||
/** 响应协议状态码 */
|
||
code: number,
|
||
/** 数据是否压缩 */
|
||
isCompress: boolean,
|
||
/** 协议数据 */
|
||
data?: any,
|
||
/** 协议回调方法名 */
|
||
callback?: string
|
||
}
|
||
|
||
/** 回调对象 */
|
||
export interface CallbackObject {
|
||
target: any, // 回调对象,不为null时调用target.callback(xxx)
|
||
callback: NetCallFunc, // 回调函数
|
||
}
|
||
|
||
/** 请求对象 */
|
||
export interface RequestObject {
|
||
buffer: NetData, // 请求的Buffer
|
||
rspCmd: string, // 等待响应指令
|
||
rspObject: CallbackObject | null, // 等待响应的回调对象
|
||
}
|
||
|
||
/** 协议辅助接口 */
|
||
export interface IProtocolHelper {
|
||
/** 返回包头长度 */
|
||
getHeadlen(): number;
|
||
/** 返回一个心跳包 */
|
||
getHearbeat(): NetData;
|
||
/** 返回整个包的长度 */
|
||
getPackageLen(msg: NetData): number;
|
||
/** 检查包数据是否合法(避免客户端报错崩溃) */
|
||
checkResponsePackage(msg: IResponseProtocol): boolean;
|
||
/** 处理请求包数据 */
|
||
handlerRequestPackage(reqProtocol: IRequestProtocol): string;
|
||
/** 处理响应包数据 */
|
||
handlerResponsePackage(respProtocol: IResponseProtocol): boolean;
|
||
/** 返回包的id或协议类型 */
|
||
getPackageId(msg: IResponseProtocol): string;
|
||
}
|
||
|
||
export type SocketFunc = (event: any) => void;
|
||
export type MessageFunc = (msg: NetData) => void;
|
||
|
||
/** Socket接口 */
|
||
export interface ISocket {
|
||
onConnected: SocketFunc | null; // 连接回调
|
||
onMessage: MessageFunc | null; // 消息回调
|
||
onError: SocketFunc | null; // 错误回调
|
||
onClosed: SocketFunc | null; // 关闭回调
|
||
|
||
connect(options: any): any; // 连接接口
|
||
send(buffer: NetData): number; // 数据发送接口
|
||
close(code?: number, reason?: string): void; // 关闭接口
|
||
}
|
||
|
||
/** 网络提示接口 */
|
||
export interface INetworkTips {
|
||
connectTips(isShow: boolean): void;
|
||
reconnectTips(isShow: boolean): void;
|
||
requestTips(isShow: boolean): void;
|
||
responseErrorCode(code: number): void;
|
||
}
|