29 lines
1.2 KiB
TypeScript
29 lines
1.2 KiB
TypeScript
import type { ApiResponse } from "../client/types";
|
|
import proto from "db://assets/Scripts/proto/proto.pb.js";
|
|
import type { IPlayerDataService } from "./IPlayerDataService";
|
|
|
|
export class MockPlayerDataService implements IPlayerDataService {
|
|
private delay(ms = 160) { return new Promise<void>(r => setTimeout(r, ms)); }
|
|
|
|
// 按你项目的 ApiResponse 真实结构调整这里
|
|
private ok<T>(data: T): ApiResponse<T> {
|
|
return ({ ok: true, data } as unknown) as ApiResponse<T>;
|
|
}
|
|
// 如需模拟失败
|
|
// private err<T = unknown>(message = "mock myInfo error"): ApiResponse<T> {
|
|
// return ({ ok: false, error: { message } } as unknown) as ApiResponse<T>;
|
|
// }
|
|
|
|
// 获取个人信息
|
|
async reqMyInfo(_req: proto.cs.ICSMyInfoReq): Promise<ApiResponse<proto.cs.ICSMyInfoRes>> {
|
|
await this.delay();
|
|
|
|
// 由于我们并不知道 ICSMyInfoRes 的具体字段,这里提供一个“最安全”的空对象返回;
|
|
// 如果你有明确字段(例如 name/diamond/vipExpire 等),可在此构造并 as-cast:
|
|
// const res = { name: "Player-001", diamond: 123, vipExpire: Math.floor(Date.now()/1000) } as unknown as proto.cs.ICSMyInfoRes;
|
|
|
|
const res = ({} as unknown) as proto.cs.ICSMyInfoRes;
|
|
return this.ok(res);
|
|
}
|
|
}
|