139 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			139 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名:OnlineAnnouncement.nut | ||
|  | 路径:Project/OnlineAnnouncement/OnlineAnnouncement.nut | ||
|  | 创建日期:2024-08-24	23:15 | ||
|  | 文件用途:上线公告 | ||
|  | */ | ||
|  | class OnlineAnnouncementC extends LenheartNewUI_Windows { | ||
|  |     //调试模式 | ||
|  |     // DeBugMode = true; | ||
|  | 
 | ||
|  |     //不是窗口 | ||
|  |     NoWindow = true; | ||
|  | 
 | ||
|  |     //是否可见 | ||
|  |     // Visible = false; | ||
|  | 
 | ||
|  |     //公告数组 | ||
|  |     NotiArr = null; | ||
|  |     //包时间 | ||
|  |     Timer = null; | ||
|  | 
 | ||
|  |     //收到信息包 | ||
|  |     function LaunchAnnouncementCallBack(Chunk) { | ||
|  |         local Jso = Json.Decode(Chunk).announ; | ||
|  |         local T = { | ||
|  |             NotiStrR = Jso["NotiStrR"], | ||
|  |             NotiStrG = Jso["NotiStrG"], | ||
|  |             NotiStrB = Jso["NotiStrB"], | ||
|  |             NotiStrA = Jso["NotiStrA"], | ||
|  |             NotiStrXpos = Jso["NotiStrXpos"], | ||
|  |             NotiStrYpos = Jso["NotiStrYpos"], | ||
|  |             //对应的话语 | ||
|  |             NotiStr = Jso["NotiStr"], | ||
|  |             //对应话语渐入时间 | ||
|  |             NotiStrUpTime = Jso["NotiStrUpTime"], | ||
|  |             //对应话语显示时间 | ||
|  |             NotiStrPrintTime = Jso["NotiStrPrintTime"], | ||
|  |             //对应话语渐出时间 | ||
|  |             NotiStrDownTime = Jso["NotiStrDownTime"], | ||
|  |             //对应出现的Img路径 | ||
|  |             ImgPath = Jso["ImgPath"], | ||
|  |             //对应出现的Img帧数 | ||
|  |             ImgFrame = Jso["ImgFrame"], | ||
|  |             ImgXpos = Jso["ImgXpos"], | ||
|  |             ImgYpos = Jso["ImgYpos"], | ||
|  |             //对应出现的Img渐入时间 | ||
|  |             ImgUpTime = Jso["ImgUpTime"], | ||
|  |             //对应出现的Img渐出时间 | ||
|  |             ImgDownTime = Jso["ImgDownTime"], | ||
|  |         } | ||
|  |         NotiArr.append(T); | ||
|  |     } | ||
|  | 
 | ||
|  |     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) { | ||
|  |         Childrens = []; | ||
|  |         NotiArr = []; | ||
|  |         //注册控件 | ||
|  |         RegisterWidget(); | ||
|  | 
 | ||
|  |         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH); | ||
|  | 
 | ||
|  |         //回包 | ||
|  |         Pack_Control.rawset(20075002, LaunchAnnouncementCallBack.bindenv(this)); | ||
|  |     } | ||
|  | 
 | ||
|  |     function RegisterWidget() { | ||
|  |         // //关闭按钮 | ||
|  |         // local CloseButton = LenheartNewUI_BaseButton(278, 0, 11, 12, "interface/lenheartwindowcommon.img", 276); | ||
|  |         // CloseButton.OnClick = function() { | ||
|  |         //     this.Visible = false; | ||
|  |         // }.bindenv(this); | ||
|  |         // Childrens.append(CloseButton); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制主界面 | ||
|  |     function DrawMain(obj) { | ||
|  |         if (NotiArr.len() > 0) { | ||
|  |             if (Timer == null) Timer = Clock(); | ||
|  |             local T = NotiArr[0]; | ||
|  |             local RealT = Clock() - Timer; | ||
|  | 
 | ||
|  |             local Ani = null; | ||
|  |             if (T.ImgFrame == 99999999) { | ||
|  |                 Ani = T_DrawDynamicAni(obj, T.ImgPath, T.ImgXpos, T.ImgYpos, T.ImgPath); | ||
|  |             } | ||
|  | 
 | ||
|  |             //播放完成 | ||
|  |             if (RealT >= (T.NotiStrPrintTime + T.NotiStrUpTime + T.NotiStrDownTime)) { | ||
|  |                 NotiArr.remove(0); | ||
|  |                 Timer = null; | ||
|  |                 if (Ani) sq_Rewind(Ani); | ||
|  |                 return; | ||
|  |             } | ||
|  | 
 | ||
|  |             local AlaphValue; | ||
|  |             //如果时间小于 文字渐入时间 | ||
|  |             if (RealT <= T.NotiStrUpTime) { | ||
|  |                 AlaphValue = sq_GetUniformVelocity(0, T.NotiStrA, RealT, T.NotiStrUpTime); | ||
|  |             } | ||
|  |             if (RealT > T.NotiStrUpTime && RealT <= (T.NotiStrPrintTime + T.NotiStrUpTime)) { | ||
|  |                 AlaphValue = T.NotiStrA; | ||
|  |             } | ||
|  |             if (RealT > (T.NotiStrPrintTime + T.NotiStrUpTime) && RealT <= (T.NotiStrPrintTime + T.NotiStrUpTime + T.NotiStrDownTime)) { | ||
|  |                 AlaphValue = sq_GetUniformVelocity(T.NotiStrA, 0, RealT, (T.NotiStrPrintTime + T.NotiStrUpTime + T.NotiStrDownTime)); | ||
|  |             } | ||
|  | 
 | ||
|  |             local RgbaValue = sq_RGBA(T.NotiStrR, T.NotiStrG, T.NotiStrB, AlaphValue); | ||
|  |             L_sq_DrawCode(T.NotiStr, T.NotiStrXpos, T.NotiStrYpos, RgbaValue, 1, 1); | ||
|  | 
 | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function Show(obj) { | ||
|  |         LenheartNewUI_Windows.Show(obj); | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     function TopShow(obj) { | ||
|  |         DrawMain(obj); | ||
|  |     } | ||
|  | 
 | ||
|  |     //逻辑入口 | ||
|  |     function Proc(obj) { | ||
|  |         LenheartNewUI_Windows.SyncPos(X, Y); | ||
|  |     } | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function Lenheart_OnlineAnnouncement_Fun(obj) { | ||
|  |     local RootTab = getroottable(); | ||
|  |     if (!RootTab.rawin("OnlineAnnouncement_Obj")) { | ||
|  |         RootTab.rawset("OnlineAnnouncement_Obj", true); | ||
|  |         LenheartNewUI_CreateWindow(OnlineAnnouncementC, "上线公告窗口", 0, 0, 0, 0, 0); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | getroottable()["LenheartFuncTab"].rawset("OnlineAnnouncementFuncN", Lenheart_OnlineAnnouncement_Fun); |