import { SkillConf } from "../conf/SkillConf";
import { BattleDataPool } from "./BattleDataPool";
import { BattleUtil } from "./BattleUtil";
import { DataBase } from "./DataBase";

//效果类型
export enum EffectType{
    //加buff
    AddBuff,
    //加血
    AddHp,
    //减血
    SubHp,
}


//技能数据组装类
export class SkillData extends DataBase{

    //效果类型
    effectType:EffectType;
    buffID:number;
    //目标数量
    ePos:number;
    //参数
    eParam:number;
    eParam2:number;
    eParam3:number;
    eParam4:number;
    
    //来源  
    srcDataBaseID:number;
    srcDataBase:DataBase;

    //暂无可变参数

    


    init(typeID:number,srcDataBase:DataBase){
        super._init();
        this.typeID = typeID;

        let skillConf = SkillConf.data[typeID]
        if (skillConf) {
            let effectObjArr = skillConf.EffectObjArr;
            if (effectObjArr) {
                let effectObj = effectObjArr[0];
                if (effectObj) {
                    this.effectType = effectObj.effectType;
                    this.buffID = effectObj.buffID;
                    this.ePos = effectObj.ePos;
                    this.eParam = effectObj.eParam;
                    this.eParam2 = effectObj.eParam2;
                    this.eParam3 = effectObj.eParam3;
                    this.eParam4 = effectObj.eParam4;

                    this.srcDataBaseID = srcDataBase.ID;
                    this.srcDataBase = srcDataBase;
                    return this;
                }
            }
        }

    }

    clear(){
        this.effectType = EffectType.AddBuff;
        this.buffID = BattleUtil.TypeID_Init;
        this.ePos = 0;
        this.eParam = 0;
        this.eParam2 = 0;
        this.eParam3 = 0;
        this.eParam4 = 0;
        super.clear();
    }


}

export let SkillDataPool = new BattleDataPool(SkillData,100)