import { app } from "../App";
import { API, ResourceOV } from "../consts/API";
import BaseData from "./BaseData";

export enum ResourceEvent{
    UPDATE = "ResourceEvent_UPDATE",    //刷新资源
}

//资源类型
export enum ResourceType{
    Gold = 90001,   //金币
}

//资源刷新类型
export enum ResourceUpdateType{
    UPDATE = 0,  //刷新资源数量
    MINUS = 1,   //减少资源数量
    ADD = 2,     //添加资源数量
}

//玩家资源数据
export default class ResourceData extends BaseData{

    //资源数据 {资源Id:资源数量}
    data:{[key:number]:number} = {};

    //初始化
    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;
    }

    //刷新返回资源
    onUpdateOV(operation:number,resource:ResourceOV){

        //如果没有刷新的资源 则 返回
        if(!resource) return;

        if(operation == ResourceUpdateType.UPDATE){
            //更新资源
            this.data[resource.resourceTbId] = resource.resourceValue;
            app.event.emit(ResourceEvent.UPDATE)
        }

    }


}