UI新增滚动条 成就系统完成分离

This commit is contained in:
Lenheart 2025-05-29 00:10:15 +08:00
parent d71fc5c822
commit 920015e323
2 changed files with 324 additions and 298 deletions

View File

@ -736,6 +736,7 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
TopCallBackFunc = null;
Data = null;
DeBugMode = false;
constructor(x, y, width, height) {
this.Localtion_X = x;
@ -792,7 +793,13 @@ class LenheartNewUI_CommonUi extends LenheartNewUI_BaseWindow {
function TopShow(obj) {
if (TopCallBackFunc) TopCallBackFunc(obj, this);
if (DeBugMode) DeBug(obj);
}
function DeBug(obj) {
sq_DrawBox(X, Y, Width, Height, 0xffffffff);
}
}
class LenheartNewUI_BaseButton extends LenheartNewUI_CommonUi {
@ -1195,4 +1202,211 @@ class LenheartNewUI_TabbarsText extends LenheartNewUI_Tabbars {
if (State == 0 || State == 8)
L_sq_DrawCode(TextStr, X + TextXoffset, SY + 2, Color, 0, 1);
}
}
class Yosin_DragButton extends LenheartNewUI_CommonUi {
State = 0;
DHeight = null; // 改为高度
Path = "interface/lenheartwindowcommon.img";
Idx = 172;
FillHeight = 2; // 改为填充高度
FirstHeight = 7; // 改为首节高度
Width = 9; // 固定宽度,垂直按钮宽度通常是固定的
Visible = true;
DeBugMode = false;
BasePos = null;
MoveFlag = false;
//鼠标相对位置
M_Xpos = null;
M_Ypos = null;
B_X = null;
B_Y = null;
Move_Value = 0;
Max_Move_Value = 0;
CurrentMovePosY = 0;
//当前滚动值
CurrentScrollValue = 0.0;
OnChange = null;
constructor(X, Y, H) {
this.DHeight = H;
LenheartNewUI_CommonUi.constructor(X, Y, Width, H + 7 * 2); // 宽度固定,高度动态
BasePos = {
x = X,
y = Y
}
}
function SetFrame(gPath, gIdx) {
if (gPath) Path = gPath;
Idx = gIdx;
}
function Show(obj) {
//不可用
if (State == 8) {
L_sq_Draw3Image_Vertical(X + 1, Y, this.DHeight, Path, Idx + 9, FillHeight, FirstHeight);
} else {
//按下
if (isLBDown) {
L_sq_Draw3Image_Vertical(X, Y + 1, this.DHeight, Path, Idx + 3, FillHeight, FirstHeight);
}
//悬停
else if (isInRect) {
L_sq_Draw3Image_Vertical(X, Y, this.DHeight, Path, Idx + 3, FillHeight, FirstHeight);
}
//普通
else {
L_sq_Draw3Image_Vertical(X, Y, this.DHeight, Path, Idx, FillHeight, FirstHeight);
}
}
}
//鼠标左键按下回调
function OnMouseLbDown(MousePos_X, MousePos_Y) {
LenheartNewUI_CommonUi.OnMouseLbDown(MousePos_X, MousePos_Y);
if (isInRect) {
MoveFlag = true;
M_Xpos = MousePos_X; //原始鼠标位置数据
M_Ypos = MousePos_Y;
B_X = X; //原始窗口位置
B_Y = Y;
}
}
//鼠标事件回调
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
LenheartNewUI_CommonUi.OnMouseProc(Flag, MousePos_X, MousePos_Y);
//移动
if (MoveFlag) {
Move_Value = MousePos_Y - M_Ypos + CurrentMovePosY;
if (Move_Value > 0 && Move_Value <= Max_Move_Value) {
Y = (Move_Value);
Localtion_Y = (BasePos.y + Move_Value);
if (OnChange) {
local Rate = Move_Value.tofloat() / Max_Move_Value.tofloat();
CurrentScrollValue = format("%.2f", Rate).tofloat();
OnChange(CurrentScrollValue);
}
}
}
}
//鼠标左键弹起回调
function OnMouseLbUp(MousePos_X, MousePos_Y) {
LenheartNewUI_CommonUi.OnMouseLbUp(MousePos_X, MousePos_Y);
MoveFlag = false;
if (Move_Value< 0) Move_Value = 0;
if (Move_Value > Max_Move_Value) Move_Value = Max_Move_Value;
CurrentMovePosY = Move_Value; //记录当前移动位置
}
//设置最大移动值
function SetMaxMoveValue(Value) {
Max_Move_Value = Value;
}
//设置滚动回调函数
function SetOnChange(OnChange) {
this.OnChange = OnChange;
}
//设置滚动步进
function SetStep(Step) {
// 计算新的移动值
local newValue = CurrentMovePosY + (Step * Max_Move_Value).tointeger();
// 边界检查
if (newValue< 0) newValue = 0;
if (newValue > Max_Move_Value) newValue = Max_Move_Value;
// 更新位置
Move_Value = newValue;
CurrentMovePosY = newValue;
Localtion_Y = BasePos.y + newValue;
// 更新并回调滚动值
if (OnChange) {
local Rate = Move_Value.tofloat() / Max_Move_Value.tofloat();
CurrentScrollValue = format("%.2f", Rate).tofloat();
OnChange(CurrentScrollValue);
}
}
}
class Yosin_ScrollBar {
//上按钮
UpButton = null;
//下按钮
DownButton = null;
//滑动按钮
ScrollButton = null;
//点击时步进的Y轴值
Step = 0.0;
Parent = null;
constructor(X, Y, H, Sbtn_H) {
ScrollButton = Yosin_DragButton(X, Y + 13, Sbtn_H);
ScrollButton.SetFrame("interface/lenheartwindowcommon.img", 184);
//减去按钮高度 加滚动条长度加滚动条上下拼接长度15 加滚动条最大高度
ScrollButton.SetMaxMoveValue(H - 26 - ScrollButton.Height);
UpButton = LenheartNewUI_BaseButton(X, Y, 9, 13, "interface/lenheartwindowcommon.img", 16);
UpButton.OnClick = function() {
DoStep(-1);
}.bindenv(this);
DownButton = LenheartNewUI_BaseButton(X, Y + H - 13, 9, 13, "interface/lenheartwindowcommon.img", 22);
DownButton.OnClick = function() {
DoStep(1);
}.bindenv(this);
}
function DoStep(Flag) {
ScrollButton.SetStep(Step * Flag);
}
function SetParent(Ui) {
Parent = Ui;
Ui.AddChild(UpButton);
Ui.AddChild(ScrollButton);
Ui.AddChild(DownButton);
}
function RemoveSelf() {
for (local i = 0; i< Parent.Childrens.len(); i++) {
local obj = Parent.Childrens[i];
if (obj == UpButton || obj == ScrollButton || obj == DownButton) {
Parent.Childrens.remove(i);
i--;
}
}
}
function SetDebugModel(Flag) {
UpButton.DeBugMode = Flag;
ScrollButton.DeBugMode = Flag;
DownButton.DeBugMode = Flag;
}
function SetOnChange(Func) {
ScrollButton.SetOnChange(Func);
}
function SetStep(value) {
Step = value;
}
}

View File

@ -5,276 +5,13 @@
文件用途:成就系统
*/
class Achievement_TypeButton extends LenheartNewUI_BaseButton {
class Yosin_DragButton extends LenheartNewUI_CommonUi {
State = 0;
BaseIdx = 29;
DHeight = null; // 改为高度
Path = "interface/lenheartwindowcommon.img";
Idx = 172;
FillHeight = 2; // 改为填充高度
FirstHeight = 7; // 改为首节高度
Width = 9; // 固定宽度,垂直按钮宽度通常是固定的
Visible = true;
DeBugMode = false;
BasePos = null;
MoveFlag = false;
//鼠标相对位置
M_Xpos = null;
M_Ypos = null;
B_X = null;
B_Y = null;
Move_Value = 0;
Max_Move_Value = 0;
CurrentMovePosY = 0;
constructor(X, Y, H) {
this.DHeight = H;
LenheartNewUI_CommonUi.constructor(X, Y, Width, H + 7 * 2); // 宽度固定,高度动态
BasePos = {
x = X,
y = Y
}
function _typeof() {
return "Achievement_TypeButton";
}
function SetFrame(gPath, gIdx) {
if (gPath) Path = gPath;
Idx = gIdx;
}
function Show(obj) {
//不可用
if (State == 8) {
L_sq_Draw3Image_Vertical(X + 1, Y, this.DHeight, Path, Idx + 9, FillHeight, FirstHeight);
} else {
//按下
if (isLBDown) {
L_sq_Draw3Image_Vertical(X, Y + 1, this.DHeight, Path, Idx + 3, FillHeight, FirstHeight);
}
//悬停
else if (isInRect) {
L_sq_Draw3Image_Vertical(X, Y, this.DHeight, Path, Idx + 3, FillHeight, FirstHeight);
}
//普通
else {
L_sq_Draw3Image_Vertical(X, Y, this.DHeight, Path, Idx, FillHeight, FirstHeight);
}
}
}
//鼠标左键按下回调
function OnMouseLbDown(MousePos_X, MousePos_Y) {
LenheartNewUI_CommonUi.OnMouseLbDown(MousePos_X, MousePos_Y);
if (isInRect) {
MoveFlag = true;
M_Xpos = MousePos_X; //原始鼠标位置数据
M_Ypos = MousePos_Y;
B_X = X; //原始窗口位置
B_Y = Y;
}
}
//鼠标事件回调
function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
LenheartNewUI_CommonUi.OnMouseProc(Flag, MousePos_X, MousePos_Y);
//移动
if (MoveFlag) {
Move_Value = MousePos_Y - M_Ypos + CurrentMovePosY;
print(Move_Value);
if ( Move_Value <= (Max_Move_Value - Height + BasePos.y)) {
Y = (Move_Value);
Localtion_Y = (BasePos.y + Move_Value);
}
}
}
//鼠标左键弹起回调
function OnMouseLbUp(MousePos_X, MousePos_Y) {
LenheartNewUI_CommonUi.OnMouseLbUp(MousePos_X, MousePos_Y);
MoveFlag = false;
CurrentMovePosY = Move_Value; //记录当前移动位置
}
//设置最大移动值
function SetMaxMoveValue(Value) {
Max_Move_Value = Value;
}
}
// class Yosin_DragButton extends LenheartNewUI_CommonUi {
// //路径
// Path = "";
// //索引
// Idx = 0;
// //方向
// Direction = false;
// //按钮
// Button = null;
// //变动位置回调函数
// OnChange = null;
// //鼠标相对位置
// M_Xpos = null;
// M_Ypos = null;
// //未移动时的初始坐标
// BasePos = null;
// //移动Flag
// MoveFlag = false;
// //最大移动值
// Max_Move_Value = 0;
// //移动值
// Move_Value = 0;
// //侦测值
// Detect_Value = 0;
// B_X = null;
// B_Y = null;
// Visible = true;
// DeBugMode = false;
// constructor(X, Y, S_H, H) {
// Childrens = [];
// this.Path = Path;
// this.Idx = Idx;
// LenheartNewUI_CommonUi.constructor(X, Y, 9, H);
// Button = LenheartNewUI_VerticalButton(X, Y, S_H);
// Button.SetFrame("interface/lenheartwindowcommon.img", 184);
// AddChild(Button);
// BasePos = {
// x = X,
// y = Y
// }
// }
// //生成DT
// function GenerateDt() {
// try {
// local CurT = L_Getmicroseconds();
// Duration = (CurT - DurationFlag);
// DurationFlag = CurT;
// } catch (exception) {
// }
// }
// function DeBug(obj) {
// sq_DrawBox(X, Y, Width, Height, 0xffffffff);
// }
// function Show(obj) {
// LenheartNewUI_Windows.Show(obj);
// }
// //同步坐标
// function SyncPos(X, Y) {
// this.X = X;
// this.Y = Y;
// foreach(Window in Childrens) {
// Window.SyncPos(X, Y);
// }
// }
// //鼠标事件回调
// function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
// LenheartNewUI_CommonUi.OnMouseProc(Flag, MousePos_X, MousePos_Y);
// if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, Parent.X + Button.Localtion_X , Parent.Y + Button.Localtion_Y, Width, Height)){
// isInRect = true;
// }
// else isInRect = false;
// foreach(Window in Childrens) {
// Window.OnMouseProc(Flag, MousePos_X, MousePos_Y);
// }
// //移动
// if (MoveFlag) {
// //左键拖动
// if (Direction) {
// Move_Value = B_X + (MousePos_X - M_Xpos);
// if (!(Move_Value >= (0 + BasePos.x) && Move_Value <= (Max_Move_Value - Width + BasePos.x))) {
// X = Move_Value;
// // DragLogic((Move_Value - Localtion_X).tofloat() / (Max_Move_Value - Width + BasePos.x - Localtion_X).tofloat());
// }
// } else {
// Move_Value = B_Y + (MousePos_Y - M_Ypos);
// if (Move_Value >= (0 + BasePos.y) && Move_Value <= (Max_Move_Value - Height + BasePos.y)) {
// Y = (Move_Value);
// Button.Localtion_Y = (Move_Value);
// // DragLogic((Move_Value - Localtion_Y).tofloat() / (Max_Move_Value - Height + BasePos.y - Localtion_Y).tofloat());
// }
// }
// SyncPos(X, Y);
// }
// }
// //鼠标左键按下回调
// function OnMouseLbDown(MousePos_X, MousePos_Y) {
// LenheartNewUI_CommonUi.OnMouseLbDown(MousePos_X, MousePos_Y);
// foreach(Window in Childrens) {
// Window.OnMouseLbDown(MousePos_X, MousePos_Y);
// }
// if (isInRect) {
// MoveFlag = true;
// M_Xpos = MousePos_X; //原始鼠标位置数据
// M_Ypos = MousePos_Y;
// B_X = X; //原始窗口位置
// B_Y = Y;
// }
// }
// //鼠标左键弹起回调
// function OnMouseLbUp(MousePos_X, MousePos_Y) {
// LenheartNewUI_CommonUi.OnMouseLbUp(MousePos_X, MousePos_Y);
// foreach(Window in Childrens) {
// Window.OnMouseLbUp(MousePos_X, MousePos_Y);
// }
// MoveFlag = false;
// }
// //鼠标右键按下回调
// function OnMouseRbDown(MousePos_X, MousePos_Y) {
// LenheartNewUI_CommonUi.OnMouseRbDown(MousePos_X, MousePos_Y);
// foreach(Window in Childrens) {
// Window.OnMouseRbDown(MousePos_X, MousePos_Y);
// }
// }
// //鼠标右键弹起回调
// function OnMouseRbUp(MousePos_X, MousePos_Y) {
// LenheartNewUI_CommonUi.OnMouseRbUp(MousePos_X, MousePos_Y);
// foreach(Window in Childrens) {
// Window.OnMouseRbUp(MousePos_X, MousePos_Y);
// }
// }
// //鼠标滚轮时间回调
// function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
// LenheartNewUI_CommonUi.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
// foreach(Window in Childrens) {
// Window.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
// }
// }
// //设置最大移动值
// function SetMaxMoveValue(Value) {
// Max_Move_Value = Value;
// }
// }
class AchievementC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
@ -305,6 +42,18 @@ class AchievementC extends LenheartNewUI_Windows {
EventWindow = null;
//左侧滚动条对象
LeftScrollBar = null;
//左侧滚轮值
LeftScrollRate = 0;
LeftScrollValue = 400;
//右侧滚动条对象
RightScrollBar = null;
//右侧滚轮值
RightScrollRate = 0;
RightScrollValue = 400;
//查询成就回包
function OnQueryAchievementBack(Chunk) {
local Jso = Json.Decode(Chunk);
@ -346,10 +95,35 @@ class AchievementC extends LenheartNewUI_Windows {
}
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
EtcInfo = Rindro_Script.GetFileData("etc/th_plugin/etc.etc", function(DataTable, Data) {
while (!Data.Eof()) {
local Str = Data.Get();
if (Str == "[window pos]") {
DataTable.window_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
} else if (Str == "[clicp pos]") {
DataTable.clicp_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
} else if (Str == "[clicp2 pos]") {
DataTable.clicp_pos2 <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
}else if (Str == "[closebutton pos]") {
DataTable.closebutton_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
} else if (Str == "[left scroll bar]") {
DataTable.left_scroll_bar_info <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
} else if (Str == "[right scroll bar]") {
DataTable.right_scroll_bar_info <- [];
while (true) {
local buf = Data.Get();
if (buf == "[/right scroll bar]") break;
local Arr = [buf,Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
DataTable.right_scroll_bar_info.append(Arr);
}
}
}
}.bindenv(this));
Childrens = [];
InitButtonConfig();
//注册控件
RegisterWidget();
RegisterWidget(true);
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
Pack_Control.rawset(20091002, OnQueryAchievementBack.bindenv(this));
@ -372,10 +146,17 @@ class AchievementC extends LenheartNewUI_Windows {
}
function InitAchievement() {
Childrens = [];
ScrollValueMax = 0;
RegisterWidget();
for (local i = 0; i< Childrens.len(); i++) {
if (typeof Childrens[i] == "Achievement_TypeButton") {
Childrens.remove(i);
i--;
}
}
//这里要手动移除右边的滚动条
if (RightScrollBar) RightScrollBar.RemoveSelf();
ScrollValueMax = 0;
RegisterWidget(false);
if (Info.len() > Page) {
//绘制成就
@ -383,6 +164,14 @@ class AchievementC extends LenheartNewUI_Windows {
if (InfoObj.Pos.y - 320 > ScrollValueMax) ScrollValueMax = InfoObj.Pos.y - 320;
DrawAItem(InfoObj);
}
RightScrollValue = EtcInfo.right_scroll_bar_info[Page][4];
RightScrollBar = Yosin_ScrollBar(EtcInfo.right_scroll_bar_info[Page][0], EtcInfo.right_scroll_bar_info[Page][1], EtcInfo.right_scroll_bar_info[Page][2], EtcInfo.right_scroll_bar_info[Page][3]);
RightScrollBar.SetParent(this);
RightScrollBar.SetStep(EtcInfo.right_scroll_bar_info[Page][5].tofloat() / 100.0);
RightScrollBar.SetOnChange(function(Rate) {
ScrollValue = (Rate * RightScrollValue).tointeger();
}.bindenv(this));
}
}
@ -513,26 +302,40 @@ class AchievementC extends LenheartNewUI_Windows {
}
function RegisterWidget() {
//类型按钮
for (local i = 0; i< ButtonInfo.len(); i++) {
local Config = ButtonInfo[i];
local TypeButton = LenheartNewUI_BaseButton(Config.Pos.x, Config.Pos.y, Config.Size.x, Config.Size.y, Config.Icon.Path, Config.Icon.Idx);
TypeButton.Data = i;
TypeButton.OnClickEx = function(Button) {
Page = Button.Data;
InitAchievement();
QueryAchievement();
}.bindenv(this);
Childrens.append(TypeButton);
function RegisterWidget(Flag) {
if (!Flag) {
//类型按钮
for (local i = 0; i< ButtonInfo.len(); i++) {
local Config = ButtonInfo[i];
local TypeButton = Achievement_TypeButton(Config.Pos.x, Config.Pos.y, Config.Size.x, Config.Size.y, Config.Icon.Path, Config.Icon.Idx);
TypeButton.Data = {
id = i,
BasePosY = Config.Pos.y,
};
TypeButton.OnClickEx = function(Button) {
if (Button.Localtion_Y <= EtcInfo.clicp_pos[1]) return;
Page = Button.Data.id;
InitAchievement();
QueryAchievement();
}.bindenv(this);
TypeButton.SetCallBackFunc(function(Btn) {
Btn.Localtion_Y = (Btn.Data.BasePosY - LeftScrollRate * LeftScrollValue).tointeger();
}.bindenv(this));
Childrens.append(TypeButton);
}
}
// local TestButton = Yosin_DragButton(50, 120, 10);
// TestButton.SetFrame("interface/lenheartwindowcommon.img", 184);
// TestButton.SetMaxMoveValue(400);
// AddChild(TestButton);
// Childrens.append(TestButton);
//只有第一次的时候注册进度条
if (Flag) {
LeftScrollValue = EtcInfo.left_scroll_bar_info[4];
LeftScrollBar = Yosin_ScrollBar(EtcInfo.left_scroll_bar_info[0], EtcInfo.left_scroll_bar_info[1], EtcInfo.left_scroll_bar_info[2], EtcInfo.left_scroll_bar_info[3]);
LeftScrollBar.SetParent(this);
LeftScrollBar.SetStep(EtcInfo.left_scroll_bar_info[5].tofloat() / 100.0);
LeftScrollBar.SetOnChange(function(Rate) {
LeftScrollRate = Rate;
}.bindenv(this));
}
}
//绘制主界面
@ -564,14 +367,21 @@ class AchievementC extends LenheartNewUI_Windows {
function Show(obj) {
DrawMain(obj);
// setClip(X + EtcInfo.clicp_pos[0], Y + EtcInfo.clicp_pos[1], X + EtcInfo.clicp_pos[2], Y + EtcInfo.clicp_pos[3]);
//左侧裁切
setClip(X + EtcInfo.clicp_pos[0], Y + EtcInfo.clicp_pos[1], X + EtcInfo.clicp_pos[2], Y + EtcInfo.clicp_pos[3]);
LenheartNewUI_Windows.Show(obj);
releaseClip(); //裁切结束
//右侧裁切
setClip(X + EtcInfo.clicp_pos2[0], Y + EtcInfo.clicp_pos2[1], X + EtcInfo.clicp_pos2[2], Y + EtcInfo.clicp_pos2[3]);
LenheartNewUI_Windows.Show(obj);
releaseClip(); //裁切结束
DrawInfo();
}
function DrawAItem(InfoObj) {
local Button = LenheartNewUI_BaseButton(InfoObj.Pos.x, InfoObj.Pos.y, InfoObj.Size.x, InfoObj.Size.y, InfoObj.Icon.Path, InfoObj.Icon.Idx);
local Button = Achievement_TypeButton(InfoObj.Pos.x, InfoObj.Pos.y, InfoObj.Size.x, InfoObj.Size.y, InfoObj.Icon.Path, InfoObj.Icon.Idx);
Button.Data = InfoObj;
Button.SetCallBackFunc(function(Button) {
local InfoObj = Button.Data;
@ -627,12 +437,19 @@ class AchievementC extends LenheartNewUI_Windows {
//鼠标滚轮事件回调
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
if (MousePos_X > (X + 205)) {
// if (Flag) {
// if (ScrollValue > 0) ScrollValue -= 35;
if (Flag) {
if (ScrollValue > 0) ScrollValue -= 35;
}
if (!Flag) {
if (ScrollValue< ScrollValueMax) ScrollValue += 35;
// }
// if (!Flag) {
// if (ScrollValue< ScrollValueMax) ScrollValue += 35;
// }
if (Flag) RightScrollBar.DoStep(-1);
if (!Flag) RightScrollBar.DoStep(1);
} else {
if (Flag) LeftScrollBar.DoStep(-1);
if (!Flag) LeftScrollBar.DoStep(1);
}
//调用原生方法
@ -673,17 +490,12 @@ function Lenheart_Achievement_Fun(obj) {
local Str = Data.Get();
if (Str == "[window pos]") {
DataTable.window_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get(), Data.Get()];
} else if (Str == "[clicp pos]") {
DataTable.clicp_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
} else if (Str == "[closebutton pos]") {
DataTable.closebutton_pos <- [Data.Get(), Data.Get(), Data.Get(), Data.Get()];
}
}
}.bindenv(this));
local window_Info = Info.window_pos;
local Win = LenheartNewUI_CreateWindow(AchievementC, "成就系统窗口", window_Info[0], window_Info[1], window_Info[2], window_Info[3], window_Info[4]);
Win.EtcInfo = Info;
EventList_Obj.AddEvent("成就系统", 118, Win);
}
}