343 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			343 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | class UnderBaseDraw | ||
|  | { | ||
|  |     //绘制函数 | ||
|  |     function T_DrawDynamicAni(AniFileName, Xpos, Ypos, AniName) | ||
|  |     { | ||
|  |         if(CreatChrTable.rawin(AniName) == false) CreatChrTable.rawset(AniName, sq_CreateAnimation("", AniFileName)); | ||
|  |         else | ||
|  |         { | ||
|  |             sq_AnimationProc(CreatChrTable[AniName]); | ||
|  |             sq_drawCurrentFrame(CreatChrTable[AniName], Xpos, Ypos, true); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function T_DrawStayAni(AniFileName, Xpos, Ypos, Index, AniName) | ||
|  |     { | ||
|  |         if(CreatChrTable.rawin(AniName) == false) CreatChrTable.rawset(AniName, sq_CreateAnimation("", AniFileName)); | ||
|  |         else | ||
|  |         { | ||
|  |             sq_DrawSpecificFrame(CreatChrTable[AniName], Xpos, Ypos, false, Index, false, 1.0); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     function T_DrawStayAniAlpha(AniFileName, Xpos, Ypos, Index, AniName, Alpha) | ||
|  |     { | ||
|  |         if(CreatChrTable.rawin(AniName) == false) CreatChrTable.rawset(AniName, sq_CreateAnimation("", AniFileName)); | ||
|  |         else | ||
|  |         { | ||
|  |             CreatChrTable[AniName].setRGBA(255, 255, 255, Alpha); | ||
|  |             sq_DrawSpecificFrame(CreatChrTable[AniName], Xpos, Ypos, false, Index, false, 1.0); | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | class UnderButton extends UnderBaseDraw | ||
|  | { | ||
|  |     State = 0; //按钮状态 | ||
|  |     ClickEnble = false; //点击效果 | ||
|  |     ButtonDynamic = false; //动态按钮效果 | ||
|  | 
 | ||
|  |     CustomClickEnble = false; //自定义点击效果 | ||
|  |     CustomClickAnifile = null; //自定义点击效果Ani路径 | ||
|  |     CustomButtonName = null; //自定义点击效果名称 | ||
|  |     CustomClickFrame = null; //自定义点击效果Ani编号 | ||
|  |     CustomClickx = null; //自定义点击效果X坐标 | ||
|  |     CustomClicky = null; //自定义点击效果Y坐标 | ||
|  | 
 | ||
|  | 
 | ||
|  |     RectEnble = false; //悬停效果 | ||
|  |     RectButtonName = null; //悬停名称 | ||
|  |     RectBaseAnifile = null; //悬停Ani路径 | ||
|  |     RectFrame = null; //非动态按钮的悬停调用Ani编号 | ||
|  |     Rectx = null; //悬停X坐标 | ||
|  |     Recty = null; //悬停Y坐标 | ||
|  | 
 | ||
|  | 
 | ||
|  |     ButtonName = null; //按钮名称 | ||
|  |     x = null; //X坐标 | ||
|  |     y = null; //Y坐标 | ||
|  |     BaseAnifile = null; //调用Ani路径 | ||
|  |     width = null; //可点击宽度 | ||
|  |     length = null; //可点击高度 | ||
|  |     //构造函数 | ||
|  |     constructor(gButtonName, gX, gY, gAnifile, gWidth, gLength) | ||
|  |     { | ||
|  |         ButtonName = gButtonName; | ||
|  |         x = gX; | ||
|  |         y = gY; | ||
|  |         BaseAnifile = gAnifile; | ||
|  |         width = gWidth; | ||
|  |         length = gLength; | ||
|  |     } | ||
|  |     //绘制按钮 | ||
|  |     function Show() | ||
|  |     { | ||
|  |         if(ClickEnble) //是否开启点击效果 | ||
|  |         { | ||
|  |             if(isLBDown() && State == 0) //按下左键并且按钮处于弹起状态 | ||
|  |             { | ||
|  |                 State = 1; //按键进入按下状态 | ||
|  |                 //++y; | ||
|  |             } | ||
|  |             if(!isLBDown() && State == 1) //按下左键并且按钮处于弹起状态 | ||
|  |             { | ||
|  |                 State = 0; //按键进入弹起状态 | ||
|  |                 //--y; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         if(CustomClickEnble) //是否开启自定义点击效果 | ||
|  |         { | ||
|  |             if(isLBDown()) //按下左键并且按钮处于弹起状态 | ||
|  |             { | ||
|  |                 if(!ButtonDynamic) T_DrawStayAni(CustomClickAnifile, CustomClickx, CustomClicky, CustomClickFrame, CustomButtonName); | ||
|  |                 else T_DrawDynamicAni(CustomClickAnifile, CustomClickx, CustomClicky, CustomButtonName); | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |         if(RectEnble) //开启悬停效果时 | ||
|  |         { | ||
|  |             if((isInRect() && !isLBDown()) || (isInRect() && !CustomClickEnble)) //如果鼠标悬停的时候  并且没有点击的时候 | ||
|  |             { | ||
|  |                 //IMouse.SetMouseTask(44); | ||
|  |                 if(!ButtonDynamic) T_DrawStayAni(RectBaseAnifile, Rectx, Recty, RectFrame, RectButtonName); | ||
|  |                 else T_DrawDynamicAni(RectBaseAnifile, Rectx, Recty, RectButtonName); | ||
|  |             } | ||
|  |         } | ||
|  |         if(!isInRect()) //如果鼠标没有悬停的时候 | ||
|  |         { | ||
|  |             //IMouse.SetMouseTask(0); | ||
|  |             if(!ButtonDynamic) T_DrawStayAni(BaseAnifile, x, y, 0, ButtonName); | ||
|  |             else T_DrawDynamicAni(BaseAnifile, x, y, ButtonName); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //设置自定义点击效果 | ||
|  |     function SetCustomClickEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) | ||
|  |     { | ||
|  |         CustomClickEnble = bool; //自定义点击效果 | ||
|  |         CustomClickAnifile = gAnifile; //自定义点击效果Ani路径 | ||
|  |         CustomButtonName = gButtonName; //自定义点击效果名称 | ||
|  |         CustomClickFrame = gFrame; //自定义点击效果Ani编号 | ||
|  |         CustomClickx = gX; //自定义点击效果X坐标 | ||
|  |         CustomClicky = gY; //自定义点击效果Y坐标 | ||
|  |     } | ||
|  | 
 | ||
|  |     //设置悬停效果 | ||
|  |     function SetRectEnble(bool, gButtonName, gX, gY, gAnifile, gFrame) | ||
|  |     { | ||
|  |         RectEnble = bool; //悬停效果 | ||
|  |         RectButtonName = gButtonName; //悬停名称 | ||
|  |         RectBaseAnifile = gAnifile; //悬停Ani路径 | ||
|  |         RectFrame = gFrame; //非动态按钮的悬停调用Ani编号 | ||
|  |         Rectx = gX; //悬停X坐标 | ||
|  |         Recty = gY; //悬停Y坐标 | ||
|  |     } | ||
|  | 
 | ||
|  |     //设置动态按钮 | ||
|  |     function SetClickEnble(bool) | ||
|  |     { | ||
|  |         ButtonDynamic = bool; | ||
|  |     } | ||
|  | 
 | ||
|  |     //设置点击效果 | ||
|  |     function SetClickEnble(bool) | ||
|  |     { | ||
|  |         ClickEnble = bool; | ||
|  |     } | ||
|  | 
 | ||
|  |     //悬停状态 | ||
|  |     function isInRect() | ||
|  |     { | ||
|  |         if(sq_IsIntersectRect(IMouse.GetXPos(), IMouse.GetYPos(), 5, 5, x, y, width, length)) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键按下状态 | ||
|  |     function isLBDown() | ||
|  |     { | ||
|  |         if(isInRect() && IMouse.GetLButton() == 1) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键弹起状态 | ||
|  |     function isLBUp() | ||
|  |     { | ||
|  |         if(isInRect() && IMouse.GetLButton() == 0) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键双击状态 | ||
|  |     function IsLBDoubleClick() | ||
|  |     { | ||
|  |         if(isInRect() && IMouse.GetLButton() == 64) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  |     //左键单击状态 | ||
|  |     function isLBActive() | ||
|  |     { | ||
|  |         if(isInRect() && IMouse.isButtonUpEvent()) return true; | ||
|  |         else return false; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | class CreatChrC extends UnderBaseDraw | ||
|  | { | ||
|  |     Job = 0; //当前职业 | ||
|  |     ChrJobDrawState = 0; //职业绘制状态 | ||
|  |     DrawChrAniEffTimer = null; //职业绘制Timer | ||
|  |     ChrJobDrawAlpha = []; //职业绘制Alpha数组 | ||
|  |     SelectSwitch = false; //选择职业开关 | ||
|  | 
 | ||
|  |     NowChrSelectPos = 0; //当前角色职业选择位置 | ||
|  | 
 | ||
|  |     constructor() | ||
|  |     { | ||
|  |         ChrJobDrawAlpha.resize(16); //初始化职业绘制Alpha数组 | ||
|  |         for(local i = 0; i < 16; ++i) | ||
|  |         { | ||
|  |             ChrJobDrawAlpha[i] = 0; | ||
|  |         } | ||
|  |         DrawChrAniEffTimer = TimeSTL("DrawChrAniEffTimer", 3000); //初始化职业绘制Timer | ||
|  |     } | ||
|  | 
 | ||
|  |     //同步角色职业选择位置 | ||
|  |     function SyncChrSelectPos() | ||
|  |     { | ||
|  |         NowChrSelectPos = L_sq_RA(0x1A5E258, "0xA8+0xC0+"); | ||
|  |     } | ||
|  | 
 | ||
|  |     //绘制角色信息 | ||
|  |     function DrawChrJobInfo() | ||
|  |     { | ||
|  |         T_DrawStayAni("common/creatchr/chrbackground/background.ani", 0, 0, NowChrSelectPos, "BMain0"); | ||
|  |         T_DrawDynamicAni("common/creatchr/chrjobani/" + NowChrSelectPos + ".ani", -160, 0, "DrawChrJobInfo" + NowChrSelectPos); | ||
|  |         T_DrawDynamicAni("common/creatchr/base/0.ani", 0, 0, "BackGround0"); | ||
|  | 
 | ||
|  |         T_DrawDynamicAni("common/creatchr/base/" + (NowChrSelectPos % 2 + 1) + ".ani", 0, 0, "BackGround1" + (NowChrSelectPos % 2 + 1)); | ||
|  |         //T_DrawDynamicAni( "common/creatchr/base/1.ani", 0, 0,"BackGround1"); | ||
|  |         //T_DrawDynamicAni( "common/creatchr/base/2.ani", -267, 0,"BackGround2"); | ||
|  |         T_DrawDynamicAni("common/creatchr/base/3.ani", -267, 0, "BackGround3"); | ||
|  |     } | ||
|  | 
 | ||
|  |     function DrawSelectButton() | ||
|  |     { | ||
|  |         for(local i = 0; i < 16; ++i) | ||
|  |         { | ||
|  |             if(i == NowChrSelectPos) continue; | ||
|  |             local SelectButton = UnderButton("SelectChrJob" + i, 40 + (i % 4 * 70), 40 + (i / 4 * 70), "common/creatchr/jobbutton/0.ani", 66, 66); | ||
|  |             SelectButton.SetRectEnble(true, "SelectChrJob" + i, 40 + (i % 4 * 70), 40 + (i / 4 * 70), "common/creatchr/jobbutton/0.ani", 1); | ||
|  |             SelectButton.SetCustomClickEnble(true, "SelectChrJob" + i, 40 + (i % 4 * 70), 40 + (i / 4 * 70), "common/creatchr/jobbutton/0.ani", 1); | ||
|  |             SelectButton.Show(); | ||
|  |             if(SelectButton.isLBActive()) | ||
|  |             { | ||
|  |                 L_sq_WA(0x1A5E258, "0xA8+0xC0+", i); | ||
|  |             } | ||
|  |         } | ||
|  |         //角色职业按钮动画完毕以后才显示当前选中 | ||
|  |         if(ChrJobDrawAlpha[15] == 250) T_DrawStayAni("common/creatchr/jobbutton/0.ani", 40 + (NowChrSelectPos % 4 * 70), 40 + (NowChrSelectPos / 4 * 70), 2, "DrawChrJobInfoSelectPos"); | ||
|  |     } | ||
|  | 
 | ||
|  |     function DrawJobButton() | ||
|  |     { | ||
|  |         DrawChrJobInfo(); | ||
|  |         for(local i = 0; i < 16; ++i) | ||
|  |         { | ||
|  |             T_DrawStayAniAlpha("common/creatchr/jobbutton/0.ani", 40 + (i % 4 * 70), 40 + (i / 4 * 70), 3 + (i * 2), "JobAni" + i, ChrJobDrawAlpha[i]); | ||
|  |         } | ||
|  | 
 | ||
|  |         local MainButton = UnderButton("MainButton", 50, 530, "common/training/main/maintab.ani", 38, 35); | ||
|  |         MainButton.SetRectEnble(true, "MainButton", 50, 530, "common/training/main/maintab.ani", 0); | ||
|  |         MainButton.SetCustomClickEnble(true, "MainButton", 50, 530 + 1, "common/training/main/maintab.ani", 0); | ||
|  |         MainButton.Show(); | ||
|  | 
 | ||
|  |         if(MainButton.isLBActive()) | ||
|  |         { | ||
|  |             DrawChrAniEffTimer.Reset(); | ||
|  |             DrawChrAniEffTimer.Start(); | ||
|  |             if(ChrJobDrawState == 0) ++ChrJobDrawState; | ||
|  |             else ChrJobDrawState = ChrJobDrawState * -1; | ||
|  |         } | ||
|  | 
 | ||
|  |         //绘制阶段 | ||
|  |         if(ChrJobDrawState == 1) | ||
|  |         { | ||
|  |             //最后一个角色头像的Alpha值等于250之前 | ||
|  |             if(ChrJobDrawAlpha[15] < 250) | ||
|  |             { | ||
|  |                 if(DrawChrAniEffTimer.Get() >= 15) | ||
|  |                 { | ||
|  |                     DrawChrAniEffTimer.Reset(); | ||
|  |                     DrawChrAniEffTimer.Start(); | ||
|  |                     for(local i = 0; i < 16; ++i) | ||
|  |                     { | ||
|  |                         local AddAlpha = (20 - i) * 1; | ||
|  |                         if(ChrJobDrawAlpha[i] + AddAlpha < 250) ChrJobDrawAlpha[i] += AddAlpha; | ||
|  |                         else ChrJobDrawAlpha[i] = 250; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             else | ||
|  |             { | ||
|  |                 SelectSwitch = true; | ||
|  |             } | ||
|  |         } | ||
|  |         if(ChrJobDrawState == -1) | ||
|  |         { | ||
|  |             //第一个角色的Alpha值等于0之前 | ||
|  |             if(ChrJobDrawAlpha[0] > 0) | ||
|  |             { | ||
|  |                 if(DrawChrAniEffTimer.Get() >= 15) | ||
|  |                 { | ||
|  |                     DrawChrAniEffTimer.Reset(); | ||
|  |                     DrawChrAniEffTimer.Start(); | ||
|  |                     for(local i = 0; i < 16; ++i) | ||
|  |                     { | ||
|  |                         local AddAlpha = (4 + i) * 1; | ||
|  |                         if(ChrJobDrawAlpha[i] - AddAlpha > 0) ChrJobDrawAlpha[i] -= AddAlpha; | ||
|  |                         else ChrJobDrawAlpha[i] = 0; | ||
|  |                     } | ||
|  |                 } | ||
|  |             } | ||
|  |             else | ||
|  |             { | ||
|  |                 SelectSwitch = false; | ||
|  |             } | ||
|  |         } | ||
|  |         //绘制选择角色职业按钮 | ||
|  |         if((SelectSwitch == true && ChrJobDrawAlpha[0] >= 35) || ChrJobDrawState == 1) DrawSelectButton(); | ||
|  |     } | ||
|  | 
 | ||
|  |     function Run() | ||
|  |     { | ||
|  |         SyncChrSelectPos(); | ||
|  |         DrawJobButton(); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | CreatChrTable <- {} | ||
|  | function CreatChr() | ||
|  | { | ||
|  |     /* | ||
|  |     if(sq_IsKeyDown(7, ENUM_SUBKEY_TYPE_ALL)) | ||
|  |     { | ||
|  |         if(CreatChrTable.rawin("CreatChrCObject") == true) CreatChrTable.rawdelete("CreatChrCObject"); | ||
|  |     } | ||
|  |     */ | ||
|  |     if(CreatChrTable.rawin("CreatChrCObject") == false) CreatChrTable.rawset("CreatChrCObject", CreatChrC()); | ||
|  |     else CreatChrTable["CreatChrCObject"].Run(); | ||
|  | 
 | ||
|  |     //CreatChrC.T_DrawDynamicAni("BackGround0", "common/creatchr/base/0.ani", -267, 0); | ||
|  |     /* | ||
|  |     if(CreatChrTable.rawin("BackGround0") == false) CreatChrTable.rawset("BackGround0", sq_CreateAnimation("", "common/creatchr/base/0.ani")); | ||
|  |     if(CreatChrTable.rawin("BackGround1") == false) CreatChrTable.rawset("BackGround1", sq_CreateAnimation("", "common/creatchr/base/0.ani")); | ||
|  |     if(CreatChrTable.rawin("BackGround2") == false) CreatChrTable.rawset("BackGround2", sq_CreateAnimation("", "common/creatchr/base/0.ani")); | ||
|  |     if(CreatChrTable.rawin("BackGround3") == false) CreatChrTable.rawset("BackGround3", sq_CreateAnimation("", "common/creatchr/base/0.ani")); | ||
|  |     sq_AnimationProc(CreatChrTable["Test"]); | ||
|  |     sq_drawCurrentFrame(CreatChrTable["Test"], -267, 0, true); | ||
|  |     //T_DrawDynamicAni(obj, "common/dps/maintop.ani", 0, 0, "maintop"); //绘制Dps上边栏 | ||
|  |     //print(666); | ||
|  |     //local mouseX = IMouse.GetXPos(); | ||
|  |     //local mouseY = IMouse.GetYPos(); | ||
|  |     //print(mouseX); | ||
|  |     //print(mouseY); | ||
|  |     */ | ||
|  | } |