189 lines
4.2 KiB
C++
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);
|
|
}
|
|
|
|
|
|
} |