140 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:HellExLogic.nut
 | |
| 路径:Project/HellExLogic/HellExLogic.nut
 | |
| 创建日期:2024-08-09	11:11
 | |
| 文件用途:
 | |
| */
 | |
| class HellExLogicC extends LenheartNewUI_Windows {
 | |
|     //调试模式
 | |
|     // DeBugMode = true;
 | |
| 
 | |
|     //不是窗口
 | |
|     NoWindow = true;
 | |
| 
 | |
|     //是否可见
 | |
|     Visible = true;
 | |
| 
 | |
|     //被击数
 | |
|     HitCount = 0;
 | |
| 
 | |
|     //总被击次数
 | |
|     MaxHitCount = 50;
 | |
| 
 | |
|     //深渊派对难度
 | |
|     Difficulty = 1;
 | |
| 
 | |
|     //难度文字数组
 | |
|     DifficultyStr = ["未开启深渊", "非常困难", "困难"];
 | |
| 
 | |
|     //深渊状态  0进行 1成功 2失败
 | |
|     HellState = 0;
 | |
| 
 | |
| 
 | |
|     function OpenWindowCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         MaxHitCount = Jso.HitCounts;
 | |
|         Difficulty = Jso.Diff;
 | |
|         HitCount = 0;
 | |
|         HellState = 0;
 | |
|         Visible = true;
 | |
|         ResetFocus();
 | |
|     }
 | |
| 
 | |
|     function HitSucCallBack(Chunk) {
 | |
|         local obj = sq_getMyCharacter();
 | |
|         obj = sq_GetCNRDObjectToActiveObject(obj);
 | |
|         sq_SendCreatePassiveObjectPacket(obj, 85905, 100, 0, 0, 0, obj.getDirection());
 | |
|         try {
 | |
|             onHellDungeonHitCountMax(obj, Difficulty);
 | |
|         } catch (exception) {
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function HellFail(Chunk) {
 | |
|         HellState = 2;
 | |
|     }
 | |
| 
 | |
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
 | |
|         Childrens = [];
 | |
|         //注册控件
 | |
|         RegisterWidget();
 | |
| 
 | |
|         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
 | |
| 
 | |
|         //开启界面回包
 | |
|         Pack_Control.rawset(20069006, OpenWindowCallBack.bindenv(this));
 | |
|         //击打次数到了
 | |
|         Pack_Control.rawset(20069004, HitSucCallBack.bindenv(this));
 | |
|         //深渊派对失败
 | |
|         Pack_Control.rawset(20069008, HellFail.bindenv(this));
 | |
| 
 | |
|         getroottable().sq_SendHitConfirmPacket <- HitLogic.bindenv(this);
 | |
|     }
 | |
| 
 | |
|     function RegisterWidget() {
 | |
|         //关闭按钮
 | |
|         local CloseButton = LenheartNewUI_BaseButton(278, 8, 11, 12, "interface/windowcommon.img", 276);
 | |
|         CloseButton.OnClick = function() {
 | |
|             this.Visible = false;
 | |
|         }.bindenv(this);
 | |
|         Childrens.append(CloseButton);
 | |
|     }
 | |
| 
 | |
|     //HitLogic
 | |
|     function HitLogic() {
 | |
|         if (HellState == 2) return;
 | |
|         local T = {
 | |
|             op = 20069003
 | |
|         }
 | |
|         SendPackEx(T);
 | |
|         HitCount++;
 | |
|     }
 | |
| 
 | |
|     //绘制主界面
 | |
|     function DrawMain(obj) {
 | |
|         //Item信息框一般为211的宽度
 | |
|         L_sq_DrawWindow(X, Y, 260, 80, "interface/windowcommon.img", 204, 4, 14, 4, 14);
 | |
| 
 | |
|         L_sq_DrawCode("封印之门的进展情况", X + 82, Y + 12, sq_RGBA(230, 200, 155, 250), 1, 1);
 | |
|         L_sq_DrawCode("- 被击数", X + 6, Y + 40, sq_RGBA(230, 200, 155, 250), 1, 1);
 | |
|         L_sq_DrawCode("- 深渊派对难度:", X + 6, Y + 58, sq_RGBA(230, 200, 155, 250), 1, 1);
 | |
| 
 | |
|         local Color = sq_RGBA(230, 200, 155, 250);
 | |
|         if (HitCount >= MaxHitCount) Color = sq_RGBA(255, 50, 50, 250);
 | |
|         local HitStr = HitCount + "/" + MaxHitCount;
 | |
|         L_sq_DrawCode(HitStr, X + 254 - LenheartTextClass.GetStringLength(HitStr), Y + 40, Color, 1, 1);
 | |
|         L_sq_DrawCode(DifficultyStr[Difficulty], X + 254 - LenheartTextClass.GetStringLength(DifficultyStr[Difficulty]), Y + 58, sq_RGBA(255, 50, 50, 250), 1, 1);
 | |
| 
 | |
|         if (HellState == 2) {
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function Show(obj) {
 | |
|         DrawMain(obj);
 | |
|         LenheartNewUI_Windows.Show(obj);
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //逻辑入口
 | |
|     function Proc(obj) {
 | |
|         //如果不在副本中
 | |
|         if (sq_GetCurrentModuleType() == 1) {
 | |
|             if (Visible) CloseWindow();
 | |
|         }
 | |
|         LenheartNewUI_Windows.SyncPos(X, Y);
 | |
|     }
 | |
| 
 | |
| }
 | |
| getroottable().rawdelete("HellExLogic_Obj");
 | |
| 
 | |
| function Lenheart_HellExLogic_Fun(obj) {
 | |
|     local RootTab = getroottable();
 | |
|     if (!RootTab.rawin("HellExLogic_Obj")) {
 | |
|         RootTab.rawset("HellExLogic_Obj", true);
 | |
|         LenheartNewUI_CreateWindow(HellExLogicC, "深渊派对特殊逻辑窗口", ((getroottable().Rindro_Scr_Width - 261)).tointeger(), 64, 260, 80, 80);
 | |
|     }
 | |
| }
 | |
| 
 | |
| getroottable()["LenheartFuncTab"].rawset("HellExLogicFuncN", Lenheart_HellExLogic_Fun); |