/*
文件名:MonsterObjectClass.nut
路径:User/GameClass/ObjectClass/MonsterObjectClass.nut
创建日期:2024-05-10	19:40
文件用途:怪物对象类
*/
class Monster extends ActiveObject {

    Attackinfo = null;
    //怪物Id
    Id = null;

    //属性表
    Attribute = null;


    function Init(Idx) {
        Id = Idx;
        Info = ScriptData.GetMonster(Idx);

        base.Init(Info);

        //构造属性对象
        Attribute = AttributeClass();
        //加载脚本属性
        Attribute.Init(Info.Attributes, this);

        //如果存在Atk 初始化所有Atk
        if ("attackinfo" in Info) {
            Attackinfo = [];
            foreach(_index, path in Info.attackinfo) {
                // local AniBuf = Animation(path);
                // AniBuf.ShowBorder(true);
                Attackinfo.append(path);
            }
        }


    }

    function OnAddchild(Parent) {
        getroottable().MonsterObjectFunction["MonsterObject_Create_" + Id](this, Parent);
        base.OnAddchild(Parent);
    }

    function OnRemove(Parent) {
        getroottable().MonsterObjectFunction["MonsterObject_Destroy_" + Id](this, Parent);
        base.OnRemove(Parent);
    }

    //被调用
    function OnUpdate(dt) {
        //调用怪物Proc状态
        getroottable().MonsterObjectFunction["MonsterObject_Proc_" + Id](this, dt);
        //属性更新
        if (Attribute) Attribute.Proc(this, dt);
        //原始逻辑
        base.OnUpdate(dt);
    }


}