691 lines
24 KiB
Plaintext
691 lines
24 KiB
Plaintext
/*
|
|
文件名:Achievement.nut
|
|
路径:Project/Achievement/Achievement.nut
|
|
创建日期:2025-02-23 08:37
|
|
文件用途:成就系统
|
|
*/
|
|
|
|
|
|
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 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;
|
|
|
|
//不是窗口
|
|
// NoWindow = true;
|
|
|
|
//是否可见
|
|
// Visible = false;
|
|
|
|
EtcInfo = null;
|
|
|
|
WindowImg = Rindro_Image("achievement/main.img");
|
|
WindowBackGroundImg = Rindro_Image("achievement/mainbackground.img");
|
|
|
|
ButtonInfo = null;
|
|
Info = null;
|
|
Data = null;
|
|
|
|
IsOther = false;
|
|
OtherName = null;
|
|
|
|
Page = 1;
|
|
|
|
//滚轮值
|
|
ScrollValue = 0;
|
|
ScrollValueMax = 500;
|
|
|
|
EventWindow = null;
|
|
|
|
//查询成就回包
|
|
function OnQueryAchievementBack(Chunk) {
|
|
local Jso = Json.Decode(Chunk);
|
|
if (Jso.rawin("click")) {
|
|
IsOther = true;
|
|
} else IsOther = false;
|
|
Data = {};
|
|
foreach(ValueObject in Jso.Achievement) {
|
|
Data.rawset(ValueObject.id, ValueObject);
|
|
}
|
|
|
|
}
|
|
|
|
function OnQueryAchievementBack2(Chunk) {
|
|
local Jso = Json.Decode(Chunk);
|
|
EventWindow = EventList_Obj.AddEvent("AchievementEvent1", 682, null);
|
|
EventWindow.MainButton.ShowName = Jso.VipInfo;
|
|
}
|
|
|
|
function OnQueryAchievementBack3(Chunk) {
|
|
local Jso = Json.Decode(Chunk);
|
|
EventWindow = EventList_Obj.AddEvent("人物属性加成", 433, null);
|
|
EventWindow.MainButton.OnClick = function(B_obj) {
|
|
local T = {
|
|
op = 20091601,
|
|
}
|
|
SendPackEx(T);
|
|
}.bindenv(this);
|
|
}
|
|
|
|
//查询成就
|
|
function QueryAchievement() {
|
|
local T = {
|
|
op = 20091001,
|
|
cjid = Page,
|
|
cid2 = OtherName ? OtherName : "-1"
|
|
}
|
|
SendPackEx(T);
|
|
}
|
|
|
|
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
|
|
Childrens = [];
|
|
InitButtonConfig();
|
|
//注册控件
|
|
RegisterWidget();
|
|
|
|
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
|
|
Pack_Control.rawset(20091002, OnQueryAchievementBack.bindenv(this));
|
|
Pack_Control.rawset(20092002, OnQueryAchievementBack2.bindenv(this));
|
|
Pack_Control.rawset(20091010, OnQueryAchievementBack3.bindenv(this));
|
|
|
|
InitConfig();
|
|
InitAchievement();
|
|
QueryAchievement();
|
|
|
|
|
|
|
|
EventWindow = EventList_Obj.AddEvent("人物属性加成", 433, null);
|
|
EventWindow.MainButton.OnClick = function(B_obj) {
|
|
local T = {
|
|
op = 20091601,
|
|
}
|
|
SendPackEx(T);
|
|
}.bindenv(this);
|
|
}
|
|
|
|
function InitAchievement() {
|
|
Childrens = [];
|
|
ScrollValueMax = 0;
|
|
RegisterWidget();
|
|
|
|
|
|
if (Info.len() > Page) {
|
|
//绘制成就
|
|
foreach(InfoObj in Info[Page]) {
|
|
if (InfoObj.Pos.y - 320 > ScrollValueMax) ScrollValueMax = InfoObj.Pos.y - 320;
|
|
DrawAItem(InfoObj);
|
|
}
|
|
}
|
|
}
|
|
|
|
function InitButtonConfig() {
|
|
local AchieData = R_Utils.GetScriptFileReader("etc/th_plugin/control.etc");
|
|
if (AchieData) {
|
|
local DataArr = [];
|
|
if (AchieData.Size >= 7) {
|
|
//创建Blob对象
|
|
local IOBUF = Sq_Point2Blob(L_sq_P2I(AchieData.Buffer.C_Object), AchieData.Size);
|
|
local IO = BlobEx(IOBUF.readblob(IOBUF.len()));
|
|
//以5为单步从第二位开始遍历字节
|
|
local i = 2;
|
|
while (true) {
|
|
if (i< AchieData.Size && AchieData.Size - i >= 5) {
|
|
local str = Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
//城镇编号
|
|
if (str == "[info]") {
|
|
local Data = {};
|
|
while (true) {
|
|
local Ret = Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
if (Ret == "[/info]") {
|
|
DataArr.append(Data);
|
|
break;
|
|
}
|
|
if (Ret == "[icon]") {
|
|
Data.Icon <- {};
|
|
Data.Icon.Path <- Rindro_Script.UnpackData(IO, i).tolower();
|
|
i += 5;
|
|
Data.Icon.Idx <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
if (Ret == "[pos]") {
|
|
Data.Pos <- {};
|
|
Data.Pos.x <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
Data.Pos.y <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
if (Ret == "[size]") {
|
|
Data.Size <- {};
|
|
Data.Size.x <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
Data.Size.y <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
}
|
|
}
|
|
} else break;
|
|
}
|
|
}
|
|
ButtonInfo = DataArr;
|
|
}
|
|
}
|
|
|
|
function InitConfig() {
|
|
Info = [];
|
|
local PageLst = R_Utils.GetLstArr("etc/th_plugin/info.lst", "etc/");
|
|
foreach(Index, Path in PageLst) {
|
|
local AchieData = R_Utils.GetScriptFileReader(Path);
|
|
if (AchieData) {
|
|
local DataArr = {};
|
|
if (AchieData.Size >= 7) {
|
|
//创建Blob对象
|
|
local IOBUF = Sq_Point2Blob(L_sq_P2I(AchieData.Buffer.C_Object), AchieData.Size);
|
|
local IO = BlobEx(IOBUF.readblob(IOBUF.len()));
|
|
//以5为单步从第二位开始遍历字节
|
|
local i = 2;
|
|
while (true) {
|
|
if (i< AchieData.Size && AchieData.Size - i >= 5) {
|
|
local str = Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
//城镇编号
|
|
if (str == "[info]") {
|
|
local Data = {};
|
|
while (true) {
|
|
local Ret = Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
if (Ret == "[/info]") {
|
|
DataArr.rawset(Data.Id, Data);
|
|
break;
|
|
}
|
|
if (Ret == "[id]") {
|
|
Data.Id <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
if (Ret == "[icon]") {
|
|
Data.Icon <- {};
|
|
Data.Icon.Path <- Rindro_Script.UnpackData(IO, i).tolower();
|
|
i += 5;
|
|
Data.Icon.Idx <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
if (Ret == "[pos]") {
|
|
Data.Pos <- {};
|
|
Data.Pos.x <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
Data.Pos.y <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
if (Ret == "[size]") {
|
|
Data.Size <- {};
|
|
Data.Size.x <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
Data.Size.y <- Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
}
|
|
if (Ret == "[str]") {
|
|
Data.Str <- [];
|
|
while (true) {
|
|
local strbuffer = Rindro_Script.UnpackData(IO, i);
|
|
i += 5;
|
|
strbuffer = Sq_ConvertWideChar(strbuffer, "big5")
|
|
if (strbuffer == "[/str]") break;
|
|
Data.Str.append(strbuffer);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else break;
|
|
}
|
|
}
|
|
Info.append(DataArr);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
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);
|
|
}
|
|
|
|
|
|
// local TestButton = Yosin_DragButton(50, 120, 10);
|
|
// TestButton.SetFrame("interface/lenheartwindowcommon.img", 184);
|
|
// TestButton.SetMaxMoveValue(400);
|
|
// AddChild(TestButton);
|
|
// Childrens.append(TestButton);
|
|
}
|
|
|
|
//绘制主界面
|
|
function DrawMain(obj) {
|
|
WindowBackGroundImg.DrawPng(0 + Page, X, Y);
|
|
WindowImg.DrawPng(19, X + EtcInfo.closebutton_pos[0], Y + EtcInfo.closebutton_pos[1]); //关闭按钮图标
|
|
}
|
|
|
|
function DrawInfo() {
|
|
if (Info.len() > Page) {
|
|
//绘制成就
|
|
foreach(InfoObj in Info[Page]) {
|
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + InfoObj.Pos.x, Y + InfoObj.Pos.y - ScrollValue, InfoObj.Size.x, InfoObj.Size.y)) {
|
|
|
|
for (local i = 0; i< InfoObj.Str.len(); i += 2) {
|
|
local OffsetRate = InfoObj.Str.len() / 2;
|
|
local StrBuffer = format(InfoObj.Str[i], Data[InfoObj.Id].num);
|
|
local StrBuffer2 = InfoObj.Str[i + 1];
|
|
|
|
L_sq_DrawWindow(IMouse.GetXPos() + 32, IMouse.GetYPos() + 60 - (OffsetRate * 44) + (i / 2 * 44), 144, 24, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
|
|
L_sq_DrawCode(StrBuffer, IMouse.GetXPos() + 42, IMouse.GetYPos() + 70 - (OffsetRate * 44) + (i / 2 * 44), (Data[InfoObj.Id].achievement > (i / 2)) ? 0xFFedd568 : 0xFF969696, 1, 1);
|
|
L_sq_DrawCode(StrBuffer2, IMouse.GetXPos() + 42, IMouse.GetYPos() + 88 - (OffsetRate * 44) + (i / 2 * 44), (Data[InfoObj.Id].achievement > (i / 2)) ? 0xFFedd568 : 0xFF969696, 1, 1);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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]);
|
|
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);
|
|
Button.Data = InfoObj;
|
|
Button.SetCallBackFunc(function(Button) {
|
|
local InfoObj = Button.Data;
|
|
Button.Localtion_X = InfoObj.Pos.x;
|
|
Button.Localtion_Y = InfoObj.Pos.y - ScrollValue;
|
|
}.bindenv(this));
|
|
Button.OnClickEx = function(Button) {
|
|
if (IsOther) return;
|
|
local T = {
|
|
op = 20091005,
|
|
cjid = Page,
|
|
id = Button.Data.Id
|
|
}
|
|
SendPackEx(T);
|
|
}.bindenv(this);
|
|
Childrens.append(Button);
|
|
}
|
|
|
|
RegisFlag = false;
|
|
//逻辑入口
|
|
function Proc(obj) {
|
|
LenheartNewUI_Windows.SyncPos(X, Y);
|
|
|
|
|
|
local RootTab = getroottable();
|
|
if (RootTab.rawin("L_PlayerEach_Obj") && RegisFlag == false) {
|
|
RegisFlag = true;
|
|
RootTab["L_PlayerEach_Obj"].AddEachForCommon("查看收集信息", function(SThis) {
|
|
//关闭按钮
|
|
local ApplyEngagementButton = LenheartNewUI_Each_BaseButton(0, 0, 100, 21, "interface2/popup_menu/popup_back.img", 3);
|
|
ApplyEngagementButton.Icon = "interface2/popup_menu/popup_icon_cn.img";
|
|
ApplyEngagementButton.IconIdx = 58;
|
|
ApplyEngagementButton.Str = "查看收集信息";
|
|
ApplyEngagementButton.OnClick = function(Button) {
|
|
if (L_Sq_GetPlayerEachName().len() <= 0 || L_Sq_GetPlayerEachName() == L_Sq_GetObjectName(sq_GetMyMasterCharacter())) {
|
|
|
|
} else {
|
|
OtherName = L_Sq_GetPlayerEachName();
|
|
Visible = true;
|
|
InitAchievement();
|
|
QueryAchievement();
|
|
}
|
|
Button.Parent.CloseAllEach();
|
|
}.bindenv(this);
|
|
ApplyEngagementButton.SetCallBackFunc(function(Button) {})
|
|
SThis.AddChild(ApplyEngagementButton);
|
|
}.bindenv(this));
|
|
}
|
|
}
|
|
|
|
|
|
//override
|
|
//鼠标滚轮事件回调
|
|
function OnMouseWheel(Flag, MousePos_X, MousePos_Y) {
|
|
|
|
|
|
if (Flag) {
|
|
if (ScrollValue > 0) ScrollValue -= 35;
|
|
}
|
|
if (!Flag) {
|
|
if (ScrollValue< ScrollValueMax) ScrollValue += 35;
|
|
}
|
|
|
|
//调用原生方法
|
|
LenheartNewUI_Windows.OnMouseWheel(Flag, MousePos_X, MousePos_Y);
|
|
}
|
|
|
|
//override
|
|
//鼠标左键按下回调
|
|
function OnMouseLbDown(MousePos_X, MousePos_Y) {
|
|
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X + EtcInfo.closebutton_pos[0], Y + EtcInfo.closebutton_pos[1], EtcInfo.closebutton_pos[2], EtcInfo.closebutton_pos[3])) {
|
|
CloseWindow();
|
|
}
|
|
|
|
LenheartNewUI_Windows.OnMouseLbDown(MousePos_X, MousePos_Y);
|
|
}
|
|
|
|
function OpenCallBack() {
|
|
Visible = true;
|
|
IsOther = false;
|
|
OtherName = null;
|
|
InitAchievement();
|
|
QueryAchievement();
|
|
}
|
|
}
|
|
|
|
L_Windows_List <- [];
|
|
getroottable().rawdelete("LenheartPluginsInitFlag");
|
|
getroottable().rawdelete("EventList_Obj")
|
|
getroottable().rawdelete("Achievement_Obj");
|
|
|
|
function Lenheart_Achievement_Fun(obj) {
|
|
local RootTab = getroottable();
|
|
if (!RootTab.rawin("Achievement_Obj")) {
|
|
RootTab.rawset("Achievement_Obj", true);
|
|
|
|
local Info = 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 == "[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);
|
|
}
|
|
}
|
|
|
|
getroottable()["LenheartFuncTab"].rawset("AchievementFuncN", Lenheart_Achievement_Fun); |