This commit is contained in:
2026-02-08 16:20:50 +08:00
parent 0ae47e5d6a
commit 8b88904ef7
72 changed files with 5963 additions and 2038 deletions

View File

@@ -3,6 +3,7 @@
#include "EngineFrame/Component/Sprite.h"
#include "EngineFrame/Base/Actor.h"
#include "EngineFrame/Component/Text.h"
#include "Asset/Asset_SoundPack.h"
Game::Game()
{
@@ -67,13 +68,6 @@ void Game::Init(std::function<void()> CallBack)
IMG_Init(IMG_INIT_PNG);
// 初始化SDL_mixer支持OGG格式
// 44100: 采样率, MIX_DEFAULT_FORMAT: 音频格式, 2: 声道数(立体声), 4096: 缓冲区大小
if (Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096) < 0)
{
SDL_LogError(SDL_LOG_CATEGORY_ERROR, "SDL_mixer初始化失败! Mix_Error: %s\n", Mix_GetError());
m_isRunning = false;
}
// 初始化 TTF
if (TTF_Init() == -1)
@@ -157,9 +151,16 @@ void Game::HandleEvents(SDL_Event *e)
void Game::Update(float deltaTime)
{
//调用松鼠的更新
// 内存回收机制
m_lastMemoryPrintTime += deltaTime;
if (m_lastMemoryPrintTime >= m_memoryPrintInterval)
{
m_lastMemoryPrintTime = 0;
MemoryReclaims();
}
// 调用松鼠的更新
SquirrelEx::GetInstance().Update(deltaTime);
if (m_scene != nullptr)
if (m_scene != nullptr)
m_scene->Update(deltaTime);
if (m_uiScene != nullptr)
m_uiScene->Update(deltaTime);
@@ -205,6 +206,12 @@ void Game::Clear()
SDL_Quit();
}
void Game::MemoryReclaims()
{
// 音频内存回收
Asset_SoundPack::GetInstance().Reclaims();
}
void Game::ChangeScene(RefPtr<Scene> scene)
{
if (m_scene != nullptr)
@@ -225,6 +232,11 @@ void Game::ChangeUIScene(RefPtr<Scene> scene)
m_uiScene->Enter();
}
RefPtr<Scene> Game::GetScene()
{
return m_scene;
}
RenderManager *Game::GetRenderer()
{
return m_renderer;