/*
文件名:PassiveObjectClass.nut
路径:User/GameClass/ObjectClass/PassiveObjectClass.nut
创建日期:2024-05-11	09:14
文件用途:被动对象
*/
class GameObject.PassiveObject extends GameObject.ActiveObject {

    OnCreateFunction = null;
    OnProcFunction = null;
    OnDestroyFunction = null;
    OnAttackFunction = null;

    function Init(Idx) {
        Info = ScriptData.GetPassiveObject(Idx);

        base.Init(Info);

        //储存图层信息
        if ("layer" in Info)
            Layer = Info.layer.slice(1, -1);


        //初始化回调函数
        InitCallBackFunc();
    }

    function InitCallBackFunc() {
        if ("create function" in Info) OnCreateFunction = Info["create function"].bindenv(this);
        if ("destroy function" in Info) OnDestroyFunction = Info["destroy function"].bindenv(this);
        if ("proc function" in Info) OnProcFunction = Info["proc function"].bindenv(this);
        if ("attack function" in Info) OnAttackFunction = Info["attack function"].bindenv(this);
    }

    function OnAddchild(Parent) {
        if (OnCreateFunction) OnCreateFunction(Parent);
        base.OnAddchild(Parent);
    }

    function OnRemove(Parent) {
        if (OnDestroyFunction) OnDestroyFunction(Parent);
        base.OnRemove(Parent);
    }

    //攻击到其他对象时
    function OnAttack(Damager) {
        if (OnAttackFunction) OnAttackFunction(Damager);
        base.OnAttack(Damager);
    }

    //被调用
    function OnUpdate(dt) {
        if (OnProcFunction) OnProcFunction(dt);
        base.OnUpdate(dt);
    }
}