96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C
		
	
	
	
|  | #pragma once
 | |||
|  | #include <string>
 | |||
|  | #include "EngineCore/Asset_ImagePack.h"
 | |||
|  | #include "EngineFrame/Component/Component.h"
 | |||
|  | 
 | |||
|  | class Game; | |||
|  | /**
 | |||
|  |  * @brief Sprite类,继承自Component类,用于表示游戏中的精灵组件 | |||
|  |  */ | |||
|  | class Sprite : public Component | |||
|  | { | |||
|  | private: | |||
|  |     /* data */ | |||
|  |     SDL_Texture *m_texture = nullptr; // 纹理指针,用于存储精灵的纹理资源
 | |||
|  | 
 | |||
|  | public: | |||
|  |     /**
 | |||
|  |      * @brief Sprite类的默认构造函数 | |||
|  |      */ | |||
|  |     Sprite(/* args */); | |||
|  |     /**
 | |||
|  |      * @brief Sprite类的带参数构造函数 | |||
|  |      * @param imgPath 纹理图片路径 | |||
|  |      * @param Index 索引值 | |||
|  |      */ | |||
|  |     Sprite(std::string imgPath, int Index); | |||
|  |     /**
 | |||
|  |      * @brief Sprite类的析构函数 | |||
|  |      */ | |||
|  |     ~Sprite(); | |||
|  | 
 | |||
|  |     // 显式引入基类的Init方法,避免隐藏
 | |||
|  |     using Component::Init; | |||
|  |     /**
 | |||
|  |      * @brief 初始化Sprite组件 | |||
|  |      * @param imgPath 纹理图片路径 | |||
|  |      * @param Index 索引值 | |||
|  |      */ | |||
|  |     void Init(std::string imgPath, int Index); | |||
|  |     /**
 | |||
|  |      * @brief 处理事件 | |||
|  |      * @param e SDL事件指针 | |||
|  |      */ | |||
|  |     void HandleEvents(SDL_Event *e) override; | |||
|  |     /**
 | |||
|  |      * @brief 更新组件状态 | |||
|  |      * @param deltaTime 时间增量 | |||
|  |      */ | |||
|  |     void Update(float deltaTime) override; | |||
|  |     /**
 | |||
|  |      * @brief 渲染组件 | |||
|  |      * @param deltaTime 时间增量 | |||
|  |      */ | |||
|  |     void Render(float deltaTime) override; | |||
|  |     /**
 | |||
|  |      * @brief 清理组件资源 | |||
|  |      */ | |||
|  |     void Clear() override; | |||
|  | 
 | |||
|  |     /**
 | |||
|  |      * @brief 获取纹理 | |||
|  |      * @return SDL_Texture* 纹理指针 | |||
|  |      */ | |||
|  |     SDL_Texture *GetTexture(); | |||
|  | 
 | |||
|  | public: | |||
|  |     // 组件标签
 | |||
|  |     Tag m_tag = Tag::RENDER | Tag::UPDATE; // 标记该组件需要渲染和更新
 | |||
|  | 
 | |||
|  |     SDL_Point Pos = {0, 0};                // 位置坐标
 | |||
|  |     SDL_Point TextureSize = {0, 0};        // 纹理大小
 | |||
|  |     SDL_Point Size = {0, 0};               // 大小
 | |||
|  |     SDL_Point Anchor = {0, 0};             // 中心点
 | |||
|  |     float Angle = 0.0f;                    // 旋转角度
 | |||
|  |     SDL_RendererFlip flip = SDL_FLIP_NONE; // 翻转
 | |||
|  | 
 | |||
|  | public: | |||
|  |     // 设置坐标
 | |||
|  |     void SetPos(SDL_Point pos); | |||
|  |     // 设置混合模式
 | |||
|  |     void SetBlendMode(SDL_BlendMode blendMode); | |||
|  |     // 设置旋转角度
 | |||
|  |     void SetAngle(float angle); | |||
|  |     //设置中心点
 | |||
|  |     void SetAnchor(SDL_FPoint anchor); | |||
|  | 
 | |||
|  |     // 获取坐标
 | |||
|  |     SDL_Point GetPos(); | |||
|  |     // 获取混合模式
 | |||
|  |     SDL_BlendMode GetBlendMode(); | |||
|  |     // 获取旋转角度
 | |||
|  |     float GetAngle(); | |||
|  |     // 获取中心点
 | |||
|  |     SDL_FPoint GetAnchor(); | |||
|  | }; |