ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
Window.h
浏览该文件的文档.
1#pragma once
2#include <memory>
3#include <SDL3/SDL.h>
4#include "Core.h"
5
6struct SDL_Window;
7
8namespace Shit {
15 public:
16 Window() = default;
17 ~Window() = default;
18
19 // --- 静态API ---
20 static Window& GetInstance();
21 static bool Init() { return GetInstance().init(); }
22 static SDL_Window* GetWindow() { return GetInstance().m_window.get(); }
23 static void HandleEvent(const SDL_Event& event) { return GetInstance().handleEvent(event); }
24 static bool IsOpen() { return GetInstance().isOpen(); }
25 static void Close() { GetInstance().close(); }
26 static void Destroy();
27 static void SetHidden(bool hidden) { GetInstance().m_hidden = hidden; }
28
29 Window(const Window&) = delete;
30 Window& operator=(const Window&) = delete;
31 Window(Window&&) = delete;
32 Window& operator=(Window&&) = delete;
33
34 private:
35 bool init();
36 void handleEvent(const SDL_Event& event);
37 bool isOpen() { return m_isOpen; }
38 void close();
39
40 struct SDLWindowDeleter {
41 void operator()(SDL_Window* window) const {
42 if (window) SDL_DestroyWindow(window);
43 }
44 };
45
46 std::unique_ptr<SDL_Window, SDLWindowDeleter> m_window;
47 bool m_isOpen = false;
48 bool m_hidden = false;
49 };
50}
#define SHIT_API
定义 Core.h:14
static SDL_Window * GetWindow()
获取原生 SDL_Window 指针
定义 Window.h:22
~Window()=default
static void Destroy()
销毁窗口及资源
Window(const Window &)=delete
Window()=default
static void SetHidden(bool hidden)
以隐藏窗口创建(离屏渲染/编辑器预览用,须在 Init 之前调用)
定义 Window.h:27
static bool IsOpen()
窗口是否仍然打开
定义 Window.h:24
Window(Window &&)=delete
static Window & GetInstance()
获取单例
Window & operator=(Window &&)=delete
Window & operator=(const Window &)=delete
static bool Init()
初始化窗口
定义 Window.h:21
static void HandleEvent(const SDL_Event &event)
分发窗口事件给子系统
定义 Window.h:23
static void Close()
关闭窗口
定义 Window.h:25
定义 AudioPlayer.h:10