Functions_edit: open: |- 方法.取组件值('main','name') != "main" ? { 方法.消息('&c当前界面不存在 main 组件 无法进行编辑!'); 方法.切换方法集('Functions', 0); return 1; } : 0; 界面变量.debug = false; 界面变量.当前组件索引 = -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; 局部变量.组件名称 == 'MiaoDragonCoreEditordebug_label' ? { 界面变量.debug = !界面变量.debug; 方法.debug(界面变量.debug); return 1; } : 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: |- 方法.切换方法集('Functions_right_menu'); 方法.执行方法('open', 'Functions_edit'); 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', '_type=&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 + 鼠标滚轮 缩放组件', 'debug=&c切换调试模式', 'upload=&d点击此处 上传配置到服务器 &a&l上传' ); 绘制操作提示: |- 局部变量.起始偏移X = 20; 局部变量.起始偏移Y = 80; 局部变量.文本偏移 = 12; 局部变量.组件Y偏移 = 局部变量.起始偏移Y; for_each(局部变量.提示, 局部变量.参数, { 局部变量.组件名称数组 = 方法.分割(局部变量.提示, '='); 局部变量.组件名称 = 局部变量.组件名称数组[0]; 局部变量.组件提示 = 局部变量.组件名称数组[1]; 局部变量.组件 = 方法.新建组件(方法.合并文本('MiaoDragonCoreEditor', 局部变量.组件名称, '_label')); 局部变量.组件Y偏移 = 局部变量.组件Y偏移 + 局部变量.文本偏移; 局部变量.组件.x = 局部变量.起始偏移X; 局部变量.组件.y = 局部变量.组件Y偏移; 方法.是否存在前缀(局部变量.组件名称, '_') ? { 局部变量.属性名称数组 = 方法.分割(局部变量.组件名称, '_'); 局部变量.属性名称 = 局部变量.属性名称数组[1]; 局部变量.属性值 = 方法.取组件值(界面变量.当前组件, 局部变量.属性名称); 局部变量.属性表达式 = ''; 局部变量.属性表达式 = 局部变量.属性名称 == 'x' ? 方法.合并文本('(', (局部变量.属性值 - 界面变量.x), ')') : 局部变量.属性表达式; 局部变量.属性表达式 = 局部变量.属性名称 == 'y' ? 方法.合并文本('(', (局部变量.属性值 - 界面变量.y), ')') : 局部变量.属性表达式; 局部变量.组件.texts = 方法.合并文本('co|string|', 局部变量.组件提示, 局部变量.属性值, 局部变量.属性表达式, ' &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" ? { 方法.执行方法('退出编辑'); return 1; } : 0; 界面变量.当前组件名称 != "" ? return 方法.执行方法('移动组件') : 0; return 1; # 方法.键位是否按下('LCONTROL') == 1 ? : 方法.消息("&c请先退出编辑模式后关闭界面! &4Ctrl + ESC 强制退出!"); 创建组件: |- 方法.切换方法集('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); return 1;