#pragma once
#include "Actor/Object/ActiveObject.h"
#include "Asset/Character/Chr_Animation.h"
#include "Asset/Character/Chr_Equipment.h"
#include "Asset/Character/Chr_Controller.h"
#include "Asset/Character/Chr_StateMachine.h"
#include "Asset/Character/Chr_Shadow.h"
#include "Global/Global_Enum.h"
class CharacterObject : public ActiveObject
{
public:
    // 角色动画管理器
    RefPtr<Chr_Animation> _AnimationManager = nullptr;
    // 装备管理器
    RefPtr<Chr_Equipment> _EquipmentManager = nullptr;
    // 角色控制器
    RefPtr<Chr_Controller> _Controller = nullptr;
    // 角色状态机
    RefPtr<Chr_StateMachine> _StateMachine = nullptr;

    // 角色阴影对象
    RefPtr<Chr_Shadow> _Shadow = nullptr;
    //  职业
    int Job = 0;
    // 转职职业 如果是-1则没有转职
    int GrowType = -1;

public:
    ~CharacterObject();

public:

    // 通过职业创建角色
    void Construction(int job);
    // 开启控制器
    void EnableController();
    // 关闭控制器
    void DisableController();
    // 控制器信息
    void ControllerMsg(CONTROLLER_MSG_TYPE msgType, void* msgData);

    void Update(float deltaTime) override;
    void SetPos(Vec2 pos) override;
    void SetDirection(int dir) override;
};
