622 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			622 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /*
 | |
| 文件名:HorseGuessing.nut
 | |
| 路径:Project/HorseGuessing/HorseGuessing.nut
 | |
| 创建日期:2024-09-25	20:30
 | |
| 文件用途:骑士马战
 | |
| */
 | |
| // dofile("sqr/Project/HorseGuessing/HorseGuessing_Guide.nut"); //骑士马战指引
 | |
| // dofile("sqr/Project/HorseGuessing/HorseGuessing_KnightInfo.nut"); //骑士马战资料
 | |
| // dofile("sqr/Project/HorseGuessing/HorseGuessing_PastRecord.nut"); //骑士马战过往战绩
 | |
| 
 | |
| class HorseGuessingBaseButton extends LenheartNewUI_BaseButton {
 | |
|     //是否翻转
 | |
|     IsFlip = false;
 | |
| 
 | |
|     //ovverride
 | |
|     //鼠标事件回调
 | |
|     function OnMouseProc(Flag, MousePos_X, MousePos_Y) {
 | |
|         if (!IsFlip) {
 | |
|             if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y, Width, Height)) isInRect = true;
 | |
|             else isInRect = false;
 | |
|         } else {
 | |
|             if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X - Width, Y, Width, Height)) isInRect = true;
 | |
|             else isInRect = false;
 | |
|         }
 | |
|     }
 | |
|     //ovverride
 | |
|     //鼠标左键按下回调
 | |
|     function OnMouseLbDown(MousePos_X, MousePos_Y) {
 | |
|         if (!IsFlip) {
 | |
|             if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X, Y, Width, Height)) {
 | |
|                 isLBDown = true;
 | |
|                 if (!OnClickSound) {
 | |
|                     R_Utils.PlaySound("CLICK_BUTTON1");
 | |
|                 } else {
 | |
|                     R_Utils.PlaySound(OnClickSound);
 | |
|                 }
 | |
|             }
 | |
|         } else {
 | |
|             if (sq_IsIntersectRect(MousePos_X, MousePos_Y, 1, 1, X - Width, Y, Width, Height)) {
 | |
|                 isLBDown = true;
 | |
|                 if (!OnClickSound) {
 | |
|                     R_Utils.PlaySound("CLICK_BUTTON1");
 | |
|                 } else {
 | |
|                     R_Utils.PlaySound(OnClickSound);
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //ovverride
 | |
|     function Show(obj) {
 | |
| 
 | |
|         local XRate = 1.0;
 | |
|         if (IsFlip) XRate = -1.0;
 | |
|         //不可用
 | |
|         if (State == 8) {
 | |
|             L_sq_DrawImg(Path, Idx + 3, X, Y + 1, 1, sq_RGBA(255, 255, 255, 250), XRate, 1.0);
 | |
|         } else {
 | |
|             //按下
 | |
|             if (isLBDown) {
 | |
|                 L_sq_DrawImg(Path, Idx + 2, X, Y + 1, 1, sq_RGBA(255, 255, 255, 250), XRate, 1.0);
 | |
|             }
 | |
|             //悬停
 | |
|             else if (isInRect) {
 | |
|                 L_sq_DrawImg(Path, Idx + 1, X, Y, 1, sq_RGBA(255, 255, 255, 250), XRate, 1.0);
 | |
|             }
 | |
|             //普通
 | |
|             else {
 | |
|                 L_sq_DrawImg(Path, Idx, X, Y, 1, sq_RGBA(255, 255, 255, 250), XRate, 1.0);
 | |
|             }
 | |
|         }
 | |
| 
 | |
|     }
 | |
| }
 | |
| 
 | |
| class HorseGuessingC extends LenheartNewUI_Windows {
 | |
|     //调试模式
 | |
|     //DeBugMode = true;
 | |
| 
 | |
|     //不是窗口
 | |
|     // NoWindow = true;
 | |
| 
 | |
|     //是否可见
 | |
|     Visible = false;
 | |
| 
 | |
|     //标题栏
 | |
|     Title = null;
 | |
|     //当前页面
 | |
|     Page = 0;
 | |
| 
 | |
|     //页面选择器
 | |
|     PageSelectM = 0;
 | |
|     //指引页面
 | |
|     GuidePage = null;
 | |
|     //骑士资料页面
 | |
|     KnightInfoPage = null;
 | |
|     //过往战绩页面
 | |
|     PastRecordPage = null;
 | |
| 
 | |
| 
 | |
|     //骑手名称
 | |
|     RiderName = null;
 | |
| 
 | |
|     //当前选择骑手
 | |
|     NowSelectRider = 0;
 | |
| 
 | |
|     //下注
 | |
|     BetItem = 0;
 | |
| 
 | |
|     //剩余可下注数量
 | |
|     ResidueCoin = 10000;
 | |
| 
 | |
|     //骑手信息
 | |
|     RiderInfo = null;
 | |
| 
 | |
|     //往期战绩
 | |
|     InfoContestLog = null;
 | |
| 
 | |
|     //状态
 | |
|     MyState = 0;
 | |
| 
 | |
|     //初始化名字包
 | |
|     function InitRiderNameCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         RiderName = Jso.name;
 | |
|         ResidueCoin = Jso.Max;
 | |
|         BetItem = Jso.itemId;
 | |
|     }
 | |
| 
 | |
|     //获取基础配置信息
 | |
|     function GetBaseConfig() {
 | |
|         local T = {
 | |
|             op = 20055001,
 | |
|         }
 | |
|         SendPackEx(T);
 | |
|     }
 | |
|     //获取基础配置信息回调
 | |
|     function GetBaseConfigCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         if (!("Top8" in Jso.Rank)) return;
 | |
| 
 | |
|         //同步状态
 | |
|         MyState = Jso.state;
 | |
| 
 | |
|         //初始化骑手信息
 | |
|         RiderInfo = [];
 | |
|         RiderInfo = Jso.Rank.Top8;
 | |
| 
 | |
|         //写入骑手下注信息
 | |
|         for (local i = 0; i< RiderInfo.len(); i++) {
 | |
|             RiderInfo[i].codeItem <- Jso.codeItem[i];
 | |
|         }
 | |
| 
 | |
|         //重置骑手按钮
 | |
| 
 | |
|         //构造骑手按钮
 | |
|         InitKnightButton();
 | |
| 
 | |
|         //刷新剩余可下注数量
 | |
|         ResidueCoin = Jso.ResidueCoin;
 | |
| 
 | |
| 
 | |
|         //请求骑士个人信息
 | |
|         this.GetRiderInfo();
 | |
|     }
 | |
| 
 | |
|     //获取过往战绩
 | |
|     function GetPastRecord() {
 | |
|         local T = {
 | |
|             op = 20055009,
 | |
|         }
 | |
|         SendPackEx(T);
 | |
|     }
 | |
|     //获取过往战绩回调
 | |
|     function GetPastRecordCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         InfoContestLog = Jso.knights;
 | |
|     }
 | |
| 
 | |
| 
 | |
|     //获取选手具体信息
 | |
|     function GetRiderInfo() {
 | |
|         local T = {
 | |
|             op = 20055003,
 | |
|             code = NowSelectRider,
 | |
|         }
 | |
|         SendPackEx(T);
 | |
|     }
 | |
| 
 | |
|     //获取选手具体信息回调包
 | |
|     function GetRiderInfoCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         RiderInfo[NowSelectRider].outcome <- Jso.outcome;
 | |
|     }
 | |
| 
 | |
|     //通知刷新信息包
 | |
|     function NotifyRefreshInfoCallBack(Chunk) {
 | |
|         GetBaseConfig();
 | |
|     }
 | |
| 
 | |
|     //动画脚本状态
 | |
|     AnimationAct = 0;
 | |
|     //绘制动画包
 | |
|     function DrawAniInfoCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         AnimationAct = Jso.state;
 | |
| 
 | |
|         if (AnimationAct == 2) {
 | |
|             if (CompetitionStartAnimotion) sq_Rewind(CompetitionStartAnimotion);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //战斗信息
 | |
|     FightInfo = null;
 | |
|     WinnerEffectTimer = null;
 | |
|     //战斗信息包
 | |
|     function FightInfoCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         MyState = Jso.state;
 | |
| 
 | |
|         FightInfo = Jso;
 | |
|         if (MyState >= 30) {
 | |
|             WinnerEffectTimer = Clock();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //获胜者动画
 | |
|     NotiState = false; //公告状态
 | |
|     NotiStr = null; //公告内容
 | |
|     NotiTime = null; //公告时间
 | |
| 
 | |
|     function WinnerAniCallBack(Chunk) {
 | |
|         local Jso = Json.Decode(Chunk);
 | |
|         NotiState = true; //公告状态
 | |
|         NotiStr = Jso.Str; //公告内容
 | |
|         NotiTime = Clock();
 | |
|     }
 | |
| 
 | |
| 
 | |
|     constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
 | |
|         Childrens = [];
 | |
|         Title = [];
 | |
|         RiderInfo = [];
 | |
|         RiderName = [
 | |
|             "伊撒尔",
 | |
|             "理查德",
 | |
|             "席恩",
 | |
|             "吉尔特",
 | |
|             "爱德华",
 | |
|             "罗兰",
 | |
|             "莱奥",
 | |
|             "贝奥武夫",
 | |
|         ];
 | |
| 
 | |
|         // //读取配置文件
 | |
|         // local Config = R_Utils.ReadScriptConfig("etc/rindro/horseguessing/horseguessing.dat", 1024, "utf8");
 | |
| 
 | |
|         // RiderName = Config.RiderInfo;
 | |
|         // BetItem = Config.ItemId;
 | |
|         // //把big的名字 转成 utf8
 | |
|         // for (local i = 0; i< RiderName.len(); i++) {
 | |
|         //     RiderName[i] = Sq_ConvertWideChar(RiderName[i], "big5");
 | |
|         // }
 | |
| 
 | |
|         //注册控件
 | |
|         RegisterWidget();
 | |
| 
 | |
|         Pack_Control.rawset(20055058, InitRiderNameCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055002, GetBaseConfigCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055010, GetPastRecordCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055004, GetRiderInfoCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055018, NotifyRefreshInfoCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055020, DrawAniInfoCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055012, FightInfoCallBack.bindenv(this));
 | |
|         Pack_Control.rawset(20055078, WinnerAniCallBack.bindenv(this));
 | |
| 
 | |
|         //获取基础配置
 | |
|         GetBaseConfig();
 | |
|         //获取历史战绩
 | |
|         GetPastRecord();
 | |
| 
 | |
| 
 | |
|         LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
 | |
| 
 | |
| 
 | |
|         GuidePage = HorseGuessing_GuideC("骑士马战_指引窗口", X + 7, Y + 50, 214, 480, 0);
 | |
|         KnightInfoPage = HorseGuessing_KnightInfoC("骑士马战_资料窗口", X + 7, Y + 50, 214, 480, 0);
 | |
|         PastRecordPage = HorseGuessing_PastRecordC("骑士马战_战绩窗口", X + 7, Y + 50, 214, 480, 0);
 | |
| 
 | |
|         //默认构造时切换到0页
 | |
|         ChangePage(0);
 | |
|     }
 | |
| 
 | |
|     function ChangePage(ToPage) {
 | |
| 
 | |
|         foreach(ButtonObj in Title) {
 | |
|             ButtonObj.State = 0;
 | |
|         }
 | |
|         Page = ToPage;
 | |
|         Title[ToPage].State = 1;
 | |
| 
 | |
|         RemoveChild("骑士马战_指引窗口");
 | |
|         RemoveChild("骑士马战_资料窗口");
 | |
|         RemoveChild("骑士马战_战绩窗口");
 | |
| 
 | |
|         PageSelectM = ToPage;
 | |
|         switch (ToPage) {
 | |
|             case 0: {
 | |
|                 AddChild(GuidePage);
 | |
|                 break;
 | |
|             }
 | |
|             case 1: {
 | |
|                 AddChild(KnightInfoPage);
 | |
|                 break;
 | |
|             }
 | |
|             case 2:
 | |
|                 AddChild(PastRecordPage);
 | |
|                 break;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //初始化骑士按钮
 | |
|     function InitKnightButton() {
 | |
|         foreach(pos, v in RiderInfo) {
 | |
|             local KnightButton = HorseGuessingBaseButton(269 + ((pos / 2) * 121) + ((pos % 2) * 59), 398, 36, 42, "interface2/event/chn_event_2016/160927_joustmatches/joustmatches_cha_btn.img", pos * 4);
 | |
|             //如果是偶数需要翻转骑士
 | |
|             if (pos % 2 == 1) {
 | |
|                 KnightButton.IsFlip = true;
 | |
|                 KnightButton.Localtion_X += 36;
 | |
|             }
 | |
|             KnightButton.Data = v;
 | |
|             KnightButton.OnClickEx = function(Button) {
 | |
|                 this.NowSelectRider = Button.Data.code;
 | |
|                 ChangePage(1);
 | |
|                 //请求骑士个人信息
 | |
|                 this.GetRiderInfo();
 | |
|             }.bindenv(this);
 | |
| 
 | |
|             KnightButton.SetCallBackFunc(function(Button) {
 | |
|                 //是否翻转的偏移
 | |
|                 local FlipXOffset = ((Button.IsFlip == true) ? -35 : 0);
 | |
|                 local horseKey = ((Button.IsFlip == true) ? "right" : "left");
 | |
|                 //绘制旗帜
 | |
|                 L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 11 + Button.Data.code, Button.X - 6 + FlipXOffset, Button.Y + 46);
 | |
|                 //绘制赔率信息
 | |
|                 local OddsStr = format("%.2f", Button.Data.Odds.tofloat());
 | |
|                 L_sq_DrawCode(OddsStr, Button.X + 18 + FlipXOffset - LenheartTextClass.GetStringLength(OddsStr) / 2, Button.Y + 53);
 | |
|                 //绘制已投币数量
 | |
|                 local codeItem = Button.Data.codeItem.tostring();
 | |
|                 L_sq_DrawCode(codeItem, Button.X + 18 + FlipXOffset - LenheartTextClass.GetStringLength(codeItem) / 2, Button.Y + 68);
 | |
| 
 | |
|                 //绘制框
 | |
|                 if (FlipXOffset == -35) FlipXOffset = -37; //傻逼国服美工这个偏移和那个翻转的偏移不一样
 | |
|                 L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_horse_" + horseKey + "_effect.img", Button.Data.code * 2, Button.X + FlipXOffset - 11, Button.Y - 54);
 | |
| 
 | |
| 
 | |
|             }.bindenv(this));
 | |
|             Childrens.append(KnightButton);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function RegisterWidget() {
 | |
|         //关闭按钮
 | |
|         local CloseButton = LenheartNewUI_BaseButton(750, 0, 11, 12, "interface/lenheartwindowcommon.img", 276);
 | |
|         CloseButton.OnClick = function() {
 | |
|             this.Visible = false;
 | |
|         }.bindenv(this);
 | |
|         Childrens.append(CloseButton);
 | |
| 
 | |
|         local Tabbars1 = LenheartNewUI_TabbarsText(12, 27, "指引");
 | |
|         Tabbars1.State = 1;
 | |
|         AddChild(Tabbars1);
 | |
|         Tabbars1.OnClick = function() {
 | |
|             ChangePage(0);
 | |
|         }.bindenv(this);
 | |
|         Title.append(Tabbars1);
 | |
| 
 | |
|         local Tabbars2 = LenheartNewUI_TabbarsText(74, 27, "骑士资料");
 | |
|         AddChild(Tabbars2);
 | |
|         Tabbars2.OnClick = function() {
 | |
|             ChangePage(1);
 | |
|         }.bindenv(this);
 | |
|         Tabbars2.SetTextOffset(7, 3);
 | |
|         Title.append(Tabbars2);
 | |
| 
 | |
|         local Tabbars3 = LenheartNewUI_TabbarsText(136, 27, "过往战绩");
 | |
|         AddChild(Tabbars3);
 | |
|         Tabbars3.OnClick = function() {
 | |
|             ChangePage(2);
 | |
|         }.bindenv(this);
 | |
|         Tabbars3.SetTextOffset(7, 3);
 | |
|         Title.append(Tabbars3);
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     function DrawInfo(obj) {
 | |
| 
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //绘制主界面
 | |
|     function DrawMain(obj) {
 | |
|         //绘制窗口
 | |
|         L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 33, X, Y);
 | |
|         //绘制左边底槽窗口
 | |
|         L_sq_DrawWindow(X + 2, Y + 46, 210, 435, "interface/lenheartwindowcommon.img", 97, 11, 12, 11, 13);
 | |
| 
 | |
| 
 | |
|         //绘制详情页
 | |
|         DrawInfo(obj);
 | |
| 
 | |
|         //BackGround
 | |
|         L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 0, X + 227, Y + 26);
 | |
| 
 | |
|         // L_sq_DrawCode(L_sq_StringBinById(271069), X + 400, Y + 386, sq_RGBA(255, 255, 255, 250), 0, 1);
 | |
|     }
 | |
| 
 | |
|     //开始动画
 | |
|     CompetitionStartAnimotion = null;
 | |
|     //绘制动画
 | |
|     function DrawAnimation(obj) {
 | |
|         //绘制321开始
 | |
|         if (AnimationAct == 1) {
 | |
|             CompetitionStartAnimotion = T_DrawDynamicAni(obj, "common/horseguessing/countdown.ani", X + 9 + 287 - 14 + 202, Y + 45 + 237 + 64 - 144, "HorseGuessingCompetitionState8");
 | |
|         }
 | |
|         //绘制战斗
 | |
|         else if (AnimationAct == 2) {
 | |
|             local T = {
 | |
|                 count = 4,
 | |
|                 x = 282,
 | |
|                 y = 346,
 | |
|                 x2 = 282,
 | |
|                 y2 = 346,
 | |
|                 x3 = 282,
 | |
|                 y3 = 346,
 | |
|                 offset = 122,
 | |
|             }
 | |
|             // if(MyState < 10)
 | |
|             if (MyState >= 10 && MyState< 20) {
 | |
|                 T.count = 2;
 | |
|                 T.x = 344;
 | |
|                 T.y = 222;
 | |
|                 T.x2 = 310;
 | |
|                 T.y2 = 232;
 | |
|                 T.x3 = 380;
 | |
|                 T.y3 = 232;
 | |
|                 T.offset = 244;
 | |
|             } else if (MyState >= 20) {
 | |
|                 T.count = 1;
 | |
|                 T.x = 465;
 | |
|                 T.y = 54;
 | |
|                 T.x2 = 370;
 | |
|                 T.y2 = 120;
 | |
|                 T.x3 = 560;
 | |
|                 T.y3 = 120;
 | |
|                 T.offset = 244;
 | |
|             }
 | |
| 
 | |
|             for (local i = 0; i< T.count; i++) {
 | |
|                 T_DrawDynamicAni(obj, "common/horseguessing/battle.ani", X + T.x + (i * T.offset), Y + T.y, "骑士马战战斗动画文字");
 | |
| 
 | |
|                 T_DrawDynamicAni(obj, "common/horseguessing/battleleffect.ani", X + T.x2 + (i * T.offset), Y + T.y2, "骑士马战战斗动画左");
 | |
|                 T_DrawDynamicAni(obj, "common/horseguessing/battlereffect.ani", X + T.x3 + (i * T.offset), Y + T.y3, "骑士马战战斗动画右");
 | |
|             }
 | |
|         }
 | |
|         //结束绘制
 | |
|         else if (AnimationAct == 3) {
 | |
| 
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     //绘制骑士和生命值
 | |
|     function DrawKnightAndHpDrawFunction(T, Key) {
 | |
|         foreach(i, value in FightInfo[Key]) {
 | |
|             local DrawX = X + T.x + ((i / 2) * T.offset1) + ((i % 2) * T.offset2);
 | |
|             local DrawY = Y + T.y;
 | |
| 
 | |
|             local XRate = (i % 2 == 0 ? 1.0 : -1.0);
 | |
|             local Xoffset = (i % 2 == 0 ? 0 : 36);
 | |
|             L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_cha_btn.img", value.code * 4, DrawX + Xoffset, DrawY, 1, sq_RGBA(255, 255, 255, 250), XRate, 1.0);
 | |
| 
 | |
|             //绘制血条
 | |
|             setClip(DrawX + 2, DrawY - 4, DrawX + 2 + (34.0 * (value.hp.tofloat() / 100.0)).tointeger(), DrawY - 4 + 2);
 | |
|             L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 2, DrawX + 2, DrawY - 4);
 | |
|             releaseClip();
 | |
| 
 | |
|             //绘制胜利线
 | |
|             if (value.win > 0) {
 | |
|                 local XXoffset = (i % 2 == 0 ? 0 : -2);
 | |
|                 L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 20 + T.imgoffset, DrawX + XXoffset + T.Xx, DrawY - 65 + T.Xy, 1, sq_RGBA(255, 255, 255, 250), XRate, 1.0);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function DrawKnightAndHp(obj) {
 | |
|         if (!FightInfo) return;
 | |
| 
 | |
|         if (MyState > 0) {
 | |
|             local T = {
 | |
|                 x = 268,
 | |
|                 y = 398,
 | |
|                 offset1 = 121,
 | |
|                 offset2 = 59,
 | |
|                 imgoffset = 0,
 | |
|                 Xx = 20,
 | |
|                 Xy = 0
 | |
|             }
 | |
|             DrawKnightAndHpDrawFunction(T, "top8");
 | |
|         }
 | |
|         if (MyState >= 10) {
 | |
|             local T = {
 | |
|                 x = 298,
 | |
|                 y = 287,
 | |
|                 offset1 = 242,
 | |
|                 offset2 = 122,
 | |
|                 imgoffset = 1,
 | |
|                 Xx = 19,
 | |
|                 Xy = 0
 | |
|             };
 | |
|             DrawKnightAndHpDrawFunction(T, "top4");
 | |
|         }
 | |
|         if (MyState >= 20) {
 | |
|             local T = {
 | |
|                 x = 358,
 | |
|                 y = 176,
 | |
|                 offset1 = 400,
 | |
|                 offset2 = 244,
 | |
|                 imgoffset = 2,
 | |
|                 Xx = 19,
 | |
|                 Xy = 7
 | |
|             };
 | |
|             DrawKnightAndHpDrawFunction(T, "top2");
 | |
|         }
 | |
|         if (MyState >= 30) {
 | |
|             local T = {
 | |
|                 x = 482,
 | |
|                 y = 88,
 | |
|                 offset1 = 121,
 | |
|                 offset2 = 59,
 | |
|                 imgoffset = 1,
 | |
|                 Xx = 19,
 | |
|                 Xy = 0
 | |
|             };
 | |
|             T_DrawDynamicAni(obj, "common/horseguessing/winnereffect_back.ani", X + T.x, Y + T.y, "骑士马战冠军背景");
 | |
|             DrawKnightAndHpDrawFunction(T, "top1");
 | |
|             T_DrawDynamicAni(obj, "common/horseguessing/winnereffect_front.ani", X + T.x - 15, Y + T.y - 10, "骑士马战冠军特效" + WinnerEffectTimer);
 | |
|         }
 | |
| 
 | |
|     }
 | |
| 
 | |
|     //绘制公告
 | |
|     function DrawNoti(obj) {
 | |
|         //NotiStr
 | |
|         if (NotiState) {
 | |
|             // print(Clock() - NotiTime);
 | |
|             local A = 0;
 | |
|             if (Clock() - NotiTime< 2000) {
 | |
|                 A = sq_GetUniformVelocity(0, 250, Clock() - NotiTime, 2000);
 | |
|             }
 | |
|             if (Clock() - NotiTime >= 2000 && Clock() - NotiTime< 3000) A = 250;
 | |
|             if (Clock() - NotiTime >= 3000) {
 | |
|                 A = sq_GetUniformVelocity(250, 0, Clock() - NotiTime, 6000);
 | |
|             }
 | |
|             local Xpos = ((getroottable().Rindro_Scr_Width - 647) / 2).tointeger();
 | |
|             L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_ui.img", 26, Xpos, 160, 0, sq_RGBA(255, 255, 255, A), 1.0, 1.0);
 | |
|             L_sq_DrawCode(NotiStr, Xpos + 366 - LenheartTextClass.GetStringLength(NotiStr), 160 + 44, sq_RGBA(255, 255, 255, A), 2, 1);
 | |
|             if (Clock() - NotiTime >= 6000) {
 | |
|                 NotiState = false;
 | |
|             }
 | |
|             // NotiTime
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function Show(obj) {
 | |
|         DrawMain(obj);
 | |
|         LenheartNewUI_Windows.Show(obj);
 | |
|         DrawAnimation(obj);
 | |
|         DrawKnightAndHp(obj);
 | |
|     }
 | |
| 
 | |
|     //逻辑入口
 | |
|     function Proc(obj) {
 | |
|         LenheartNewUI_Windows.SyncPos(X, Y);
 | |
| 
 | |
|         //主动调用子对象窗口的Proc
 | |
|         foreach(Object in Childrens) {
 | |
|             if (Object instanceof LenheartNewUI_Windows)
 | |
|                 Object.Proc(obj);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     function TopShow(obj) {
 | |
|         DrawNoti(obj);
 | |
|     }
 | |
| 
 | |
| 
 | |
|     function OpenCallBack() {
 | |
|         this.Visible = true;
 | |
|         ResetFocus();
 | |
|         //获取基础配置
 | |
|         GetBaseConfig();
 | |
|         //获取历史战绩
 | |
|         GetPastRecord();
 | |
|     }
 | |
| }
 | |
| getroottable().rawdelete("HorseGuessing_Obj");
 | |
| 
 | |
| function Lenheart_HorseGuessing_Fun(obj) {
 | |
|     local RootTab = getroottable();
 | |
|     if (!RootTab.rawin("HorseGuessing_Obj")) {
 | |
|         RootTab.rawset("HorseGuessing_Obj", true);
 | |
|         local Winobj = LenheartNewUI_CreateWindow(HorseGuessingC, "骑士马战窗口", ((getroottable().Rindro_Scr_Width - 772) / 2).tointeger(), 30, 772, 539, 28);
 | |
| 
 | |
|         EventList_Obj.AddEvent("骑士马战", 106, Winobj, "interface2/yosin/eventsystemlist2.img");
 | |
|     }
 | |
| }
 | |
| 
 | |
| getroottable()["LenheartFuncTab"].rawset("HorseGuessingFuncN", Lenheart_HorseGuessing_Fun); |