Rindro-Sqr/Project/RepairWorldMap/RepairWorldMap.nut

163 lines
5.0 KiB
Plaintext

/*
文件名:RepairWorldMap.nut
路径:Project/RepairWorldMap/RepairWorldMap.nut
创建日期:2024-08-10 08:04
文件用途:修补世界地图
*/
YosinWorldMapX <- 0;
YosinWorldMapY <- 0;
class RepairWorldMapC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//开启状态
OpenState = false;
//不是窗口
NoWindow = true;
//是否可见
Visible = false;
//世界地图信息
Info = null;
//当前区域编号
AreaId = 0;
//下拉框打开Flag
TabbarFlag = false;
//选中Flag
MarkFlag = -1;
function GetWorldMap_CallBack(Chunk) {
local Jso = Json.Decode(Chunk);
Info = Jso;
}
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
Info = {};
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
Pack_Control.rawset(20240802, GetWorldMap_CallBack.bindenv(this));
L_sq_WAB(0x1031B33, 0x90);
L_sq_WAB(0x1031B34, 0x90);
L_sq_WAB(0x1031B35, 0x90);
L_sq_WAB(0x1031B36, 0x90);
L_sq_WAB(0x1031B37, 0x90);
L_sq_WAB(0x1031B38, 0x90);
Info = Rindro_Script.GetFileData("region/region.lst", function(DataTable, Data) {
while (!Data.Eof()) {
local Key = Data.Get();
local Path = "region/" + Data.Get();
local RgnInfo = Rindro_Script.GetFileData(Path, function(DataTableA, Data) {
while (!Data.Eof()) {
local Str = Data.Get();
if (Str == "[name]") {
DataTableA.Name <- Sq_ConvertWideChar(Data.Get(), "big5");
}
}
});
DataTable.rawset(Key.tointeger() - 1, {
Name = RgnInfo.Name
});
}
}.bindenv(this));
Info.rawdelete("filepath");
}
function RegisterWidget() {
//三角按钮
local Button = LenheartNewUI_BaseButton(7, 8, 21, 21, "interface/windowcommon.img", 59);
Button.OnClick = function() {
TabbarFlag = !TabbarFlag;
}.bindenv(this);
Childrens.append(Button);
}
//绘制主界面
function DrawMain(obj) {
// if (!getroottable().rawin("RINDRO_CONFIG")) {
// return;
// }
//黑框
L_sq_DrawImg("interface/minimap_minimap_town.img", 8, 131 + YosinWorldMapX, 7 + YosinWorldMapY);
//绘制区域名称
L_sq_DrawCode(Info[AreaId].Name, 135 + YosinWorldMapX, 10 + YosinWorldMapY, 0xFFFFFFFF, 1, 1);
if (TabbarFlag) {
foreach(Pos, Value in Info) {
L_sq_DrawImg("interface/minimap_minimap_town.img", 9, 131 + YosinWorldMapX, 25 + (Pos * 18) + YosinWorldMapY);
// L_sq_DrawWindow(128, 24 + (Pos * 18), 108, 10, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
L_sq_DrawCode(Value.Name, 135 + YosinWorldMapX, 28 + (Pos * 18) + YosinWorldMapY, 0xFFFFFFFF, 1, 1);
if (sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 1, 1, 131 + YosinWorldMapX, 25 + (Pos * 18) + YosinWorldMapY, 108, 18)) {
MarkFlag = Pos;
L_sq_SetDrawImgModel(2, 0);
L_sq_DrawImg("interface/minimap_minimap_town.img", 16, 131 + YosinWorldMapX, 25 + (Pos * 18) + YosinWorldMapY);
L_sq_ReleaseDrawImgModel();
}
}
}
}
//鼠标左键弹起回调 overr
function OnMouseLbUp(MousePos_X, MousePos_Y) {
//还原编队的鼠标指针
if (this.MarkFlag != -1) {
AreaId = MarkFlag;
L_sq_Select_MiniMap_Index(AreaId + 1);
this.MarkFlag = -1;
}
if (TabbarFlag) TabbarFlag = false;
LenheartNewUI_Windows.OnMouseLbUp(MousePos_X, MousePos_Y);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
if (!OpenState) {
CloseWindow();
}
OpenState = false;
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y);
if (OpenState) {
Visible = true;
ResetFocus();
}
}
}
//回调函数
function Sq_DrawMiniMapUI(obj) {
if ("RepairWorldMap_Obj" in getroottable()) {
RepairWorldMap_Obj.OpenState = true;
}
}
L_Windows_List <- [];
getroottable().rawdelete("LenheartPluginsInitFlag");
getroottable().rawdelete("EventList_Obj")
getroottable().rawdelete("RepairWorldMap_Obj");
function Lenheart_RepairWorldMap_Fun(obj) {
local RootTab = getroottable();
if (!RootTab.rawin("RepairWorldMap_Obj")) {
RootTab.rawset("RepairWorldMap_Obj", LenheartNewUI_CreateWindow(RepairWorldMapC, "世界地图修补", 230 + YosinWorldMapX, 0 + YosinWorldMapY, 30, 30, 0));
}
}
getroottable()["LenheartFuncTab"].rawset("RepairWorldMapFuncN", Lenheart_RepairWorldMap_Fun);