#pragma once

#include <SDL.h>
#include <SDL_syswm.h>

namespace extra2d {

/**
 * @brief SDL2 初始化和生命周期管理
 * 
 * 提供 SDL2 子系统的统一初始化和清理接口
 */
class Sdl2 {
public:
    /**
     * @brief 初始化 SDL2 核心子系统
     * @return true 初始化成功
     */
    static bool initCore();
    
    /**
     * @brief 初始化视频子系统
     * @return true 初始化成功
     */
    static bool initVideo();
    
    /**
     * @brief 初始化音频子系统
     * @return true 初始化成功
     */
    static bool initAudio();
    
    /**
     * @brief 初始化游戏控制器子系统
     * @return true 初始化成功
     */
    static bool initGamepad();
    
    /**
     * @brief 初始化所有子系统
     * @return true 初始化成功
     */
    static bool initAll();
    
    /**
     * @brief 关闭 SDL2
     */
    static void shutdown();
    
    /**
     * @brief 检查是否已初始化
     */
    static bool isInited() { return inited_; }
    
private:
    static bool inited_;
};

} // namespace extra2d
