初始化内容

This commit is contained in:
2026-09-16 14:07:40 +08:00
parent 6934b390bf
commit 4f643c1e7c
18350 changed files with 6088489 additions and 305 deletions
+80
View File
@@ -0,0 +1,80 @@
1、非绘图
```C++
#include <dl.h>
using namespace dl;
void Main()
{
Engine::Param& param = dl::Engine::_param;
// 修改param开启或关闭一些功能
Engine::Init();
}
int main()
{
Main();
Engine::Release();
return 0;
}
```
2、绘图
```C++
#include <dl.h>
using namespace dl;
void Init()
{
// 设置ui标准布局
g_ui->SetStandardSize({ 1920, 1080 });
// 注册预设ui
g_ui->RegisterAll("ui/");
// 创建主界面并显示
g_UIMain = new UIMain;
g_scene->Add("ui_main", g_UIMain);
}
void Run()
{
// 帧函数
}
void Main()
{
Engine::Param& param = Engine::_param;
// 修改param开启或关闭一些功能
param._setConsoleUtf8 = false;
Engine::Init();
// 设置日志文件夹
g_log->SetLogFile("log/");
// 设置资源路径
g_factory->SetPath("image/", "", "binary/", "temp/");
// 初始化音效系统(可选)
g_audio->Init("sound/config.json");
// 设置fps
g_time->SetFPS(60);
// 设置初始化函数
g_system->SetFuncInit(Init);
// 设置帧函数
g_system->SetFuncRun(Run);
// 窗口参数
ParamWindow p;
p._size = g_system->GetWorkArea() * 3u / 4u;
p._strTitle = "dl engine";
// 进入游戏循环
g_system->Start(p);
}
int CALLBACK WinMain(
__in HINSTANCE hInstance,
__in HINSTANCE hPrevInstance,
__in LPSTR lpCmdLine,
__in int nCmdShow
)
{
Main()
return 0;
}
```
+11
View File
@@ -0,0 +1,11 @@
裁剪功能
脚本
输入框
密码算法
代码生成
3d管线、骨骼动画
字符串反序列化
手柄
变量系统
脏标记系统
+177
View File
@@ -0,0 +1,177 @@
/**
* @file DNDBrief.h
* @brief 说明
*
*
* @version 1.1
* @author lveyou
* @date 21-08-08
*/
/**
* @brief 为什么使用标准库?
* 为开源世界和C++标准做贡献,所以使用标准库。
*/
/**
* @brief 为什么不使用C++20模块
* 我尝试过模块,但编译期支持始终不完善,之好延后
*/
/**
* @brief 各系统的全局变量接口使用指针,以便控制生命周期,且不占用全局空间
*/
/**
* @brief 命名风格
* ?? 全局函数使用小写加下划线命名,例如 calc_n
* ?? 非泛用型的全局函数只开头小写,例如 createQuad
* 除了dl命令空间的全局函数都大写开头,例如Math::SetSeed
* 宏由于没有命令空间,所以必须dl开头防止冲突
* 不需要别处的资源的初始化叫init,而使用别处资源的初始化叫load
* 缩写只有首字母大写(命名空间除外)
* Add的含义是添加一个已有对象,而不是创建
* 除了dl命名空间,其他都首字母大小,例如dnd::Math,缩写除外比如dnd::UI
* 优先使用枚举类,如果只使用枚举,则使用Struct包含,枚举统一取名为Var(参见LogicType的实现)
* 冒号(:)作为特殊对象的命令,例如默认精灵、默认音效
* 对于多个元素,不使用单复数,而是加mul修饰。例如 _mulSpr,它可以是数组,也可以是链表。
* 加减乘除如下:Addition(add)、Subtraction(sub)、multiplication(mul)、division(div)
* 求和、求积:sum、??
* func为回调函数,fn为局部lambda函数
* small <-> large
*/
/**
* @brief 对象创建与释放
* 特殊物件通过g_factory创建
* 用户层面,一般情况不出现new关键字
* 资源名称:由于/不能作为文件名,故使用.替换/。
*/
/**
* @brief 关于绘制顺序
* 用order表示绘制遮挡顺序,越小则越靠近屏幕
* 对于UI来说,传入x,则所有子元素的order均大于等于x。
* 越先添加到Panel的Grouporder越大(详细参见Panel::SetOrder)。
*/
/**
* @brief 常用成员函数命名
* Refresh代表刷新、Set代表设置。前者含义带有不保存数据。
* Update为时间片逻辑、Render代表绘制、Run代表前二者合一(一般不使用Run)。
* Init代表初始化、Load代表加载、Create代表创建,一般用于静态函数创建对象。
* Reset代表重置、Delete代表删除、Clear代表清除、Release代表释放(Delete更表示不可逆的)、Click用于按钮按下)。
* Clone代表复制,Copy代表复制。前者为新建元素,后者为已有元素复制另外一个元素属性。
* GetBuffer返回byte流,GetData返回实际类型指针。
*
*/
/**
* @brief 越界时IsOutRange返回真,CheckRange返回假。
*/
/**
* @brief 类成员顺序
* 1.嵌套类
* 2.构造函数
* 3.操作符重载
* 4.主要函数
* 5.Set函数
* 5.Get函数
* 6.功能性函数
* 7.析构函数
* 8.私有成员
* 9.私有函数
*/
/**
* @brief 右值引用
* 右值引用一般用于移动语义,默认不使用移动语义,性能瓶颈再作优化,所以“const T&& a”没有实用意义。
*/
/**
* @brief 关于文件
* 优先使用fstream,由于大部分库都是用C语言的FILE文件句柄,故作兼容。
* 接口统一使用UTF-8编码,代码内容与代码文件皆使用utf8
*/
/**
* @brief C++标签
* deprecated 废弃接口
*/
/**
* @brief 应该优先使用以下基础类型
* int、unsigned、float
* 字节流使用std::byte
*/
/**
* @brief 复制dll命令
* xcopy / r / y $(SolutionDir)$(PlatformName)\$(Configuration)\DND3D.dll $(SolutionDir)bin\$(Configuration)
*/
/*
MS-DOS-style lines that end with (CR/LF) characters (optional for the last line)
Jiger: {使用回车换行(两个字符)作为行分隔符,最后一行数据可以没有这两个字符。}
An optional header record (there is no sure way to detect whether it is present, so care is required when importing).
Jiger:{标题行是否需要,要双方显示约定}.
Each record "should" contain the same number of comma-separated fields.
Jiger:{每行记录的字段数要相同,使用逗号分隔。} 逗号是默认使用的值,双方可以约定别的。
Any field may be quoted (with double quotes).
Jiger:{任何字段的值都可以使用双引号括起来}. 为简单期间,可以要求都使用双引号。
Fields containing a line-break, double-quote, and/or commas should be quoted. (If they are not, the file will likely be impossible to process correctly).
Jiger:{字段值中如果有换行符,双引号,逗号的,必须要使用双引号括起来。这是必须的。}
A (double) quote character in a field must be represented by two (double) quote characters.
Jiger:{如果值中有双引号,使用一对双引号来表示原来的一个双引号}
*/
/**
* @brief 基础定义与算法分类
* dl_type.h 类型定义、类型转换
* dl_algorithm.h 与类型无关的算法,操作容器的算法
* dl_math.h 数学相关、需要输出日志
*/
/**
* @brief 注释示例
*
* @detail 详细说明-------------------------------------aa
*
* @note 注释
* @attention 注意
* @warning 警告
* @exception 异常
* @remarks 备注说明
*
* @return 返回值
* @retval 返回值的说明
*
* @bug 有bug
* @todo 还没做完呢
* @see 参考一下
* @pre 前置条件
* @deprecated 过时了
*/
int this_is_doxygen_test() {}
/**
* @example 例子
*/
/*! \mainpage dl库
*
* \section intro_sec 介绍
*
* 基于C++20、vulkan的工具库。
* by略游 更新于2024-12-23
*
* 链接:https://gitee.com/lveyou/dl
*
* @image html framework.png "架构图"
*/
+154
View File
@@ -0,0 +1,154 @@
【关键字表】
function 定义函数
param 函数参数
typeof 变量类型,返回字符串
is_null 变量为空,等价 typeof == "null"
operator操作符重载
return 函数返回值
new 定义
if
elseif
else
while
for
goto
【内置函数表】
print 打印字符串
param 函数参数
var 定义全局变量
【变量】
分类:
变量分为局部变量和全局变量。
全局变量以g_开头。示例如下:
a = 0 // 局部变量 a
g_a = 1 // 全局变量 g_a
类型:
null 空
int 整数
float 浮点
string 字符串
class 类
vector 数组
table 表
function 函数
userdata 指针
expr 表达式
【函数】
分类:
函数分为内置函数、导入函数、脚本函数。
内置函数,由引擎提供的函数,例如print、strlen等基础函数。
导入函数,通过C++层导出的函数。
脚本函数,由脚本定义的函数。
定义:
脚本内只能定义脚本函数,以function关键字开始,参数通过关键字param获得。示例如下:
function add =
{
print("参数0为:{}", param[0])
print("参数1为:{}", param[1])
print(param[0] + param[1])
}
add(1, 2)
调用:
参数数量为1时可以不加括号,其余情况需要加括号
【表达式】
包含操作符的语句
+、-、*、/ 基础运算,class可使用operator重载
% 求模
++、-- 自增自减,class可使用operator重载
>、<、>=、<= 大小判断
# 长度计算(字符串为实际字符数,容器为长度)
== 相等判断
! 逻辑取反,非0为true
&&、|| 逻辑与或
算术运算:
float和int可以进行算术运算
【作用域】
以{}包含一个作用域,作用域内的局部变量,超出作用域会删除
【数组】
以()生成一个数组,包含0到N个变量。
通过[index]下标访问
【表】
以table()生成一个表,包含0到N个变量。
通过._key键访问
【类】
通过class定义。通过.访问成员,构造函数与类名相同,示例如下:
// 类
class Dot {
x
y
function Dot = {
x = param[0]
y = param[1]
}
function Print = {
print fmt("{},{}", x, y)
}
operator+ = {
a = param[0]
b = param[1]
return new Dot(a.x + b.x, a.y + b.y)
}
}
dot0 = new Dot(100, 200)
dot1 = new Dot
dot1.x = 100
dot1.y = 200
dot2 = dot0 + dot1
dot2.Print()
【控制语句】
if,条件语句,示例如下:
if _a < 0 {
print "值小于0"
}else if _a > 0 {
print "值大于0"
}else{
print "值等于0"
}
for,循环语句,示例如下:
for (i, i < 10, ++i){
print i
}
while,循环语句,示例如下:
while i < 10 {
++i
if i < 5 break
}
breakcontinue跳出语句,功能与C++一致
【导入函数】
【实现细节】
局部变量使用固定内存,避免堆分配
函数参数基于固定vector,避免堆分配
代码块:
源码文件,编译(预处理)为代码块。代码块包含变量空间、多个代码段。
代码块是虚拟机执行单元。
代码段:
代码段是执行的基本单元。
代码段按顺序执行,或通过控制语句跳转。
代码段包含表达式、控制语句……。
代码段默认为单行,未匹配的(、{、[可以将单行拓展为多行
代码段拥有独立的作用域。
虚拟机:
动态变化的内容,维护内存数据。
表达式:
基于后缀表达式。
+16
View File
@@ -0,0 +1,16 @@
~1.上下键历史记录
+2.光标基础显示
+3.光标左右键移动
+4.光标范围选择
+5.背景功能
6.tab切换输入框
+7.多行支持
+8.快捷键ctrl+a全选
+9.快捷键ctrl+x剪切
+10.快捷键ctrl+c复制
+11.快捷键ctrl+v粘贴
12.裁剪
+13.快捷键delete
14.上下键多行设置光标
15.多行输入框滚动
16.输入限制