This commit is contained in:
2024-09-27 14:04:23 +08:00
parent 39d60b284e
commit b2133d8463
25 changed files with 1170 additions and 128 deletions

View File

@@ -0,0 +1,223 @@
/*
文件名: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"); //骑士马战资料
class HorseGuessingC extends LenheartNewUI_Windows {
//调试模式
//DeBugMode = true;
//不是窗口
// NoWindow = true;
//是否可见
// Visible = false;
//标题栏
Title = null;
//当前页面
Page = 0;
//页面选择器
PageSelectM = 0;
//指引页面
GuidePage = null;
//骑士资料页面
KnightInfoPage = null;
//过往战绩页面
PastRecordPage = null;
//骑手名称
RiderName = [
"伊撒尔",
"理查德",
"席恩",
"吉尔特",
"爱德华",
"罗兰",
"莱奥",
"贝奥武夫",
];
//当前选择骑手
NowSelectRider = 0;
//下注
BetItem = 0;
//剩余可下注数量
ResidueCoin = 10000;
//骑手信息
RiderInfo = null;
//获取选手具体信息
function GetRiderInfo() {
local T = {
op = 20055003,
code = NowSelectRider,
}
SendPack(T);
}
//获取选手具体信息回调包
function GetRiderInfoCallBack(Chunk) {
local Jso = Json.Decode(Chunk);
RiderInfo = [];
for (local i = 0; i< Jso.outcome.len(); i++) {
RiderInfo.append(Jso.outcome[i]);
}
}
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
Title = [];
RiderInfo = [];
//读取配置文件
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();
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);
//默认构造时切换到0页
ChangePage(1);
}
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 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);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X, Y);
//主动调用子对象窗口的Proc
foreach(Object in Childrens) {
if (Object instanceof LenheartNewUI_Windows)
Object.Proc(obj);
}
}
function OpenCallBack() {
this.Visible = true;
ResetFocus();
}
}
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);

View File

@@ -0,0 +1,58 @@
/*
文件名:HorseGuessing_Guide.nut
路径:Project/HorseGuessing/HorseGuessing_Guide.nut
创建日期:2024-09-25 20:50
文件用途:骑士马战指引窗口
*/
class HorseGuessing_GuideC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
// NoWindow = true;
//是否可见
// Visible = false;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
}
function RegisterWidget() {}
//绘制主界面
function DrawMain(obj) {
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 0, X, Y);
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X - 7, Y - 50);
if (Parent && Parent.Visible && Parent.PageSelectM == 0) {
Visible = true;
X = Parent.X + 7;
Y = Parent.Y + 50;
} else {
Visible = false;
}
}
//因为要重载LenheartNewUI_Windows的构造函数
function ResetFocus() {
}
}
getroottable().rawdelete("HorseGuessing_Obj");

View File

@@ -0,0 +1,120 @@
/*
文件名:HorseGuessing_KnightInfo.nut
路径:Project/HorseGuessing/HorseGuessing_KnightInfo.nut
创建日期:2024-09-25 21:11
文件用途:骑士信息
*/
class HorseGuessing_KnightInfoC extends LenheartNewUI_Windows {
//调试模式
// DeBugMode = true;
//不是窗口
// NoWindow = true;
//是否可见
// Visible = false;
//输入框
InputObject = null;
constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH) {
Childrens = [];
//注册控件
RegisterWidget();
LenheartNewUI_Windows.constructor(gObjectId, gX, gY, gWidth, gHeight, gTitleH);
}
function RegisterWidget() {
//下注按钮
local BetButton = LenheartNewUI_BaseButton(54, 654, 129, 33, "interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 22);
BetButton.OnClickSound = "BUTTON_01";
BetButton.OnClick = function() {
local T = {
op = 20055005,
code = Parent.NowSelectRider,
num = InputObject.str,
}
SendPackEx(T);
}.bindenv(this);
Childrens.append(BetButton);
InputObject = LenheartNewUI_BaseInput(80, 564, 76, 20);
AddChild(InputObject);
}
//绘制主界面
function DrawMain(obj) {
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 1, X, Y);
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", 50, X + 7, Y + 12);
//DrawParent.RiderInfo
T_DrawDynamicAni(obj, "common/horseguessing/knight" + Parent.NowSelectRider + ".ani", X + 2, Y + 130, "HorseGuessingRiderAnimotion" + Parent.NowSelectRider);
T_DrawDynamicAni(obj, "common/horseguessing/knightinfoeffect.ani", X - 1, Y - 9, "HorseGuessingRiderAnimotionEff");
//绘制名字
local RiderNameStr = Parent.RiderName[Parent.NowSelectRider];
L_sq_DrawCode(RiderNameStr, X + 111 - (LenheartTextClass.GetStringLength(RiderNameStr) / 2), Y + 116 + 18 + 146 + 3, sq_RGBA(255, 255, 255, 250), 0, 1);
//绘制下注道具
DrawItemBase(X + 74, Y + 320, Parent.BetItem, 1);
//骑手胜率信息
if (Parent.RiderInfo && Parent.RiderInfo.len() >= 5) {
L_sq_DrawCode("获胜 : " + Parent.RiderInfo[2] + "次", X + 25 + 5, Y + 56 + 17, sq_RGBA(255, 255, 255, 250), 0, 1);
L_sq_DrawCode(Parent.RiderInfo[0] + "胜" + Parent.RiderInfo[1] + "败", X + 25 + 5, Y + 56 + 17 + 19, sq_RGBA(255, 255, 255, 250), 0, 1);
local WinRate = 0;
if (Parent.RiderInfo[0] + Parent.RiderInfo[1] != 0)
WinRate = ((Parent.RiderInfo[0].tofloat() / (Parent.RiderInfo[0] + Parent.RiderInfo[1]).tofloat()) * 100.0).tointeger();
L_sq_DrawCode("胜率 : " + WinRate + "%", X + 25 + 5, Y + 56 + 17 + 19 + 15, sq_RGBA(255, 255, 255, 250), 0, 1);
if (Parent.RiderInfo[3] != 0 && Parent.RiderInfo[4] != 0) {
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", Parent.RiderInfo[3], X + 25 + 5 + 152, Y + 62);
L_sq_DrawImg("interface2/event/chn_event_2016/160927_joustmatches/joustmatches_info_window.img", Parent.RiderInfo[4], X + 25 + 5 + 152, Y + 62 + 36);
}
}
//绘制剩余道具数量
if (Parent.ResidueCoin != null) {
L_sq_DrawCode(Parent.ResidueCoin.tostring(), X + 128, Y + 386, sq_RGBA(255, 255, 255, 250), 0, 1);
}
}
function Show(obj) {
DrawMain(obj);
LenheartNewUI_Windows.Show(obj);
}
//逻辑入口
function Proc(obj) {
LenheartNewUI_Windows.SyncPos(X - 7, Y - 210);
if (Parent && Parent.Visible && Parent.PageSelectM == 1) {
Visible = true;
X = Parent.X + 7;
Y = Parent.Y + 50;
} else {
Visible = false;
}
//判断如果输入的金额大于自身有的金额
if (InputObject.str.len() > 0 && InputObject.str.tointeger() > Parent.ResidueCoin) {
InputObject.SetStr(Parent.ResidueCoin.tostring());
}
}
//因为要重载LenheartNewUI_Windows的构造函数
function ResetFocus() {
}
}
getroottable().rawdelete("HorseGuessing_Obj");