import type { ApiResponse } from "../client/types"; import proto from "db://assets/Scripts/proto/proto.pb.js"; import type { IThemeService } from "./IThemeService"; import { ConfigManager, ConfigId } from "../../manager/ConfigManager"; import { ThemeConfig } from "../../config/ThemeConfig"; export class MockThemeService implements IThemeService { private delay(ms = 160) { return new Promise(r => setTimeout(r, ms)); } private ok(data: T): ApiResponse { return ({ code: proto.cs.EnmRetCode.SUCCESS, data } as unknown) as ApiResponse; } private makeTheme(id: number, key: string, name: string, category: number, isRelease: boolean, path: string): proto.cs.IHallTheme { return { id, key, name, category, isRelease, path, }; } // 获取大厅分类列表 async reqHallTheme(_req: proto.cs.ICSHallThemeReq): Promise> { // 延时 await this.delay(); const configData = ConfigManager.I.getDataById(ConfigId.Theme); const allId = configData.getAllId(); let themes: proto.cs.IHallTheme[] = []; for (let oneId of allId) { let key = configData.getLanKeyById(oneId); let name = configData.getNameById(oneId); let category = configData.getCategoryById(oneId); let isRelease = configData.getIsReleaseById(oneId); let path = configData.getPathById(oneId); let oneData = this.makeTheme(oneId, key, name, category, isRelease, path); themes.push(oneData); } // 返回数据 const res: proto.cs.ICSHallThemeRes = { themes }; return this.ok(res); } }