#pragma once
#include "EngineFrame/Actor/Actor.h"
#include "Asset/Common/ObjectVars.h"
#include "Global/Global_Enum.h"
class GameMap;
class GameMapCamera;
class BaseObject : public Actor
{
public:
public:
    ObjectType m_objecttype; // 对象类型
    VecPos3 Position; // 位置
    int Direction = 0; // 方向
    GameMap *_AffMap = nullptr; // 所在地图
    GameMapCamera *_AffCamera = nullptr; // 跟随相机

public:
    BaseObject(/* args */);
    ~BaseObject();

    void Update(float deltaTime) override;

    // 数据储存器
    ObjectVars _ObjectVars;

public:
    virtual void SetPosition(VecPos3 pos);
    virtual void SetXpos(int x);
    virtual void SetYpos(int y);
    virtual void SetZpos(int z);

    VecPos3 GetPosition();
    int GetXpos();
    int GetYpos();
    int GetZpos();

    virtual void MoveBy(VecPos3 pos);
    virtual void MoveBy(int x, int y, int z);

    virtual void SetDirection(int dir);
    int GetDirection();

    ObjectVars &GetObjectVars();
};
