111
This commit is contained in:
226
Plugins/DungeonRank/DungeonRank.nut
Normal file
226
Plugins/DungeonRank/DungeonRank.nut
Normal file
@@ -0,0 +1,226 @@
|
||||
/*
|
||||
文件名:DungeonRank.nut
|
||||
路径:Plugins/DungeonRank/DungeonRank.nut
|
||||
创建日期:2023-09-18 12:08
|
||||
文件用途:副本排行
|
||||
*/
|
||||
class DungeonRankWindow extends BasicsDrawTool {
|
||||
//宽度
|
||||
Width = null;
|
||||
//高度
|
||||
Height = null;
|
||||
//标题高度
|
||||
TitleH = null;
|
||||
|
||||
//X坐标
|
||||
X = null;
|
||||
B_X = null;
|
||||
//Y坐标
|
||||
Y = null;
|
||||
B_Y = null;
|
||||
|
||||
YMouseSw = true;
|
||||
DeBugMode = false;
|
||||
|
||||
Mobj = null;
|
||||
M_Xpos = null;
|
||||
M_Ypos = null;
|
||||
|
||||
|
||||
constructor(gX, gY, gWidth, gHeight, gTitleH) {
|
||||
//宽度
|
||||
Width = gWidth;
|
||||
//高度
|
||||
Height = gHeight;
|
||||
//标题高度
|
||||
TitleH = gTitleH;
|
||||
|
||||
//X坐标
|
||||
X = gX;
|
||||
//Y坐标
|
||||
Y = gY;
|
||||
|
||||
if (getroottable().rawin("MouseObject")) Mobj = getroottable()["MouseObject"];
|
||||
}
|
||||
|
||||
//设定鼠标逻辑
|
||||
function LockMouse() {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, Height)) {
|
||||
IMouse.LockMouseClick();
|
||||
YMouseSw = false;
|
||||
} else {
|
||||
if (YMouseSw == false && sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 0, 0, 800, 600)) {
|
||||
IMouse.ReleaseMouseClick();
|
||||
YMouseSw = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//设定窗口拖动逻辑
|
||||
function MoveWindow() {
|
||||
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, X, Y, Width, TitleH)) {
|
||||
|
||||
if (Mobj.Lb == 1) {
|
||||
if (!M_Xpos) M_Xpos = IMouse.GetXPos(); //原始鼠标位置数据
|
||||
if (!M_Ypos) M_Ypos = IMouse.GetYPos();
|
||||
if (!B_X) B_X = X; //原始窗口位置
|
||||
if (!B_Y) B_Y = Y;
|
||||
|
||||
X = B_X - (M_Xpos - IMouse.GetXPos());
|
||||
Y = B_Y - (M_Ypos - IMouse.GetYPos());
|
||||
|
||||
} else if (Mobj.Lb == 0) {
|
||||
M_Xpos = null;
|
||||
M_Ypos = null;
|
||||
B_X = null;
|
||||
B_Y = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Show(obj) {
|
||||
if (DeBugMode) sq_DrawBox(X, Y, Width, Height, 0xffffffff);
|
||||
|
||||
//设定鼠标逻辑
|
||||
LockMouse();
|
||||
|
||||
//设定窗口拖动逻辑
|
||||
MoveWindow();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class DungeonRankC extends BasicsDrawTool {
|
||||
WindowObj = null; //窗口对象
|
||||
MainState = false; //主状态
|
||||
X = 129;
|
||||
Y = 20;
|
||||
|
||||
Info = null;
|
||||
|
||||
|
||||
function GetDungeonRankInfo() {
|
||||
local T = {
|
||||
op = 20054003,
|
||||
};
|
||||
SendPack(T);
|
||||
}
|
||||
|
||||
function GetDungeonRankInfoCallBack(Chunk) {
|
||||
local Buffer = Json_STL("GetDungeonRankInfoCallBackBuffer");
|
||||
Buffer.Parse(Chunk, 0, false);
|
||||
Info = [];
|
||||
|
||||
for (local i = 0; i< 10; i++) {
|
||||
local gjob = Buffer.Get("DungeonS->" + i + "->job");
|
||||
if (gjob) {
|
||||
local gdungeonTime = Buffer.Get("DungeonS->" + i + "->dungeonTime");
|
||||
local gname = Buffer.Get("DungeonS->" + i + "->name");
|
||||
local T = {
|
||||
Job = gjob,
|
||||
DungronTime = gdungeonTime,
|
||||
Name = gname,
|
||||
};
|
||||
Info.append(T);
|
||||
}
|
||||
}
|
||||
/*
|
||||
local RootTab = getroottable();
|
||||
if (RootTab.rawin("CollectBooksCObj")) {
|
||||
local Tobj = RootTab["CollectBooksCObj"];
|
||||
Tobj.CollectAttributeObject = [];
|
||||
for (local i = 0; i < 22; i++) {
|
||||
Tobj.CollectAttributeObject.append(Buffer.Get("buffs->" + i));
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
constructor() {
|
||||
|
||||
//注册获取收集信息回调
|
||||
Pack_Control.rawset(20054004, GetDungeonRankInfoCallBack.bindenv(this));
|
||||
}
|
||||
|
||||
//绘制主界面
|
||||
function DrawMain(obj) {
|
||||
//绘制主界面
|
||||
L_sq_DrawImg("dungeon/rankmain.img", 0, X, Y);
|
||||
|
||||
L_sq_DrawCode("排名", X + 24, Y + 297, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
L_sq_DrawCode("玩家角色名", X + 24 + 98, Y + 297, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
L_sq_DrawCode("玩家职业", X + 24 + 98 + 152, Y + 297, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
L_sq_DrawCode("通关时间", X + 24 + 98 + 152 + 155, Y + 297, sq_RGBA(230, 200, 155, 250), 1, 1);
|
||||
|
||||
if (Info) {
|
||||
foreach(Pos, Value in Info) {
|
||||
L_sq_DrawCode("" + Pos, X + 32, Y + 316 + (Pos * 17), sq_RGBA(255, 247, 107, 250), 1, 1);
|
||||
L_sq_DrawCode("" + Value.Name, X + 32 + 98, Y + 316 + (Pos * 17), sq_RGBA(255, 247, 107, 250), 1, 1);
|
||||
L_sq_DrawCode("" + Value.Job, X + 32 + 98 + 152, Y + 316 + (Pos * 17), sq_RGBA(255, 247, 107, 250), 1, 1);
|
||||
L_sq_DrawCode("" + Value.DungronTime, X + 32 + 98 + 152 + 120, Y + 316 + (Pos * 17), sq_RGBA(255, 247, 107, 250), 1, 1);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//开启界面回调
|
||||
function OpenClassCallBack() {
|
||||
|
||||
L_NewWindows("Lenheart", 170, 0x65535);
|
||||
local W = sq_GetPopupWindowMainCotrol(170);
|
||||
W.SetVisible(false);
|
||||
W.SetEnable(false);
|
||||
|
||||
GetDungeonRankInfo();
|
||||
}
|
||||
|
||||
//绘制入口
|
||||
function Draw(obj) {
|
||||
if (MainState) {
|
||||
if (WindowObj) {
|
||||
DrawMain(obj);
|
||||
WindowObj.Show(obj);
|
||||
X = WindowObj.X;
|
||||
Y = WindowObj.Y;
|
||||
} else {
|
||||
WindowObj = DungeonRankWindow(X, Y, 542, 512, 28); //坐标 大小 标题栏高度
|
||||
// WindowObj.DeBugMode = true;
|
||||
}
|
||||
} else {
|
||||
if (WindowObj && WindowObj.YMouseSw == false) {
|
||||
IMouse.ReleaseMouseClick();
|
||||
WindowObj.YMouseSw = true;
|
||||
WindowObj = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//逻辑入口
|
||||
function Proc(obj) {
|
||||
if (KeyPressNB.isKeyPress(48, "DungeonRankCloseKey")) {
|
||||
MainState = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function DungeonRank(obj) {
|
||||
local RootTab = getroottable();
|
||||
if (!RootTab.rawin("DungeonRankCObj")) {
|
||||
local Cobj = DungeonRankC();
|
||||
RootTab.rawset("DungeonRankCObj", Cobj);
|
||||
EventIcon("副本排行", 55, 55, Cobj);
|
||||
} else {
|
||||
RootTab["DungeonRankCObj"].Proc(obj);
|
||||
RootTab["DungeonRankCObj"].Draw(obj);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (getroottable().rawin("LenheartFuncTab")) {
|
||||
getroottable()["LenheartFuncTab"].rawset("DungeonRankFunc", DungeonRank);
|
||||
} else {
|
||||
local T = {};
|
||||
T.rawset("DungeonRankFunc", DungeonRank);
|
||||
getroottable().rawset("LenheartFuncTab", T);
|
||||
}
|
||||
Reference in New Issue
Block a user