Files
dl_old/dl/system/dl_engine.cpp
T
2026-08-14 19:03:49 +08:00

189 lines
4.2 KiB
C++

#include "dl_engine.h"
#include "dl_platform.h"
#if (DL_PLATFORM == DL_PLATFORM_WIN32)
#define WIN32_LEAN_AND_MEAN
#define NOMINMAX
#include <Windows.h>
#endif
#include "render/dl_free_type.h"
#include "render/dl_factory.h"
#include "math/dl_physics.h"
#include "dl_time.h"
#include "io/dl_input.h"
#include "dl_system.h"
#include "ui/dl_ui_manager.h"
#include "script/dl_script.h"
#include "script/dl_as.h"
#include "render/dl_graphics.h"
#include "render/dl_action.h"
#include "io/dl_net.h"
#include "io/dl_file.h"
#include "system/dl_audio.h"
#include "system/dl_android.h"
#include "system/dl_infoware.h"
#include "ui/dl_ui_scene.h"
#include "io/dl_http.h"
#include "misc/dl_language.h"
#include "misc/dl_mod.h"
#include "system/dl_midi.h"
#include "script/dl_lua.h"
#include "system/dl_test.h"
#include "misc/dl_value.h"
#include "vk/dl_vk.h"
#include "render/dl_particle.h"
namespace dl
{
#ifndef DL_DISABLE_RENDER
FreeType* g_freetype;
UI::Manager* g_ui;
Graphics* g_gfx;
UI::SceneManager* g_scene;
#endif
ScriptSystem* g_script;
#ifndef DL_DISABLE_AUDIO
Audio* g_audio;
#endif
ActionManager* g_action;
#if DL_PLATFORM == DL_PLATFORM_ANDROID
AndroidData* g_android;
#endif
dl::Engine::Param Engine::_param;
std::vector<std::string> Engine::_vecCmd;
void Engine::Init()
{
if (_param._setConsoleUtf8)
{
#if (DL_PLATFORM == DL_PLATFORM_WIN32)
system("mode con: cols=180 lines=400");
system("chcp 65001");
system("cls");
#endif
}
g_log = new LogSystem;
Infoware::DumpSimple();
log_msg("命令行参数:");
for (auto& iter : Engine::GetCmd())
{
log_msg0(iter);
}
log_msg0("----------------开始初始化引擎----------------");
log_msg0("1.日志系统初始化完成!");
g_thread = new ThreadManager;
log_msg0("2.线程系统初始化完成!");
File::InitFileSystem();
log_msg0("3.文件系统初始化完成!");
g_value = new ValueSystem;
g_lua = _param._useLua ? new LuaScript : nullptr;
g_time = _param._useTime ? new Time : nullptr;
#ifndef DL_DISABLE_RENDER
g_freetype = _param._useFreetype ? new FreeType : nullptr;
g_system = new System;
g_system->_init_glfw();
g_input = new Input;
g_factory = new Factory;
g_ui = new UI::Manager;
g_gfx = new Graphics;
g_scene = _param._useScene ? new UI::SceneManager : nullptr;
g_mod = new ModManager;
g_particle = new ParticleSystem;
#endif
g_physics = _param._useFreetype ? new Physics : nullptr;
g_script = new ScriptSystem;
g_as = _param._useAngelScript ? new AngelScript : nullptr;
#ifndef DL_DISABLE_AUDIO
g_audio = new Audio(_param._useAudio);
#endif
g_net = _param._useNet ? new Network : nullptr;
g_action = _param._useAction ? new ActionManager : nullptr;
g_http = _param._useHttp ? new Http : nullptr;
g_lang = _param._useLanguage ? new Language : nullptr;
#if DL_PLATFORM != DL_PLATFORM_ANDROID
g_midi = _param._useMidi ? new Midi : nullptr;
#endif
g_lua->RegisterAll();
log_msg0("----------------完成初始化引擎----------------");
if (_param._showInfo)
{
log_msg0("C++ drawing libaray");
log_msg0("基于vulkan图形接口");
log_msg0("最新C++标准,高性能2d绘图库");
log_msg0("支持windows、linux平台");
log_msg0("源码地址:https://gitee.com/lveyou/dl");
log_msg0("by略游,交流Q群 512001256");
}
if (_param._test)
TestAll();
}
#ifndef DL_DISABLE_AUDIO
void ReleaseAudio()
{
delete g_audio;
}
#endif
void Engine::Release()
{
//----------------资源释放------------------------
// 在用户释放完成后才能释放dl
if (g_vk)
{
g_vk->Release();
delete g_vk;
}
#ifndef DL_DISABLE_AUDIO
MemoryPool::GetPoolList<Sound>().SetCallbackDelete(ReleaseAudio);
#endif
#if DL_PLATFORM != DL_PLATFORM_ANDROID
delete g_midi;
#endif
delete g_lang;
delete g_http;
delete g_action;
delete g_net;
delete g_as;
delete g_script;
#ifndef DL_DISABLE_RENDER
delete g_particle;
delete g_mod;
delete g_scene;
delete g_gfx;
delete g_ui;
delete g_factory;// 先于delete g_vk
delete g_input;
g_system->_delete_glfw();
delete g_system;
delete g_freetype;
#endif
delete g_physics;
delete g_time;
delete g_lua;
delete g_thread;
delete g_value;
log_msg0("引擎即将正常终止");
delete g_log;
}
void Engine::_init_cmd(int argc, char** argv)
{
if(argv)
_vecCmd = std::vector<std::string>(argv, argv + argc);
}
}