装备跨界

This commit is contained in:
2025-12-15 15:02:34 +08:00
parent 374f3673ca
commit 7edd836c63
19 changed files with 875 additions and 35 deletions

View File

@@ -0,0 +1,58 @@
/*
文件名:Training_ModifyAttributes.nut
路径:Project/Trainingroom/Training_ModifyAttributes.nut
创建日期:2025-12-13 02:22
文件用途:修改训练房角色属性
*/
class Training_ModifyAttributesC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
NoWindow = true;
//是否可见
// Visible = false;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
}
function RegisterWidget() {
// //关闭按钮
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
// CloseButton.OnClick = function() {
// this.Visible = false;
// }.bindenv(this);
// Childrens.append(CloseButton);
}
//绘制主界面
function DrawMain(obj) {
// print(2);
L_sq_DrawCode("修改属性页面", X + 50, Y + 80, sq_RGBA(230, 200, 155, 255), 0, 1);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y - 28);
if (Parent && Parent.Visible) {
X = Parent.X;
Y = Parent.Y + 28;
}
}
}

View File

@@ -0,0 +1,56 @@
/*
文件名:Training_Setting.nut
路径:Project/Trainingroom/Training_Setting.nut
创建日期:2025-12-13 02:24
文件用途:训练房设置
*/
class Training_SettingC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
NoWindow = true;
//是否可见
// Visible = false;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
}
function RegisterWidget() {
// //关闭按钮
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
// CloseButton.OnClick = function() {
// this.Visible = false;
// }.bindenv(this);
// Childrens.append(CloseButton);
}
//绘制主界面
function DrawMain(obj) {
L_sq_DrawCode("设置页面", X + 50, Y + 80, sq_RGBA(230, 200, 155, 255), 0, 1);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y - 28);
if (Parent && Parent.Visible) {
X = Parent.X;
Y = Parent.Y + 28;
}
}
}

View File

@@ -0,0 +1,56 @@
/*
文件名:Training_State.nut
路径:Project/Trainingroom/Training_State.nut
创建日期:2025-12-13 02:23
文件用途:训练状态管理
*/
class Training_StateC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
NoWindow = true;
//是否可见
// Visible = false;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
}
function RegisterWidget() {
// //关闭按钮
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
// CloseButton.OnClick = function() {
// this.Visible = false;
// }.bindenv(this);
// Childrens.append(CloseButton);
}
//绘制主界面
function DrawMain(obj) {
L_sq_DrawCode("状态页面", X + 50, Y + 80, sq_RGBA(230, 200, 155, 255), 0, 1);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y - 28);
if (Parent && Parent.Visible) {
X = Parent.X;
Y = Parent.Y + 28;
}
}
}

View File

@@ -0,0 +1,58 @@
/*
文件名:Training_SummonMonster.nut
路径:Project/Trainingroom/Training_SummonMonster.nut
创建日期:2025-12-13 02:02
文件用途:训练室-召唤怪物
*/
class Training_SummonMonsterC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
NoWindow = true;
//是否可见
// Visible = false;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
}
function RegisterWidget() {
// //关闭按钮
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
// CloseButton.OnClick = function() {
// this.Visible = false;
// }.bindenv(this);
// Childrens.append(CloseButton);
}
//绘制主界面
function DrawMain(obj) {
// print(1);
L_sq_DrawCode("召唤怪物页面", X + 50, Y + 80, sq_RGBA(230, 200, 155, 255), 0, 1);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y - 28);
if (Parent && Parent.Visible) {
X = Parent.X;
Y = Parent.Y + 28;
}
}
}

View File

@@ -5,11 +5,14 @@
文件用途:
*/
class TrainingroomC extends LenheartNewUI_Windows {
X = -321;
//调试模式
DeBugMode = true;
// DeBugMode = true;
//不是窗口
// NoWindow = true;
NoWindow = true;
//是否可见
// Visible = false;
@@ -21,45 +24,173 @@ class TrainingroomC extends LenheartNewUI_Windows {
//位移修炼场副本编号
MoveTrainingroomDungeonId = 1;
//是否在修炼场中
InTrainingroom = false;
//队列
Queue = null;
//图像
Img = Rindro_Image("training/main.img");
//主界面展开状态
MainState = 0;
//子页面配置
PageConfig = ["召唤怪物", "修改属性", "状态", "设置"];
//子页面标题
Title = null;
//子页面
PageList = null;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
Title = [];
PageList = [];
Queue = QuestQueue();
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
X = -321;
InitPvf();
Cb_OpenWindow_Enter_Func.rawset("TrainingroomC", function(args) {
NativePointer(Rindro_Haker.CpuContext.ecx).add(4344 * 4).writeInt(1);
if (args[0] == 244 && InTrainingroom) {
NativePointer(Rindro_Haker.CpuContext.ecx).add(4344 * 4).writeInt(0);
ChangeMainState(false);
}
}.bindenv(this));
}
function RegisterWidget() {
// //关闭按钮
// local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
// CloseButton.OnClick = function() {
// this.Visible = false;
// }.bindenv(this);
// Childrens.append(CloseButton);
local LogicFunc = function(Btn) {
foreach(Pos, obj in Title) {
if (obj != Btn) obj.State = 0;
else {
obj.State = 1;
ChangeSubPage(Pos);
}
}
};
foreach(Pos, Name in PageConfig) {
local Tabbars1 = LenheartNewUI_TabbarsText((Pos * 61), 4, Name);
if (Pos == 0) Tabbars1.State = 1;
Tabbars1.SetTextOffset(31 - LenheartTextClass.GetStringLength(Name) / 2, 4);
AddChild(Tabbars1);
Tabbars1.OnClickEx = LogicFunc.bindenv(this);
Title.append(Tabbars1);
}
//返回城镇
local ReturnToTheTownButton = LenheartNewUI_ButtonText(236, 450, 15, "返回城镇");
ReturnToTheTownButton.Idx = 74;
ReturnToTheTownButton.DWidth = 18;
ReturnToTheTownButton.Width = 74;
ReturnToTheTownButton.SetTextOffset(-4, 1);
ReturnToTheTownButton.OnClickEx = function(Btn) {
L_sq_SendPackType(45);
L_sq_SendPack();
ChangeMainState(false);
}.bindenv(this);
AddChild(ReturnToTheTownButton);
PageList.append(Training_SummonMonsterC("修炼场_召唤怪物页面", 0, 0, 300, 140, 0));
PageList.append(Training_ModifyAttributesC("修炼场_修改属性页面", 0, 0, 300, 140, 0));
PageList.append(Training_StateC("修炼场_状态页面", 0, 0, 300, 140, 0));
PageList.append(Training_SettingC("修炼场_设置页面", 0, 0, 300, 140, 0));
ChangeSubPage(0);
}
function ChangeSubPage(Index) {
for (local i = 0; i< PageList.len(); i++) {
local Object = PageList[i];
Object.Visible = false;
RemoveChild(Object.ObjectId);
}
PageList[Index].Visible = true;
AddChild(PageList[Index]);
}
//绘制主界面
function DrawMain(obj) {
Img.DrawPng(0, X, Y);
//分割线
Rindro_Image_GlobalMap["lenheartui"].DrawExPng(230, X, Y + 25, 0, sq_RGBA(255, 255, 255, 250), 1.5, 1.0);
//子页面背景框
//嵌套背景框
// DrawNineBox(X + 0, Y + 26, 302, 146, "interface/lenheartwindowcommon.img", 0);
}
function ChangeMainState(flag) {
if (MainState == 0) {
MainState = 1
Queue.AddQuest("界面移动动画", function(Name, Time) {
local Offset = sq_GetAccel(-321, 0, Time, 500, true);
X = Offset;
if (Offset == 0) {
MainState = 2;
Queue.RemoveQuest(Name);
}
}.bindenv(this));
} else if (MainState == 2) {
MainState = 1;
Queue.AddQuest("界面移动动画", function(Name, Time) {
local Offset = sq_GetAccel(0, -321, Time, 500, true);
X = Offset;
if (Offset == -321) {
MainState = 0;
Queue.RemoveQuest(Name);
}
}.bindenv(this));
}
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
Queue.Run();
}
//修炼场中Proc
function ProcInTraining(obj) {
InTrainingroom = false;
//判断自己是否在修炼场中
if (sq_GetCurrentModuleType() != 3) return;
local stage = sq_GetGlobaludpModuleStage();
local dungeon = sq_GetDungeonByStage(stage);
local dungeonIndex = sq_GetDuegonIndex(dungeon);
if (dungeonIndex != MoveTrainingroomDungeonId) return;
InTrainingroom = true;
local KThisC = L_sq_RA(0x1B470E0);
local KeyFlag = L_sq_RA(KThisC + 269 + DIK_F12);
if (KeyFlag == 128 && MainState != 1) {
ChangeMainState(true);
}
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y);
//主动调用子对象窗口的Proc
foreach(Object in Childrens) {
if (Object instanceof LenheartNewUI_Windows)
Object.Proc(obj);
}
//判断自己是否在需要位移修炼场的区域
if (sq_GetCurrentModuleType() == 1) {
@@ -76,6 +207,8 @@ class TrainingroomC extends LenheartNewUI_Windows {
}
}
}
ProcInTraining(obj);
}
function InitPvf() {
@@ -101,7 +234,7 @@ function Lenheart_Trainingroom_Fun(obj) {
local RootTab = getroottable();
if (!RootTab.rawin("Trainingroom_Obj")) {
RootTab.rawset("Trainingroom_Obj", true);
LenheartNewUI_CreateWindow(TrainingroomC, "修炼场窗口", ((getroottable().Rindro_Scr_Width - 405) / 2).tointeger(), 64, 405, 372, 28);
LenheartNewUI_CreateWindow(TrainingroomC, "修炼场窗口", 0, 35, 306, 474, 0);
}
}