diff --git a/DragonCore/MiaoDragonCoreEditor.yml b/DragonCore/MiaoDragonCoreEditor.yml new file mode 100644 index 0000000..309cc6a --- /dev/null +++ b/DragonCore/MiaoDragonCoreEditor.yml @@ -0,0 +1,303 @@ +Functions_edit: + open: |- + 界面变量.当前组件索引 = -1; + 界面变量.所有组件数组 = 方法.取所有组件; + 界面变量.当前组件名称 = "main"; + 方法.执行方法('保存鼠标位置'); + 方法.执行方法('设置当前组件'); + 方法.消息('&a已切换到编辑模式!'); + return 方法.执行方法('操作提示'); + 高精度数值相加: |- + return (方法.取成员(局部变量.参数, 0) * 100000 + 方法.取成员(局部变量.参数, 1) * 100000) / 100000 + 高精度数值相减: |- + return (方法.取成员(局部变量.参数, 0) * 100000 - 方法.取成员(局部变量.参数, 1) * 100000) / 100000 + 设置当前组件为鼠标悬浮组件: |- + 局部变量.x = 方法.取鼠标x; + 局部变量.y = 方法.取鼠标y; + 界面变量.当前组件 = 方法.取悬浮组件; + 界面变量.当前组件名称 == 界面变量.当前组件.name ? return 0 : 0; + 界面变量.当前组件名称 = 界面变量.当前组件.name; + 方法.执行方法('设置当前组件'); + 设置当前组件: |- + 界面变量.当前组件名称 == "" ? return 方法.消息('未选取组件') : 0; + 界面变量.当前组件 = 方法.取组件(界面变量.当前组件名称); + 界面变量.当前组件X偏移变量 = 方法.合并文本(界面变量.当前组件名称, '_offsetX'); + 界面变量.当前组件Y偏移变量 = 方法.合并文本(界面变量.当前组件名称, '_offsetY'); + 方法.设置变量值(界面变量.当前组件X偏移变量, 方法.取组件值(界面变量.当前组件名称, 'x')-界面变量.x); + 方法.设置变量值(界面变量.当前组件Y偏移变量, 方法.取组件值(界面变量.当前组件名称, 'y')-界面变量.y); + 界面变量.当前组件.x = 方法.合并文本("界面变量.x+方法.取变量('", 界面变量.当前组件X偏移变量, "');"); + 界面变量.当前组件.y = 方法.合并文本("界面变量.y+方法.取变量('", 界面变量.当前组件Y偏移变量, "');"); + 方法.消息(方法.合并文本('&6已选择组件: &a', 界面变量.当前组件名称)); + 方法.执行方法('操作提示'); + 打印当前组件: |- + 界面变量.当前组件名称 == "" ? return 方法.消息('未选取组件') : 0; + 方法.消息('&6当前组件信息: '); + 方法.消息(方法.合并文本('&6名称: &c', 界面变量.当前组件名称)); + 方法.消息(方法.合并文本('&6宽: &3', 方法.取组件值(界面变量.当前组件名称, 'width'), ' &6高: &3', 方法.取组件值(界面变量.当前组件名称, 'width'))); + 方法.消息(方法.合并文本('&6X: &3', 方法.取组件值(界面变量.当前组件名称, 'x')-界面变量.x, ' &6Y: &3', 方法.取组件值(界面变量.当前组件名称, 'y')-界面变量.y)); + 方法.消息(方法.合并文本('&6scale: &3', 界面变量.当前组件.scale)); + 放大缩小组件: |- + 界面变量.当前组件名称 == "" ? return 方法.消息('未选取组件') : 0; + 界面变量.当前组件.scale = 方法.执行方法('高精度数值相加', 界面变量.当前组件.scale , 方法.取滚轮值 * 0.1); + 方法.执行方法('操作提示'); + mouse_move: |- + 方法.执行方法('鼠标移动', 方法.取鼠标X - 界面变量.当前鼠标X, 方法.取鼠标Y - 界面变量.当前鼠标Y); + 方法.执行方法('保存鼠标位置'); + 保存鼠标位置: |- + 界面变量.当前鼠标X = 方法.取鼠标X; + 界面变量.当前鼠标Y = 方法.取鼠标Y; + 鼠标移动: |- + 界面变量.当前组件名称 == "" ? return 0 : 0; + 方法.键位是否按下('mouse_left') == 1 ? { + (界面变量.当前组件名称 == "" || 界面变量.当前组件名称 == "main")? return 0 : 0; + 局部变量.偏移X = 方法.取成员(局部变量.参数, 0); + 局部变量.偏移Y = 方法.取成员(局部变量.参数, 1); + 局部变量.偏移X != 0 ? 方法.设置变量值(界面变量.当前组件X偏移变量, 方法.取变量(界面变量.当前组件X偏移变量) + 局部变量.偏移X) : 0; + 局部变量.偏移Y != 0 ? 方法.设置变量值(界面变量.当前组件Y偏移变量, 方法.取变量(界面变量.当前组件Y偏移变量) + 局部变量.偏移Y) : 0; + 方法.执行方法('操作提示'); + } : 0; + click_left: |- + 局部变量.组件名称 = 方法.取鼠标悬浮组件名; + 局部变量.组件名称 == "" ? return 1 : 0; + 方法.是否存在前缀(局部变量.组件名称, 'MiaoDragonCoreEditor') ? 0 : { + 方法.执行方法('设置当前组件为鼠标悬浮组件'); + return 1; + }; + 局部变量.组件名称 == 'MiaoDragonCoreEditorexit_label' ? return 方法.执行方法('退出编辑') : 0; + 局部变量.组件名称 == 'MiaoDragonCoreEditorupload_label' ? { + 方法.键位是否按下('LCONTROL') == 0 ? return 方法.消息('&c配置上传后将会覆盖服务器配置', '&d如需继续 请按住 &4Ctrl &d点击上传!') : 0; + return 方法.执行方法('上传界面'); + } : 0; + 局部变量.组件名称 == 'MiaoDragonCoreEditorcreate_label' ? return 方法.执行方法('创建组件') : 0; + 局部变量.组件名称 == 'MiaoDragonCoreEditordelete_label' ? { + 界面变量.当前组件名称 == "main" ? return 方法.消息('&c删除失败 main 组件不允许删除!') : 0; + 方法.键位是否按下('LCONTROL') == 0 ? return 方法.消息(方法.合并文本('&6是否需要删除 &b', 界面变量.当前组件名称,' &6组件?'), '&c如需继续 请按住 &4Ctrl &c点击删除!') : 0; + 方法.消息(方法.合并文本('&6组件 &b', 界面变量.当前组件名称,' &c已删除!')); + 方法.删除组件(界面变量.当前组件名称); + 界面变量.当前组件名称 = "main"; + 方法.执行方法('设置当前组件'); + return 1; + } : 0; + 方法.是否存在前缀(局部变量.组件名称, 'MiaoDragonCoreEditor_') ? { + 局部变量.组件名称数组 = 方法.分割(局部变量.组件名称, '_'); + 局部变量.操作属性 = 方法.取成员(局部变量.组件名称数组, 1); + return 方法.执行方法('编辑组件', 局部变量.操作属性); + } : 0; + return 1; + click_right: |- + return 1; + 编辑组件: |- + 方法.切换方法集('Functions_getInput'); + 方法.执行方法('open', 'Functions_edit', '设置组件', 方法.取组件值(界面变量.当前组件名称, 局部变量.参数[0]), 局部变量.参数[0]); + return 1; + 组件居中: |- + 界面变量.当前组件名称 == "" ? return 方法.消息('未选取组件') : 0; + 界面变量.当前组件.center ? { + 方法.消息(方法.合并文本('&6组件: &3', 界面变量.当前组件名称, ' &c已取消居中...')) + } : { + 方法.消息(方法.合并文本('&6组件: &3', 界面变量.当前组件名称, ' &a已居中...')) + } + 界面变量.当前组件.center = !界面变量.当前组件.center; + 操作提示: |- + 方法.执行方法( + '绘制操作提示', + 'exit=&6组件属性编辑模式 &c&l退出', + '_name=&3组件名称: &r', + 'create=&3点击此行新增一个组件 &a&l新增', + 'delete=&c点击此行删除此组件 &4&l删除', + '_x=&3位置 X: &r', + '_y=&3位置 Y: &r', + '_width=&3组件宽度: &r', + '_height=&3组件高度: &r', + '_scale=&3组件缩放: &r', + '_texture=&3材质地址: &r', + '_texts=&3文本内容: &r', + '_identifier=&3插槽名称: &r', + '_text=&3文本框内容: &r', + '2=&c点击其他组件可进行切换', + '3=&aWASD 移动位置 默认移动1像素', + '31=&a按住Shift移动0.1像素 按住Ctrl移动10像素', + '4=&2Ctrl + 鼠标滚轮 缩放组件', + 'upload=&d点击此处 上传配置到服务器 &a&l上传' + ); + 绘制操作提示: |- + 局部变量.起始偏移X = 80; + 局部变量.起始偏移Y = 80; + 局部变量.文本偏移 = 12; + 局部变量.组件Y偏移 = 局部变量.起始偏移Y; + for_each(局部变量.提示, 局部变量.参数, { + 局部变量.组件名称数组 = 方法.分割(局部变量.提示, '='); + 局部变量.组件名称 = 局部变量.组件名称数组[0]; + 局部变量.组件提示 = 局部变量.组件名称数组[1]; + 局部变量.组件 = 方法.新建组件(方法.合并文本('MiaoDragonCoreEditor', 局部变量.组件名称, '_label')); + 局部变量.组件Y偏移 = 局部变量.组件Y偏移 + 局部变量.文本偏移; + 局部变量.组件.x = 局部变量.起始偏移X; + 局部变量.组件.y = 局部变量.组件Y偏移; + 方法.是否存在前缀(局部变量.组件名称, '_') ? { + 局部变量.属性名称 = 方法.分割(局部变量.组件名称, '_'); + 局部变量.属性值 = 方法.取组件值(界面变量.当前组件, 局部变量.属性名称[1]); + 局部变量.组件.texts = 方法.合并文本(局部变量.组件提示, 局部变量.属性值, ' &b编辑'); + } : { + 局部变量.组件.texts = 局部变量.组件提示; + }; + 方法.添加组件(局部变量.组件); + }); + return 1; + 设置组件: |- + 方法.设置组件值(界面变量.当前组件名称, 局部变量.参数[1], 局部变量.参数[0]); + 方法.执行方法('操作提示'); + return 1 + 上传界面: |- + 界面变量.上传中 == 1 ? return 方法.消息('&c组件上传中 请稍候...') : 0; + 界面变量.上传中 = 1; + 方法.消息(方法.合并文本('&a开始上传 &3', 方法.取当前界面名, ' &a请稍候...')); + 方法.发包('MiaoDragonCoreEditor', 'upload', 'start', 方法.取当前界面名); + 上传组件: |- + for_each(局部变量.组件, 方法.取所有组件, { + 方法.是否存在前缀(局部变量.组件.name, 'MiaoDragonCoreEditor') ? 0 : { + 方法.发包( + 'MiaoDragonCoreEditor', + 'upload', + 'component', + 方法.取当前界面名, + 局部变量.组件.name_, + 局部变量.组件.width_, + 局部变量.组件.height_, + 局部变量.组件.x_, + 局部变量.组件.y_, + 局部变量.组件.scale_ + ); + } + }); + 方法.执行方法('上传结束'); + 上传结束: |- + 方法.发包('MiaoDragonCoreEditor', 'upload', 'end', 方法.取当前界面名); + 界面变量.上传中 = 0; + 方法.消息(方法.合并文本('&a上传成功 重载龙核后即可生效...')); + wheel: |- + 方法.键位是否按下('LCONTROL') == 1 ? return 方法.执行方法('放大缩小组件') : 0; + 移动组件: |- + 界面变量.当前组件名称 == "" ? return 方法.消息('未选取组件') : 0; + 局部变量.移动距离 = 1; + 局部变量.移动距离 = 方法.键位是否按下("LCONTROL") ? 10 : 局部变量.移动距离; + 局部变量.移动距离 = 方法.键位是否按下("LSHIFT") ? 0.1 : 局部变量.移动距离; + 方法.取当前按下键 == "A" ? 方法.设置变量值(界面变量.当前组件X偏移变量, 方法.执行方法('高精度数值相减', 方法.取变量(界面变量.当前组件X偏移变量), 局部变量.移动距离)) : 0; + 方法.取当前按下键 == "W" ? 方法.设置变量值(界面变量.当前组件Y偏移变量, 方法.执行方法('高精度数值相减', 方法.取变量(界面变量.当前组件Y偏移变量), 局部变量.移动距离)) : 0; + 方法.取当前按下键 == "D" ? 方法.设置变量值(界面变量.当前组件X偏移变量, 方法.执行方法('高精度数值相加', 方法.取变量(界面变量.当前组件X偏移变量), 局部变量.移动距离)) : 0; + 方法.取当前按下键 == "S" ? 方法.设置变量值(界面变量.当前组件Y偏移变量, 方法.执行方法('高精度数值相加', 方法.取变量(界面变量.当前组件Y偏移变量), 局部变量.移动距离)) : 0; + 方法.执行方法('操作提示'); + keyPress: |- + 方法.取当前按下键 == "ESCAPE" ? { + 方法.键位是否按下('LCONTROL') == 1 ? 方法.执行方法('退出编辑') : 方法.消息("&c请先退出编辑模式后关闭界面! &4Ctrl + ESC 强制退出!"); + return 1; + } : 0; + 界面变量.当前组件名称 != "" ? return 方法.执行方法('移动组件') : 0; + return 1; + 创建组件: |- + 方法.切换方法集('Functions_create', 0); + 方法.执行方法('open')}; + return 1; + 退出编辑: |- + 方法.删除组件('MiaoDragonCoreEditor', 1); + 方法.消息('&c已退出编辑组件模式!'); + 方法.切换方法集('Functions', 1); + return 1 + +Functions_create: + open: |- + 方法.消息('&a已切换到新建组件模式!'); + 方法.消息('&6请按键选择需要新建的组件:'); + 方法.消息('&61: &a新建 &3界面(texture)'); + 方法.消息('&62: &a新建 &3插槽(slot)'); + 方法.消息('&63: &a新建 &3文本(label)'); + 方法.消息('&64: &a新建 &3文本框(textbox)'); + keyPress: |- + 方法.取当前按下键 == "1" ? return 方法.执行方法('新建组件', '新建界面') : 0; + 方法.取当前按下键 == "2" ? return 方法.执行方法('新建组件', '新建插槽') : 0; + 方法.取当前按下键 == "3" ? return 方法.执行方法('新建组件', '新建文本') : 0; + 方法.取当前按下键 == "4" ? return 方法.执行方法('新建组件', '新建文本框') : 0; + return 1; + 新建组件: |- + 方法.切换方法集('Functions_getInput', 0); + 方法.执行方法('open', 'Functions_create', 局部变量.参数[0], '请输入组件名称 按回车确认'); + return 1 + 新建界面: |- + 局部变量.组件 = 方法.新建组件(方法.合并文本(局部变量.参数[0], '_texture')); + 局部变量.组件.x = 方法.合并文本("main.x"); + 局部变量.组件.y = 方法.合并文本("main.y"); + 局部变量.组件.width = 16; + 局部变量.组件.height = 16; + 局部变量.组件.texture = "huan/h1.png"; + 方法.添加组件(局部变量.组件); + 方法.执行方法('完成新建', 局部变量.组件.name); + 新建插槽: |- + 局部变量.组件 = 方法.新建组件(方法.合并文本(局部变量.参数[0], '_slot')); + 局部变量.组件.x = 方法.合并文本("main.x"); + 局部变量.组件.y = 方法.合并文本("main.y"); + 局部变量.组件.width = 16; + 局部变量.组件.height = 16; + 局部变量.组件.identifier = "container_36"; + 方法.添加组件(局部变量.组件); + 方法.执行方法('完成新建', 局部变量.组件.name); + 新建文本: |- + 局部变量.组件 = 方法.新建组件(方法.合并文本(局部变量.参数[0], '_label')); + 局部变量.组件.x = 方法.合并文本("main.x"); + 局部变量.组件.y = 方法.合并文本("main.y"); + 局部变量.组件.texts = 局部变量.组件[1] ? 局部变量.组件[1] : 局部变量.组件.name; + 方法.添加组件(局部变量.组件); + 方法.执行方法('完成新建', 局部变量.组件.name); + 新建文本框: |- + 局部变量.组件 = 方法.新建组件(方法.合并文本(局部变量.参数[0], '_textbox')); + 局部变量.组件.x = 方法.合并文本("main.x"); + 局部变量.组件.y = 方法.合并文本("main.y"); + 局部变量.组件.width = 200; + 局部变量.组件.height = 20; + 局部变量.组件.texts = 局部变量.组件.name; + 方法.添加组件(局部变量.组件); + 方法.执行方法('完成新建', 局部变量.组件.name); + 完成新建: |- + 方法.切换方法集('Functions_edit', 0); + 界面变量.当前组件名称 = 局部变量.参数[0]; + 方法.执行方法('设置当前组件'); + +# 独立方法 用于获取用户输入内容 +# 参数1 回调方法集 +# 参数2 回调方法 +# 参数3 输入提示 +# 参数4 默认值 +Functions_getInput: + open: |- + 界面变量.MiaoDragonCoreEditorInputCallbackFunctions = 局部变量.参数[0]; + 界面变量.MiaoDragonCoreEditorInputCallbackFunction = 局部变量.参数[1]; + 界面变量.MiaoDragonCoreEditorInputDefaultValue = 局部变量.参数[2]; + 界面变量.MiaoDragonCoreEditorInputCallbackParams = 局部变量.参数[3]; + 局部变量.组件 = 方法.新建组件('MiaoDragonCoreEditor_textbox'); + 局部变量.组件.x = (方法.取屏幕宽度 - 200) / 2; + 局部变量.组件.y = 30; + 局部变量.组件.width = 200; + 局部变量.组件.height = 20; + 局部变量.组件.length = 256; + 局部变量.组件.text = 界面变量.MiaoDragonCoreEditorInputDefaultValue; + 局部变量.组件.focused = true; + 方法.添加组件(局部变量.组件); + 局部变量.组件 = 方法.新建组件('MiaoDragonCoreEditor_label'); + 局部变量.组件.x = (方法.取屏幕宽度 - 200) / 2; + 局部变量.组件.y = 20; + 局部变量.组件.width = 200; + 局部变量.组件.height = 20; + 局部变量.组件.texts = "&6请在下面修改内容后 按 &c回车 &a确认 &6按 &rESC &c取消"; + 方法.添加组件(局部变量.组件); + click: |- + 方法.取鼠标悬浮组件名 != "MiaoDragonCoreEditor_textbox" ? return 1 : 0; + keyPress: |- + 方法.取当前按下键 == "ESCAPE" ? return 方法.执行方法('移除组件并退出') : 0; + 界面变量.MiaoDragonCoreEditorInputText = 方法.取组件值('MiaoDragonCoreEditor_textbox','text'); + (方法.取当前按下键 == "RETURN") ? { + 方法.执行方法('移除组件并退出'); + 方法.执行方法(界面变量.MiaoDragonCoreEditorInputCallbackFunction, 界面变量.MiaoDragonCoreEditorInputText, 界面变量.MiaoDragonCoreEditorInputCallbackParams); + return 1; + } : 0; + 移除组件并退出: |- + 方法.删除组件('MiaoDragonCoreEditor_label'); + 方法.删除组件('MiaoDragonCoreEditor_textbox'); + 方法.切换方法集(界面变量.MiaoDragonCoreEditorInputCallbackFunctions, 0);