This commit is contained in:
2024-09-29 16:52:10 +08:00
parent b2133d8463
commit 16be225768
19 changed files with 1860 additions and 180 deletions

View File

@@ -290,6 +290,8 @@ class LenheartNewUI_Windows extends LenheartNewUI_BaseWindow {
ItemInfoDrawS = L_Sq_CallFunc(0xE6E070, "int", FFI_THISCALL, ["int", "int", "int", "int"], L_sq_RA(0x1A5FB20), 275, Rindro_ItemInfoObject[Id], 41);
//校准道具信息窗口位置
L_Sq_CallFunc(0xF3B3B0, "int", FFI_THISCALL, ["int", "int", "int", "int", "int"], ItemInfoDrawS, IMouse.GetXPos(), IMouse.GetYPos(), 28, 28);
//我自己UI打开的道具信息窗口需要把渲染队列改为下层 以显示我打开的道具
getroottable().WindowsShowABFlag <- false;
}
} else {
if (ItemInfoDrawS) {
@@ -454,13 +456,19 @@ function CheackMouseInOldWindows() {
local WindowAddress = L_sq_RA(0x1B474D4);
if (WindowAddress) {
local Flag = L_sq_RA(WindowAddress);
// print(format("%02X", Flag));
foreach(value in OldBaseWindowArr) {
if (Flag == value) {
// if ((L_sq_RA(WindowAddress + 0x14) == 0 && L_sq_RA(WindowAddress + 0x18) == 0) || Flag == 0x184D0C4) {
// print(false);
return false;
// }
//空地
if (Flag == 0x184D0C4 || Flag == 0x0184CF6C) {
if ((L_sq_RA(WindowAddress + 0x14) == 0 && L_sq_RA(WindowAddress + 0x18) == 0)) {
return false;
}
} else return false;
}
}
}
@@ -476,7 +484,7 @@ function RunMouseLogic(MousePos_X, MousePos_Y) {
//还原鼠标
R_Mouse.Restore();
}
//在任何老窗口上 并且渲染层A层 也就是下层渲染
//在任何老窗口上 并且渲染层A层 也就是下层渲染
else if (CheackMouseInOldWindows() && !getroottable().WindowsShowABFlag) {
//还原鼠标
R_Mouse.Restore();
@@ -528,11 +536,15 @@ function L_MouseCallBack(MouseState, MouseFlag, MousePos_X, MousePos_Y) {
//判断是否悬停活动图标
if (getroottable().rawin("EventList_Obj")) EventList_Obj.CheckInEvent(MousePos_X, MousePos_Y);
//如果渲染层级在下级 即A层 或者是 鼠标没有悬停在任何新窗口上时 执行判断 如果悬停在原生窗口 就解除鼠标锁定 如果点击 就改变渲染层级
if (!getroottable().WindowsShowABFlag || !CheackMouseInNewWindows(MousePos_X, MousePos_Y)) {
if (CheackMouseInOldWindows()) {
//如果点击了原生窗口 或者使用了滚轮 就把渲染队列改成下
if (MouseState == 0x201 || MouseState == 0x20a) getroottable().WindowsShowABFlag <- false;
if (MouseState == 0x201 || MouseState == 0x20a) {
getroottable().WindowsShowABFlag <- false;
}
if (MouseState != 0x20a) return;
}
}
@@ -554,8 +566,6 @@ function L_MouseCallBack(MouseState, MouseFlag, MousePos_X, MousePos_Y) {
case 0x201: {
//如果点击了新窗口就把渲染队列改成上
getroottable().WindowsShowABFlag <- true;
//点击动画
if (getroottable().WindowsShowABFlag) L_sq_WA(0x1B46874, 1);
Window.OnMouseLbDown(MousePos_X, MousePos_Y);
break;
@@ -589,7 +599,7 @@ function L_MouseCallBack(MouseState, MouseFlag, MousePos_X, MousePos_Y) {
//打开原生窗口回调
function L_OpenOldWindowCallBack(WindowIndex) {
//将新窗口渲染队列改为下层 抵消窗口 Esc窗口 登录可能显示的任务窗口
if (WindowIndex != 170 && WindowIndex != 176) {
if (WindowIndex != 170 && WindowIndex != 176 && WindowIndex != 276 && WindowIndex != 275 && WindowIndex != 278 && WindowIndex != 283) {
getroottable().WindowsShowABFlag <- false;
}
}
@@ -636,9 +646,11 @@ function L_WindowsLogic(obj) {
}
}
if (Flag) {
getroottable().WindowsShowABFlag <- false;
//还原鼠标
R_Mouse.Restore();
L_sq_MouseClick();
L_Sq_CallFunc(0x11A8B60, "void", FFI_MS_CDECL, []);
// L_sq_MouseClick();
Rindro_MouseClickFlag = 5;
}
}
@@ -682,6 +694,7 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
isInRect = false;
OnClick = null;
OnClickEx = null;
OnClickSound = null;
ObjectId = null;
@@ -689,6 +702,8 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
TopCallBackFunc = null;
Data = null;
constructor(x, y, width, height) {
this.Localtion_X = x;
this.Localtion_Y = y;
@@ -722,8 +737,9 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
}
//鼠标左键弹起回调
function OnMouseLbUp(MousePos_X, MousePos_Y) {
if (isLBDown && OnClick) {
OnClick();
if (isLBDown) {
if (OnClick) OnClick();
if (OnClickEx) OnClickEx(this);
}
isLBDown = false;
}