初始化内容
This commit is contained in:
Vendored
+80
@@ -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;
|
||||
}
|
||||
```
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
裁剪功能
|
||||
脚本
|
||||
输入框
|
||||
密码算法
|
||||
代码生成
|
||||
3d管线、骨骼动画
|
||||
字符串反序列化
|
||||
手柄
|
||||
变量系统
|
||||
|
||||
脏标记系统
|
||||
Vendored
+177
@@ -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的Group,order越大(详细参见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 "架构图"
|
||||
*/
|
||||
Vendored
+154
@@ -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
|
||||
}
|
||||
|
||||
break,continue跳出语句,功能与C++一致
|
||||
|
||||
【导入函数】
|
||||
|
||||
【实现细节】
|
||||
局部变量使用固定内存,避免堆分配
|
||||
函数参数基于固定vector,避免堆分配
|
||||
代码块:
|
||||
源码文件,编译(预处理)为代码块。代码块包含变量空间、多个代码段。
|
||||
代码块是虚拟机执行单元。
|
||||
代码段:
|
||||
代码段是执行的基本单元。
|
||||
代码段按顺序执行,或通过控制语句跳转。
|
||||
代码段包含表达式、控制语句……。
|
||||
代码段默认为单行,未匹配的(、{、[可以将单行拓展为多行
|
||||
代码段拥有独立的作用域。
|
||||
虚拟机:
|
||||
动态变化的内容,维护内存数据。
|
||||
表达式:
|
||||
基于后缀表达式。
|
||||
Vendored
+16
@@ -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.输入限制
|
||||
Reference in New Issue
Block a user