320 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			320 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | /* | ||
|  | 文件名:MarrySystem_ActionAni.nut | ||
|  | 路径:Project/MarrySystem/MarrySystem_ActionAni.nut | ||
|  | 创建日期:2024-10-07	19:12 | ||
|  | 文件用途: | ||
|  | */ | ||
|  | class MarrySystem_ActionAniC extends Rindro_BaseToolClass { | ||
|  |     //调试模式 | ||
|  |     // DeBugMode = true; | ||
|  | 
 | ||
|  |     //不是窗口 | ||
|  |     // NoWindow = true; | ||
|  | 
 | ||
|  |     //是否可见 | ||
|  |     // Visible = false; | ||
|  | 
 | ||
|  |     Flag = false; | ||
|  | 
 | ||
|  |     //演出时间 | ||
|  |     ActTimer = null; | ||
|  | 
 | ||
|  |     //幕布 | ||
|  |     Canvas = false; | ||
|  | 
 | ||
|  | 
 | ||
|  |     //新郎 | ||
|  |     Groom = null; | ||
|  |     //新娘 | ||
|  |     Bride = null; | ||
|  |     //观众 | ||
|  |     Visitors = null; | ||
|  | 
 | ||
|  |     FireworkPath = ["common/firework/chn_heart_firework_blue_dodge.ani", | ||
|  |         "common/firework/chn_heart_firework_blue_normal.ani", | ||
|  |         "common/firework/chn_heart_firework_pink_dodge_01.ani", | ||
|  |         "common/firework/chn_heart_firework_pink_dodge.ani", | ||
|  |         "common/firework/chn_heart_firework_pink_normal_01.ani", | ||
|  |         "common/firework/chn_heart_firework_pink_normal.ani", | ||
|  |         "common/firework/chn_heart_firework_purple_dodge.ani", | ||
|  |         "common/firework/chn_heart_firework_purple_normal.ani", | ||
|  |         "common/firework/chn_heart_firework_red_dodge.ani", | ||
|  |         "common/firework/chn_heart_firework_red_normal.ani", | ||
|  |         "common/firework/chn_heart_firework_sky_dodge_01.ani", | ||
|  |         "common/firework/chn_heart_firework_sky_dodge.ani", | ||
|  |         "common/firework/chn_heart_firework_sky_normal_01.ani", | ||
|  |         "common/firework/chn_heart_firework_sky_normal.ani", | ||
|  |         "common/firework/chn_heart_firework_yellow_dodge_01.ani", | ||
|  |         "common/firework/chn_heart_firework_yellow_dodge.ani", | ||
|  |         "common/firework/chn_heart_firework_yellow_normal_01.ani", | ||
|  |         "common/firework/chn_heart_firework_yellow_normal.ani", | ||
|  |         "common/firework/chn_heehee_firework_dodge.ani", | ||
|  |         "common/firework/chn_heehee_firework_normal.ani" | ||
|  |     ]; | ||
|  | 
 | ||
|  |     FireworkAni = null; | ||
|  | 
 | ||
|  | 
 | ||
|  |     constructor() { | ||
|  |         Visitors = []; | ||
|  |         FireworkAni = []; | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  |     function Init(Info) { | ||
|  |         Groom = null; | ||
|  |         //新娘 | ||
|  |         Bride = null; | ||
|  |         //观众 | ||
|  |         Visitors = []; | ||
|  |         ActTimer = Clock(); | ||
|  |         Canvas = false; | ||
|  | 
 | ||
|  | 
 | ||
|  |         for (local i = 0; i< Info.len(); i++) { | ||
|  |             local Object = {}; | ||
|  |             local InfoConfig = Info[i]; | ||
|  |             Object.Charc <- Rindro_Draw_Character(InfoConfig.job, InfoConfig.avatar, "rest.ani", null); | ||
|  |             Object.Name <- InfoConfig.name; | ||
|  |             if (i == 0) Groom = Object; | ||
|  |             else if (i == 1) Bride = Object; | ||
|  |             else { | ||
|  |                 Visitors.append(Object); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         InitFirework(); | ||
|  | 
 | ||
|  |         Flag = true; | ||
|  |     } | ||
|  | 
 | ||
|  |     function InitFirework() { | ||
|  |         FireworkAni = []; | ||
|  |         for (local i = 0; i< 12; i++) { | ||
|  |             FireworkAni.append({ | ||
|  |                 ani = Rindro_Animation(FireworkPath[sq_getRandom(0, FireworkPath.len() - 1)]), | ||
|  |                 pos = { | ||
|  |                     x = sq_getRandom(0, 1066), | ||
|  |                     y = sq_getRandom(0, 800) | ||
|  |                 } | ||
|  |             }); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     function ShowMessageBox(X, Y, STR) { | ||
|  |         local StrDrawLen = LenheartTextClass.GetStringLength(STR); | ||
|  |         local WLen = ((StrDrawLen - 30) / 12) + 1; | ||
|  |         local HLen = (StrDrawLen / 110); | ||
|  | 
 | ||
|  |         WLen = WLen > 7 ? 7 : WLen; | ||
|  |         //Item信息框一般为211的宽度 | ||
|  |         L_sq_DrawImg("interface/messageballoon.img", 49, X + (30 + (WLen * 12)) * 0.7, Y + 16 + ((HLen + 1) * 13)); | ||
|  |         L_sq_DrawWindow(X, Y, 30 + (WLen * 12), 21 + (HLen * 13), "interface/messageballoon.img", 40, 9, 12, 9, 13); | ||
|  |         //绘制字符串 | ||
|  |         local Buf = L_sq_GetStringDrawArray(STR, 123); | ||
|  | 
 | ||
|  |         foreach(Line, Str in Buf) { | ||
|  |             L_sq_DrawCode(Str, X + 8, Y + 8 + (Line * 14), sq_RGBA(255, 255, 255, 255), 0, 1); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function ShowMessageAct(CT, TimeFlag, X, Y, Str) { | ||
|  |         if (CT >= TimeFlag && CT <= TimeFlag + 3000) { | ||
|  |             ShowMessageBox(X, Y, Str); | ||
|  |         } | ||
|  |         return TimeFlag + 3000; | ||
|  |     } | ||
|  | 
 | ||
|  |     function Show(obj) { | ||
|  |         if (!Flag) return; | ||
|  |         local CT = Clock() - ActTimer; | ||
|  | 
 | ||
|  |         DrawAuditoriumMap(obj); | ||
|  | 
 | ||
|  |         //画新郎 | ||
|  |         if (Groom) { | ||
|  |             Groom.Charc.Draw(680, 360); | ||
|  |         } | ||
|  |         //画新娘 | ||
|  |         if (Bride) { | ||
|  |             Bride.Charc.Draw(686, 400); | ||
|  |         } | ||
|  | 
 | ||
|  |         //画宾客 | ||
|  |         foreach(Pos, Object in Visitors) { | ||
|  |             Object.Charc.Draw(100 + ((Pos / 2) * 80), 350 + ((Pos % 2) * 60)); | ||
|  |         } | ||
|  | 
 | ||
|  |         local TimeFlag = 5000; | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 175, format("[%s]和[%s]的婚礼现在开始!", Groom.Name, Bride.Name)); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 135, "婚姻是神圣的仪式,也是爱情和相互信任的升华,他需要的不仅是爱,更是双方一生一世的信赖。"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 155, "在这里,我们两位新人将在来宾的见证下完成这最重要的承诺。"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 155, "新郎,你愿意接受这个女人成为你的合法妻子并永远爱她吗?"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 630, 195, "是的,我愿意!"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 155, "新娘,你愿意接受这个男人成为你的合法丈夫并永远爱他吗?"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 671, 215, "..."); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 611, 215, "(害羞)我......我愿意!"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 155, "好,我以神的名义宣布新郎新娘正式结为夫妻。"); | ||
|  |         TimeFlag = ShowMessageAct(CT, TimeFlag, 810, 155, "请所有的来宾一起祝福这对新人~"); | ||
|  | 
 | ||
|  |         if (CT >= TimeFlag && CT <= (TimeFlag + 5000)) { | ||
|  |             { | ||
|  |                 L_sq_DrawImg("interface2/wedding/screenshot_bg.img", 0, 0, 0, 1, sq_RGBA(255, 255, 255, 250), getroottable().Rindro_Scr_Width / 800.0, 1.0); | ||
|  |                 for (local i = 0; i< 12; i++) { | ||
|  |                     local Info = FireworkAni[i]; | ||
|  |                     Info.ani.Draw(Info.pos.x, Info.pos.y); | ||
|  |                     if (i == 11 && Info.ani.IsUsability == false) { | ||
|  |                         InitFirework(); | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         if (CT >= (TimeFlag + 5000)) { | ||
|  |             Groom = null; | ||
|  |             //新娘 | ||
|  |             Bride = null; | ||
|  |             //观众 | ||
|  |             Visitors = []; | ||
|  |             ActTimer = Clock(); | ||
|  |             Canvas = false; | ||
|  |             Flag = false; | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         // ShowMessageBox(810, 135, "婚姻是神圣的仪式,也是爱情和相互信任的升华,他需要的不仅是爱,更是双方一生一世的信赖。"); | ||
|  |         // ShowMessageBox(810, 155, "在这里,我们两位新人将在来宾的见证下完成这最重要的承诺。"); | ||
|  |         // ShowMessageBox(810, 155, "新郎,你愿意接受这个女人成为你的合法妻子并永远爱她吗?"); | ||
|  |         // ShowMessageBox(680, 155, "是的,我愿意!"); | ||
|  |         // ShowMessageBox(810, 155, "新娘,你愿意接受这个男人成为你的合法丈夫并永远爱他吗?"); | ||
|  |         // ShowMessageBox(686, 195, "..."); | ||
|  |         // ShowMessageBox(686, 195, "(害羞)我......我愿意!"); | ||
|  |         // ShowMessageBox(810, 155, "好,我以神的名义宣布新郎新娘正式结为夫妻。"); | ||
|  |         // ShowMessageBox(810, 155, "请所有的来宾一起祝福这对新人~"); | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         // { | ||
|  |         //     L_sq_DrawImg("interface2/wedding/screenshot_bg.img", 0, 0, 0, 1, sq_RGBA(255, 255, 255, 250), getroottable().Rindro_Scr_Width / 800.0, 1.0); | ||
|  |         //     for (local i = 0; i< 12; i++) { | ||
|  |         //         local Info = FireworkAni[i]; | ||
|  |         //         Info.ani.Draw(Info.pos.x, Info.pos.y); | ||
|  |         //         if (i == 11 && Info.ani.IsUsability == false) { | ||
|  |         //             InitFirework(); | ||
|  |         //         } | ||
|  |         //     } | ||
|  |         // } | ||
|  | 
 | ||
|  | 
 | ||
|  |         if (!Canvas) { | ||
|  |             local AlphaValue = sq_GetUniformVelocity(250, 0, CT - 2000, 3000); | ||
|  |             //先画一个黑色背景 | ||
|  |             L_sq_DrawImg("marrysystem.img", 1, 0, 0, 1, sq_RGBA(255, 255, 255, AlphaValue), 1.0, 1.0); | ||
|  | 
 | ||
|  |             if (CT >= 5000) { | ||
|  |                 Canvas = true; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     ScriptMapPath = "map/cataclysm/town/church/"; | ||
|  |     MapXpos = 0; | ||
|  |     MapYpos = 47; | ||
|  | 
 | ||
|  |     function DrawAuditoriumMap(obj) { | ||
|  |         //先画一个黑色背景 | ||
|  |         L_sq_DrawImg("marrysystem.img", 1, 0, 0); | ||
|  | 
 | ||
|  |         //画地板 | ||
|  |         L_sq_DrawImg("Map/Church/ChurchTile.img", 1, 0 + MapXpos, -73); | ||
|  |         L_sq_DrawImg("Map/Church/ChurchTile.img", 0, (224 * 1) + MapXpos, -80); | ||
|  |         L_sq_DrawImg("Map/Church/ChurchTile.img", 1, (224 * 2) + MapXpos, -80); | ||
|  |         L_sq_DrawImg("Map/Church/ChurchTile.img", 1, (224 * 3) + MapXpos, -80); | ||
|  |         L_sq_DrawImg("Map/Church/ChurchTile.img", 0, (224 * 4) + MapXpos, -80); | ||
|  | 
 | ||
|  |         for (local i = 0; i< 2; i++) { | ||
|  |             L_sq_DrawImg("Map/Church/ChurchTileEx.img", 0, (224 * 0) + MapXpos, 467 + (i * 120)); | ||
|  |             L_sq_DrawImg("Map/Church/ChurchTileEx.img", 0, (224 * 1) + MapXpos, 467 + (i * 120)); | ||
|  |             L_sq_DrawImg("Map/Church/ChurchTileEx.img", 0, (224 * 2) + MapXpos, 467 + (i * 120)); | ||
|  |             L_sq_DrawImg("Map/Church/ChurchTileEx.img", 0, (224 * 3) + MapXpos, 467 + (i * 120)); | ||
|  |             L_sq_DrawImg("Map/Church/ChurchTileEx.img", 0, (224 * 4) + MapXpos, 467 + (i * 120)); | ||
|  |         } | ||
|  | 
 | ||
|  |         //画地图 | ||
|  |         //closeback | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 153, 123); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 288, 126); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 420, 126); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 79, 117); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 211, 117); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 346, 118); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 482, 118); | ||
|  |         DrawMapAni(obj, "Animation/chn_organ.ani", 790, 145); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 582, 628); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 176, 628); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 312, 628); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 447, 628); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 721, 628); | ||
|  |         DrawMapAni(obj, "Animation/chn_ribbon_silk.ani", 863, 628); | ||
|  | 
 | ||
|  |         //normal | ||
|  |         DrawMapAni(obj, "Animation/chn_light_normal.ani", 833, 27); | ||
|  |         DrawMapAni(obj, "Animation/chn_light_dodge.ani", 833, 27); | ||
|  |         DrawMapAni(obj, "Animation/chn_light_normal.ani", 153, 29); | ||
|  |         DrawMapAni(obj, "Animation/chn_light_dodge.ani", 153, 29); | ||
|  | 
 | ||
|  |         DrawMapAni(obj, "Animation/chn_big_Carpet.ani", 617, 332); | ||
|  |         DrawMapAni(obj, "Animation/chn_big_Carpet.ani", 393, 332); | ||
|  |         DrawMapAni(obj, "Animation/chn_big_Carpet.ani", 169, 332); | ||
|  |         DrawMapAni(obj, "Animation/chn_big_Carpet.ani", -55, 332); | ||
|  |         DrawMapAni(obj, "Animation/chn_big_Carpet.ani", 1065, 332); | ||
|  |         DrawMapAni(obj, "Animation/chn_big_Carpet.ani", 841, 332); | ||
|  | 
 | ||
|  |         DrawNpc(obj, "npc/animation/chn_npc_father.ani", 888, 375, "MarryMapNpc" + 2); | ||
|  | 
 | ||
|  |         DrawMapAni(obj, "Animation/chn_bridesmaid_normal_in_church.ani", 576, 37); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 131, 232); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 302, 232); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 481, 232); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_bigpot.ani", 838, 269); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_tunnel.ani", 907, 323); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_bigpot.ani", 959, 359); | ||
|  |         DrawMapAni(obj, "Animation/chn_table.ani", 832, 373); | ||
|  |         DrawMapAni(obj, "Animation/chn_tablering_dodge.ani", 832, 373); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 971, 535); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 661, 535); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 114, 535); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 485, 535); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 297, 535); | ||
|  |         DrawMapAni(obj, "Animation/chn_chair.ani", 817, 535); | ||
|  | 
 | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 373, 617); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 507, 617); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 641, 617); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 102, 617); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 234, 617); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 783, 617); | ||
|  |         DrawMapAni(obj, "Animation/chn_flower_stand.ani", 923, 617); | ||
|  | 
 | ||
|  |         //画NPC | ||
|  |         DrawNpc(obj, "npc/Animation/chn_giftbox_in_church.ani", 691, 240, "MarryMapNpc" + 1); | ||
|  |     } | ||
|  | 
 | ||
|  |     function DrawNpc(obj, aniFileName, x, y, aniname) { | ||
|  |         local ani = obj.getVar().GetAnimationMap(aniname, aniFileName); | ||
|  |         ani.setImageRateFromOriginal(-1.0, 1.0); | ||
|  |         sq_AnimationProc(ani); | ||
|  |         sq_drawCurrentFrame(ani, x, y, true); | ||
|  |         return ani; | ||
|  |     } | ||
|  | 
 | ||
|  |     function DrawMapAni(obj, Path, X, Y) { | ||
|  |         T_DrawDynamicAni(obj, ScriptMapPath + Path, X + MapXpos, Y + MapYpos, "MarryMapAni" + Path); | ||
|  |     } | ||
|  | } | ||
|  | getroottable().rawdelete("MarrySystem_Obj"); |