81 lines
1.9 KiB
TypeScript
Raw Normal View History

2023-11-20 03:47:00 +08:00
import { app } from "../App";
import { API, ResourceOV } from "../consts/API";
import BaseData from "./BaseData";
export enum ResourceEvent{
UPDATE = "ResourceEvent_UPDATE", //刷新资源
}
//资源类型
export enum ResourceType{
2024-01-10 19:09:14 +08:00
Gold = 90001, //金币
ForgedStones = 90002, //锻造石
SpeedUp = 90003, //加速卷
2023-11-20 03:47:00 +08:00
}
2023-11-27 02:10:42 +08:00
//资源刷新类型
export enum ResourceUpdateType{
UPDATE = 0, //刷新资源数量
MINUS = 1, //减少资源数量
ADD = 2, //添加资源数量
}
2023-11-20 03:47:00 +08:00
//玩家资源数据
export default class ResourceData extends BaseData{
//资源数据 {资源Id:资源数量}
data:{[key:number]:number} = {};
2023-11-28 19:20:11 +08:00
//资源更新的版本号
versions:{[key:number]:number} = {};
2023-11-20 03:47:00 +08:00
//初始化
async onInit() {
await this.onUpdateResource();
}
//更新玩家资源
async onUpdateResource(){
//请求资源
let res = await API.GetPlayerResource();
//保存资源数量
res.forEach(data => {
this.data[data.resourceTbId] = data.resourceValue;
})
}
//获取指定资源的数量
getValue(type:ResourceType){
return this.data[type] || 0;
}
2023-11-28 19:20:11 +08:00
//更新资源
onResource(resource:ResourceOV){
let version = this.versions[resource.resourceTbId] || 0;
if(resource.version >= version){
version = this.versions[resource.resourceTbId] = resource.version;
this.data[resource.resourceTbId] = resource.resourceValue;
app.event.emit(ResourceEvent.UPDATE,this.data[resource.resourceTbId])
}
}
2023-11-20 03:47:00 +08:00
//刷新返回资源
onUpdateOV(operation:number,resource:ResourceOV){
2023-11-27 02:10:42 +08:00
//如果没有刷新的资源 则 返回
if(!resource) return;
if(operation == ResourceUpdateType.UPDATE){
2023-11-28 19:20:11 +08:00
this.onResource(resource);
2023-11-20 03:47:00 +08:00
}
}
}