初始化仓库:友乐/gameabc 房卡游戏平台脚手架(client + server + docs)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
// ============================================================================
|
||||
// 游戏配置 (Game Configuration)
|
||||
// ============================================================================
|
||||
|
||||
var Game_Config = Game_Config||{};//相关配置
|
||||
|
||||
|
||||
|
||||
Game_Config.Debugger={//调试配置
|
||||
isDebugger : true,// debugger模式下会将所有收发的包输出到控制台(正式发布改为false)
|
||||
AutoLogin : true,//debugger模式下是否需要记住登录状态自动登录(正式发布改为true)
|
||||
isSubmitError : false,//是否需要服务器收集错误信息调试时可根据需要(正式发布改为true)
|
||||
visitorLogin : true,//隐藏式游客登录
|
||||
visiblePay:true,//审核通过后是否显示支付按钮
|
||||
serverType:1,//0->正式服务器 1->本地服务器 http://ylyxservice1.0791ts.cn/config/update_json.txt
|
||||
gameserver:"https://tsgames.daoqi88.cn/config_test/beta_update_jsonv2.txt"+"?"+ifast_random(100000)
|
||||
// gameserver:"https://tsgames.daoqi88.cn/config_test/test_update_jsonv2.txt"+"?"+ifast_random(100000)
|
||||
//gameserver:"https://gameotherwork.ld2sw.cn/update_json/update_json_haiwai.txt"+"?"+ifast_random(100000)
|
||||
// gameserver:"https://tsgames.daoqi88.cn/config/update_jsonv2.txt"+"?"+ifast_random(100000)
|
||||
|
||||
};
|
||||
|
||||
Game_Config.Max = {
|
||||
SumOfRoomtype:3,//创建时房间类型roomtype数组长度
|
||||
ShowChat:2000,//聊天停留时间
|
||||
PlayerCnt:4,//房间最大人数
|
||||
group:500,//游戏最大群组号
|
||||
showtime:10,//加载等待最少时间
|
||||
reconnecttime:30000,//唤醒游戏间隔(超过间隔断线重连)
|
||||
Mainnickname:10,//主界面玩家昵称显示长度(字符长度)
|
||||
Infonickname:16//个人信息显示长度(字符长度)
|
||||
};
|
||||
Game_Config.Combat = {
|
||||
height:80,//战绩页单行高度高度
|
||||
up_y:190,//战绩页裁剪y坐标
|
||||
bannerheight:60,//战绩横幅高度
|
||||
bannery:80,//战绩横幅Y左边(相对48精灵)
|
||||
btnbg:50
|
||||
};
|
||||
Game_Config.Info = {
|
||||
Mainnickname:8,//游戏主界面玩家信息显示最大长度(字符)
|
||||
textwidth_1:12.5,//昵称文字显示的宽度(未改动聊天显示文字大小无需改动无需修改)
|
||||
textwidth_2:12.5,//积分文字显示的宽度(未改动聊天显示文字大小无需改动无需修改)
|
||||
otherPositionDefault:true,//其他主界面玩家信息(昵称、积分)是否采用默认对齐方式对齐居中点为头像中点
|
||||
myPositionDefault:true,//其他主界面玩家信息(昵称、积分)是否采用默认对齐方式对齐居中点为头像中点
|
||||
myPosition:130,//自己信息对齐点(根据游戏界面自行修改)
|
||||
position:[],//其他主界面玩家信息(昵称、积分)居中对齐的x坐标 注意是其他玩家不包括自己从下家开始
|
||||
//TextContent:["1","2","3","4","5","6","7"],//常用语内容
|
||||
TextContent:["你好","2","3","4","5","6","7"],//常用语内容
|
||||
TextContentMp3:["","","","","","",""],//常用语对应音效
|
||||
};
|
||||
Game_Config.Share={//分享参数
|
||||
appdownload:"",//下载链接(无需配置,从服务器获取)
|
||||
title:"Test",//(分享标题)
|
||||
description:"hello world",//分享描述
|
||||
gameTitle:"",//游戏中的分享标题模板工程会自动将游戏名字分享出去、不必写在这个变量里
|
||||
gameDescription:""//游戏中分享描述
|
||||
};
|
||||
Game_Config.Chat={//游戏内聊天配置信息
|
||||
LimitLength:40,//聊天最大长度(字节长度)
|
||||
textwidth:12.5,//聊天显示文字的宽度(未改动聊天显示文字大小无需改动无需修改)
|
||||
ChatDis:[30,12],//聊天气泡与内容的间隔0位置左右间隔(最好不要低于30)1位置上下间隔
|
||||
isLeft:[1,0,0,1,1],//聊天气泡是否为以左边为基准线
|
||||
ChatLoc:[[35,517],[1100,315],[1100,105],[175,105],[175,315]]//聊天气泡的基准点位置(注意是基准点位置!)
|
||||
|
||||
};
|
||||
Game_Config.Voice={//游戏内聊天配置信息
|
||||
VoiceTime:600,//播放语音动画的时间一般情况无需无需修改
|
||||
VoiceDis:[30,12],//语音气泡与内容的间隔0位置左右间隔(最好不要低于30)1位置上下间隔
|
||||
isLeft:[1,0,0,1,1],//气泡是否为以左边为基准线
|
||||
VoiceLoc:[[35,517],[1100,315],[1100,105],[175,105],[175,315]]//气泡的基准点位置(注意是基准点位置!)
|
||||
};
|
||||
Game_Config.Setting={
|
||||
Ads1:"本游戏仅为娱乐休\n闲使用,道具所有\n 游戏通用\n\n游戏问题请联系微\n 信公众号:\n",
|
||||
//Ads2:"\n 或客服号:\n",
|
||||
board:"",//从后台获取设置无效
|
||||
//info:[" 客服信息","QQ:","",""],//客服QQ提醒
|
||||
info:[" 客服信息","QQ:","手机:","微信:"],//客服QQ提醒
|
||||
board_blength:24,//通知页面一行最大字节数(无需设置)
|
||||
charge:"关注友乐微信公众号充值",//充值提示
|
||||
};
|
||||
Game_Config.Protocol={
|
||||
x:270,//协议图片初始x坐标
|
||||
y:70,//协议图片初始y坐标
|
||||
h:560,//协议图片显示高度
|
||||
w:729//协议图片显示宽度
|
||||
};
|
||||
Game_Config.Help={//帮助
|
||||
x:300,//帮助图片初始x坐标
|
||||
y:165,//帮助图片初始y坐标
|
||||
w:729,//帮助图片显示高度
|
||||
h:450//帮助图片显示宽度
|
||||
};
|
||||
Game_Config.Notice={//滚动公告
|
||||
x1:0,//无需设置
|
||||
x2:0,//无需设置
|
||||
y:0,//无需设置
|
||||
h:0,//无需设置
|
||||
//以上参数用来截取滚动公告的显示,截取位置是与滚动公告底大小位置一致
|
||||
speed:0.1,//滚动公告的滚动速度
|
||||
width:15//滚动公告的内容字体的字节长度(汉字是两个字节)
|
||||
};
|
||||
Game_Config.Feedback = {//反馈配置
|
||||
maxLen:250 //反馈内容最大长度
|
||||
};
|
||||
Game_Config.shakeList ={//摇一摇事件的回调ID、需要添加时在此处添加回调事件写在Utl_Input.js中的Utl.shakeEvent()中
|
||||
nil:0,
|
||||
startwar:1
|
||||
};
|
||||
Game_Config.soundList ={//声音资源名
|
||||
MenuSceneMusic:"",//大厅界面背景音
|
||||
MainSceneMusic:""//游戏主界面背景音
|
||||
};
|
||||
Game_Config.ClickButton = {//需要设置点击音效的按钮(只有有弹窗的按钮设置此音效有效、按钮已经设置好、子游戏不允许修改)
|
||||
src_1:"",//点击时播放的声音资源文件( 不需要播放则不填,下同)
|
||||
src_2:""//弹窗时播放的音效
|
||||
}
|
||||
|
||||
Game_Config.loginButton = {//登录按钮信息
|
||||
x1:415,//非审核版本微信登录按钮x
|
||||
x2:113,//审核版本微信登录按钮x
|
||||
x3:488,//审核版本游客登录按钮x
|
||||
};
|
||||
Game_Config.sysConfig = {
|
||||
mainMenuButton:false,//是否进入主菜单界面隐藏四个按钮
|
||||
mainScenePlayerInfo:false,//是否隐藏主界面玩家信息
|
||||
mainSceneButton:false,//是否隐藏主界面按钮
|
||||
shareRoom:false,//接收到星星场是否屏蔽平台框架显示
|
||||
changeSeat:false,//是否屏蔽平台自动刷新换座后界面
|
||||
hideNotice:false,//隐藏公告栏
|
||||
vipInfinite:false,//是否为百人场
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
// ============================================================================
|
||||
// 01_SubGame_modify.js —— 平台交互/创建房间接口「转发壳」(框架维护,子游戏不碰)
|
||||
// 顶部为「房型/创建房间配置区」(数据,子游戏填值);其下为接口转发壳(转发到 SubGameHooks)。
|
||||
// 严格 ES5。
|
||||
// ----------------------------------------------------------------------------
|
||||
// 【平台约定精灵:25 号 = 创建房间确认按钮】(接入子游戏必看)
|
||||
// 平台框架在「创建房间」界面提供 25 号精灵作为“确认/提交”按钮;其点击交互与
|
||||
// 发送的数据包,均需【子游戏自己实现】(平台不代发),约定流程:
|
||||
// 1. 子游戏在打开创建房间界面时注册 25 号精灵的点击(经 SpriteEventController
|
||||
// 或 mouseup),点击即“确认创建房间”。
|
||||
// 2. 子游戏按界面选项拼出 roomtype(房型配置串,编码局数/人数/扣卡/规则等,
|
||||
// 由各子游戏按玩法自定义与解析),组装并发送创建房间请求:
|
||||
// Net.Send_create_room({
|
||||
// agentid : GameData.AgentId,
|
||||
// playerid: C_Player.playerid,
|
||||
// gameid : GameData.GameId,
|
||||
// roomtype: <房型配置字符串>
|
||||
// });
|
||||
//
|
||||
// 本麻将实现见 codes/game/ui/handlers/CreateRoomEventHandler(bindEvents 注册
|
||||
// 25→submit;submit 用 UIManager._buildRoomTypeString 拼 roomtype 后 Net.Send_create_room)。
|
||||
// ============================================================================
|
||||
|
||||
// ---------- 配置区(数据,子游戏按玩法填值;与 00 的 Game_Config 分工) ----------
|
||||
var Game_Modify = Game_Modify || {};
|
||||
// ---------- 平台需要的必须字段 ----------
|
||||
Game_Modify.roomDes = ""; // 房间描述,子游戏在 setRoomDes 内填
|
||||
Game_Modify.game_config = {}; // 游戏配置默认值
|
||||
Game_Modify.combat = {
|
||||
maxPlayerCount: 5,
|
||||
pageOnelimitStrLen: 8,
|
||||
pageOneDoc: false,
|
||||
pageTwolimitStrLen: 16,
|
||||
pageTwoDoc: false
|
||||
};
|
||||
Game_Modify.Type_1 = [
|
||||
{ id: 0, des: "10局(房卡X1)", roomcard: 1, type: 1 },
|
||||
{ id: 1, des: "20局(房卡X2)", roomcard: 2, type: 2 }
|
||||
];
|
||||
Game_Modify.Type_2 = [
|
||||
{ id: 0, des: "房主扣卡", type: 1 },
|
||||
{ id: 1, des: "每人扣卡", type: 2 }
|
||||
];
|
||||
Game_Modify.CreateRoomData = {
|
||||
Type_1: 0,
|
||||
Type_2: 0
|
||||
};
|
||||
|
||||
|
||||
// ---------- 接口转发壳(A 类:无 hook 即 no-op) ----------
|
||||
Game_Modify.utlmousedown = function (gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6) {
|
||||
if (window.SubGameHooks && SubGameHooks.utlmousedown) return SubGameHooks.utlmousedown(gameid, spid, downx, downy, no1, no2, no3, no4, no5, no6);
|
||||
};
|
||||
Game_Modify.utlmousedown_nomove = function (gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5) {
|
||||
if (window.SubGameHooks && SubGameHooks.utlmousedown_nomove) return SubGameHooks.utlmousedown_nomove(gameid, spid, downx, downy, timelong, no1, no2, no3, no4, no5);
|
||||
};
|
||||
Game_Modify.mouseup = function (gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2) {
|
||||
if (window.SubGameHooks && SubGameHooks.mouseup) return SubGameHooks.mouseup(gameid, spid_down, downx, downy, spid_up, upx, upy, timelong, no1, no2);
|
||||
};
|
||||
Game_Modify.utlmousemove = function (gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1) {
|
||||
if (window.SubGameHooks && SubGameHooks.utlmousemove) return SubGameHooks.utlmousemove(gameid, spid, downx, downy, movex, movey, timelong, offmovex, offmovey, no1);
|
||||
};
|
||||
Game_Modify.utlgamemydrawbegin = function (gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7) {
|
||||
if (window.SubGameHooks && SubGameHooks.utlgamemydrawbegin) return SubGameHooks.utlgamemydrawbegin(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7);
|
||||
};
|
||||
Game_Modify.gamemydraw = function (gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7) {
|
||||
if (window.SubGameHooks && SubGameHooks.gamemydraw) return SubGameHooks.gamemydraw(gameid, spid, times, timelong, no2, no3, no4, no5, no6, no7);
|
||||
};
|
||||
Game_Modify.OpenCreateRoom = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.OpenCreateRoom) return SubGameHooks.OpenCreateRoom();
|
||||
};
|
||||
Game_Modify.CloseCreateRoom = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.CloseCreateRoom) return SubGameHooks.CloseCreateRoom();
|
||||
};
|
||||
Game_Modify.setRoomDes = function (roomcode, asetcount, roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.setRoomDes) return SubGameHooks.setRoomDes(roomcode, asetcount, roomtype);
|
||||
};
|
||||
|
||||
// ---------- gameCombat 兼容空定义 ----------
|
||||
// 平台 gamemain.js 仍直接调用 gameCombat.utl*(战绩界面回调),保留全局对象与 6 个空接口防报错。
|
||||
// 战绩功能由 RecordView 重建(见迁移子项目 2);届时这些接口可改为委托或保持空。
|
||||
var gameCombat = gameCombat || {};
|
||||
gameCombat.utlani_doend = gameCombat.utlani_doend || function () {};
|
||||
gameCombat.utlmousedown = gameCombat.utlmousedown || function () {};
|
||||
gameCombat.utlmouseup = gameCombat.utlmouseup || function () {};
|
||||
gameCombat.utlmousemove = gameCombat.utlmousemove || function () {};
|
||||
gameCombat.utlgamemydraw = gameCombat.utlgamemydraw || function () {};
|
||||
gameCombat.utlgamemydrawbegin = gameCombat.utlgamemydrawbegin || function () {};
|
||||
// 战绩接收入口(平台 09_Net 调):转发到 SubGameHooks(框架转发壳不引用 codes;子游戏在 SubGameHooks 内转 CombatService)
|
||||
gameCombat.get_player_grade1 = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.get_player_grade1) return SubGameHooks.get_player_grade1(_msg);
|
||||
};
|
||||
gameCombat.get_player_grade2 = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.get_player_grade2) return SubGameHooks.get_player_grade2(_msg);
|
||||
};
|
||||
|
||||
// 战绩入口:13 号精灵点击 → 发送获取战绩请求(Net.Send_get_player_grade1,平台底层发送)
|
||||
// 点击经 平台 → Game_Modify.mouseup → SubGameHooks.mouseup → SpriteEventController 链到达
|
||||
if (typeof SpriteEventController !== 'undefined' && SpriteEventController.registerMouseUp) {
|
||||
SpriteEventController.registerMouseUp(13, function () {
|
||||
if (typeof Net !== 'undefined' && Net.Send_get_player_grade1) {
|
||||
Net.Send_get_player_grade1({
|
||||
agentid: GameData.AgentId,
|
||||
playerid: C_Player.playerid,
|
||||
gameid: GameData.GameId,
|
||||
type: 0
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 平台通用精灵交互(从 SubGameHooks 移入;经 Game_Modify.mouseup/gamemydraw→SubGameHooks→SpriteEventController 分发)
|
||||
// 注:25 号(创建房间提交)已归创建房间职责,移至 codes/game/ui/handlers/CreateRoomEventHandler.bindEvents。
|
||||
if (typeof SpriteEventController !== 'undefined') {
|
||||
// 150:帮助按钮
|
||||
if (SpriteEventController.registerMouseUp) {
|
||||
SpriteEventController.registerMouseUp(150, function () {
|
||||
if (typeof GameUI !== 'undefined' && GameUI.OpenHelp) { GameUI.OpenHelp(); }
|
||||
});
|
||||
}
|
||||
// 248:协议勾选绘制(勾上时自绘钩)
|
||||
if (SpriteEventController.registerDraw) {
|
||||
SpriteEventController.registerDraw(248, function (e) {
|
||||
if (GameData.ProtocolIndex) {
|
||||
ifast_mydrawbmp(e.spriteId, 4, 5, 5, 40, 40, 0, 0, 40, 40);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,300 @@
|
||||
// ============================================================================
|
||||
// 02_SubGame_Input.js —— 平台输入/回调接口「转发壳」(框架维护,子游戏不碰)
|
||||
// 平台按全局名调用 gameHallImport.* / Game_Modify.*;本文件统一转发到 SubGameHooks 同名 hook。
|
||||
// 子游戏只需在 codes/ 的 SubGameHooks 里实现需要的接口(见 codes/SubGameHooks.js)。
|
||||
// 严格 ES5。接口清单与默认值依据 spec §9。
|
||||
// ============================================================================
|
||||
|
||||
var gameHallImport = gameHallImport || {};
|
||||
var Game_Modify = Game_Modify || {};
|
||||
|
||||
// ============================================================================
|
||||
// gameHallImport.* — 大厅接口(9 个)
|
||||
// ============================================================================
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
// 注:与 Game_Modify.appStart 同名但语义不同(大厅启动 vs 游戏启动),故 hook 名加 hall 前缀区分
|
||||
gameHallImport.appStart = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.hallAppStart) return SubGameHooks.hallAppStart();
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.jumpMenuScene = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.jumpMenuScene) return SubGameHooks.jumpMenuScene();
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.gameStart = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.gameStart) return SubGameHooks.gameStart();
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.setGameList = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.setGameList) return SubGameHooks.setGameList();
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.clearGameinfo = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.clearGameinfo) return SubGameHooks.clearGameinfo();
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.getWebdata = function (data) {
|
||||
if (window.SubGameHooks && SubGameHooks.getWebdata) return SubGameHooks.getWebdata(data);
|
||||
};
|
||||
|
||||
// B 类:有平台默认返回值,无 hook 即返回默认
|
||||
gameHallImport.isInstalled = function (data) {
|
||||
if (window.SubGameHooks && SubGameHooks.isInstalled) return SubGameHooks.isInstalled(data);
|
||||
return 1;
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.up_imgurl = function (recid, photo) {
|
||||
if (window.SubGameHooks && SubGameHooks.up_imgurl) return SubGameHooks.up_imgurl(recid, photo);
|
||||
};
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
gameHallImport.getphoto = function (recid, photo) {
|
||||
if (window.SubGameHooks && SubGameHooks.getphoto) return SubGameHooks.getphoto(recid, photo);
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
// Game_Modify.* — 生命周期/回调接口(来自 02,45 个)
|
||||
// ============================================================================
|
||||
|
||||
// A 类:纯子游戏行为,无 hook 即 no-op
|
||||
Game_Modify.appStart = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.appStart) return SubGameHooks.appStart();
|
||||
};
|
||||
|
||||
// A 类:开战回调,无 hook 即 no-op
|
||||
Game_Modify.StartWar = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.StartWar) return SubGameHooks.StartWar(_msg);
|
||||
};
|
||||
|
||||
// A 类:接收数据包,无 hook 即 no-op
|
||||
Game_Modify._ReceiveData = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks._ReceiveData) return SubGameHooks._ReceiveData(_msg);
|
||||
};
|
||||
|
||||
// A 类:创建房间,无 hook 即 no-op
|
||||
Game_Modify.createRoom = function (_roomtype, _infinite) {
|
||||
if (window.SubGameHooks && SubGameHooks.createRoom) return SubGameHooks.createRoom(_roomtype, _infinite);
|
||||
};
|
||||
|
||||
// A 类:自己进入房间,无 hook 即 no-op
|
||||
Game_Modify.myJoinRoom = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.myJoinRoom) return SubGameHooks.myJoinRoom(_msg);
|
||||
};
|
||||
|
||||
// A 类:重连,无 hook 即 no-op
|
||||
Game_Modify.Reconnect = function (_deskinfo) {
|
||||
if (window.SubGameHooks && SubGameHooks.Reconnect) return SubGameHooks.Reconnect(_deskinfo);
|
||||
};
|
||||
|
||||
// A 类:关闭所有声音,无 hook 即 no-op
|
||||
Game_Modify.stopAllSounds = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.stopAllSounds) return SubGameHooks.stopAllSounds();
|
||||
};
|
||||
|
||||
// A 类:投票解散确认,无 hook 即 no-op
|
||||
Game_Modify.Free = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.Free) return SubGameHooks.Free(_msg);
|
||||
};
|
||||
|
||||
// A 类:未开战状态加入牌桌数据,无 hook 即 no-op
|
||||
Game_Modify.DeskInfo = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.DeskInfo) return SubGameHooks.DeskInfo(_msg);
|
||||
};
|
||||
|
||||
// A 类:开局后自己退出房间,无 hook 即 no-op
|
||||
Game_Modify.breakRoom = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.breakRoom) return SubGameHooks.breakRoom();
|
||||
};
|
||||
|
||||
// A 类:其他玩家加入房间,无 hook 即 no-op
|
||||
Game_Modify.playerJoinRoom = function (seat) {
|
||||
if (window.SubGameHooks && SubGameHooks.playerJoinRoom) return SubGameHooks.playerJoinRoom(seat);
|
||||
};
|
||||
|
||||
// A 类:其他玩家离开房间,无 hook 即 no-op
|
||||
Game_Modify.playerLeaveRoom = function (seat) {
|
||||
if (window.SubGameHooks && SubGameHooks.playerLeaveRoom) return SubGameHooks.playerLeaveRoom(seat);
|
||||
};
|
||||
|
||||
// A 类:更新游戏界面,无 hook 即 no-op
|
||||
Game_Modify.updateScene = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.updateScene) return SubGameHooks.updateScene();
|
||||
};
|
||||
|
||||
// A 类:关闭游戏界面,无 hook 即 no-op
|
||||
Game_Modify.closeGameScene = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.closeGameScene) return SubGameHooks.closeGameScene();
|
||||
};
|
||||
|
||||
// A 类:玩家离线,无 hook 即 no-op
|
||||
Game_Modify.playerOffline = function (seat) {
|
||||
if (window.SubGameHooks && SubGameHooks.playerOffline) return SubGameHooks.playerOffline(seat);
|
||||
};
|
||||
|
||||
// A 类:玩家上线,无 hook 即 no-op
|
||||
Game_Modify.playerOnline = function (seat) {
|
||||
if (window.SubGameHooks && SubGameHooks.playerOnline) return SubGameHooks.playerOnline(seat);
|
||||
};
|
||||
|
||||
// A 类:玩家电话状态,无 hook 即 no-op
|
||||
Game_Modify.playerphonestate = function (seat, type) {
|
||||
if (window.SubGameHooks && SubGameHooks.playerphonestate) return SubGameHooks.playerphonestate(seat, type);
|
||||
};
|
||||
|
||||
// A 类:摇一摇事件,无 hook 即 no-op
|
||||
Game_Modify.shakeEvent = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.shakeEvent) return SubGameHooks.shakeEvent();
|
||||
};
|
||||
|
||||
// A 类:计算结果,无 hook 即 no-op
|
||||
Game_Modify.calResult = function (inputArr) {
|
||||
if (window.SubGameHooks && SubGameHooks.calResult) return SubGameHooks.calResult(inputArr);
|
||||
};
|
||||
|
||||
// A 类:进入游戏主场景,无 hook 即 no-op
|
||||
Game_Modify.onEnterMainScene = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.onEnterMainScene) return SubGameHooks.onEnterMainScene(roomtype);
|
||||
};
|
||||
|
||||
// A 类:退出游戏主场景,无 hook 即 no-op
|
||||
Game_Modify.onExitMainScene = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.onExitMainScene) return SubGameHooks.onExitMainScene();
|
||||
};
|
||||
|
||||
// A 类:获取游戏配置时调用,无 hook 即 no-op
|
||||
Game_Modify.onGameConfig = function (_gameConfig) {
|
||||
if (window.SubGameHooks && SubGameHooks.onGameConfig) return SubGameHooks.onGameConfig(_gameConfig);
|
||||
};
|
||||
|
||||
// A 类:进入牌局回放,无 hook 即 no-op
|
||||
Game_Modify.onEnterVideo = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.onEnterVideo) return SubGameHooks.onEnterVideo();
|
||||
};
|
||||
|
||||
// A 类:收到投降回包,无 hook 即 no-op
|
||||
Game_Modify.onSurrender = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.onSurrender) return SubGameHooks.onSurrender(_msg);
|
||||
};
|
||||
|
||||
// A 类:玩家准备触发,无 hook 即 no-op
|
||||
Game_Modify.onReady = function (seat) {
|
||||
if (window.SubGameHooks && SubGameHooks.onReady) return SubGameHooks.onReady(seat);
|
||||
};
|
||||
|
||||
// B 类:获取房间描述,无 hook 返回默认文案
|
||||
Game_Modify.getRoomInfo = function (roomtype, type, tea) {
|
||||
if (window.SubGameHooks && SubGameHooks.getRoomInfo) return SubGameHooks.getRoomInfo(roomtype, type, tea);
|
||||
return "房间描述" + roomtype;
|
||||
};
|
||||
|
||||
// B 类:获取房间星星场下限,无 hook 返回默认值
|
||||
Game_Modify.getStarLimit = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getStarLimit) return SubGameHooks.getStarLimit(roomtype);
|
||||
return 2001000;
|
||||
};
|
||||
|
||||
// B 类:获取房间星星场倍数,无 hook 返回默认值
|
||||
Game_Modify.getMult = function (roomtype, type) {
|
||||
if (window.SubGameHooks && SubGameHooks.getMult) return SubGameHooks.getMult(roomtype, type);
|
||||
return 10000;
|
||||
};
|
||||
|
||||
// B 类:获取房间全部信息描述,无 hook 返回默认文案
|
||||
Game_Modify.getFullRoomInfo = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getFullRoomInfo) return SubGameHooks.getFullRoomInfo(roomtype);
|
||||
return "房间描述" + roomtype;
|
||||
};
|
||||
|
||||
// A 类:打开帮助页面,无 hook 即 no-op
|
||||
Game_Modify.onOpenHelp = function (spid) {
|
||||
if (window.SubGameHooks && SubGameHooks.onOpenHelp) return SubGameHooks.onOpenHelp(spid);
|
||||
};
|
||||
|
||||
// A 类:显示大厅界面,无 hook 即 no-op
|
||||
Game_Modify.onMainMenuScene = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.onMainMenuScene) return SubGameHooks.onMainMenuScene();
|
||||
};
|
||||
|
||||
// A 类:数字输入框确认回调,无 hook 即 no-op
|
||||
Game_Modify.onCheckInput = function (_result) {
|
||||
if (window.SubGameHooks && SubGameHooks.onCheckInput) return SubGameHooks.onCheckInput(_result);
|
||||
};
|
||||
|
||||
// A 类:创建房间成功后触发,无 hook 即 no-op
|
||||
Game_Modify.onCreateRoom = function (_data) {
|
||||
if (window.SubGameHooks && SubGameHooks.onCreateRoom) return SubGameHooks.onCreateRoom(_data);
|
||||
};
|
||||
|
||||
// B 类:获取离场限制,无 hook 返回默认值
|
||||
Game_Modify.getLeaveLimit = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getLeaveLimit) return SubGameHooks.getLeaveLimit(roomtype);
|
||||
return 10;
|
||||
};
|
||||
|
||||
// A 类:成功获取定位信息,无 hook 即 no-op
|
||||
Game_Modify.onLocationInfo = function (_locationInfo) {
|
||||
if (window.SubGameHooks && SubGameHooks.onLocationInfo) return SubGameHooks.onLocationInfo(_locationInfo);
|
||||
};
|
||||
|
||||
// A 类:进入游戏界面创建牌桌之前,无 hook 即 no-op
|
||||
Game_Modify.onCreateDesk = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.onCreateDesk) return SubGameHooks.onCreateDesk(roomtype);
|
||||
};
|
||||
|
||||
// B 类:获取是否开启视频功能,无 hook 返回默认值
|
||||
Game_Modify.getVideoByRoomType = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getVideoByRoomType) return SubGameHooks.getVideoByRoomType(roomtype);
|
||||
return 1;
|
||||
};
|
||||
|
||||
// B 类:获取房间顶部描述数组,无 hook 返回默认文案数组
|
||||
Game_Modify.getRoomTopDescAry = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getRoomTopDescAry) return SubGameHooks.getRoomTopDescAry(roomtype);
|
||||
return ["" + roomtype];
|
||||
};
|
||||
|
||||
// A 类:星星场房间列表,无 hook 即 no-op
|
||||
Game_Modify.getShareRoom = function (_msg) {
|
||||
if (window.SubGameHooks && SubGameHooks.getShareRoom) return SubGameHooks.getShareRoom(_msg);
|
||||
};
|
||||
|
||||
// A 类:玩家自己退出房间,无 hook 即 no-op
|
||||
Game_Modify.myExitRoom = function (seat) {
|
||||
if (window.SubGameHooks && SubGameHooks.myExitRoom) return SubGameHooks.myExitRoom(seat);
|
||||
};
|
||||
|
||||
// A 类:接收到换座包触发,无 hook 即 no-op
|
||||
Game_Modify.changeSeat = function (seat1, seat2) {
|
||||
if (window.SubGameHooks && SubGameHooks.changeSeat) return SubGameHooks.changeSeat(seat1, seat2);
|
||||
};
|
||||
|
||||
// A 类:关闭 vip 选项时调用,无 hook 即 no-op
|
||||
Game_Modify.onCloseVip = function () {
|
||||
if (window.SubGameHooks && SubGameHooks.onCloseVip) return SubGameHooks.onCloseVip();
|
||||
};
|
||||
|
||||
// B 类:判断房间是否为金币场,无 hook 返回默认值(0=非金币场)
|
||||
Game_Modify.getRoomMode = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getRoomMode) return SubGameHooks.getRoomMode(roomtype);
|
||||
return 0;
|
||||
};
|
||||
|
||||
// B 类:获取房间最大玩家数量,无 hook 返回默认值
|
||||
Game_Modify.getMaxPlayerCount = function (roomtype) {
|
||||
if (window.SubGameHooks && SubGameHooks.getMaxPlayerCount) return SubGameHooks.getMaxPlayerCount(roomtype);
|
||||
// 默认值依赖全局 Game_Config(须在本模板之前加载);无则回退 4
|
||||
return (Game_Config.Max && Game_Config.Max.PlayerCnt) || 4;
|
||||
};
|
||||
|
||||
// B 类:更新玩家信息 UI,无 hook 返回 false(让平台默认处理)
|
||||
Game_Modify.updatePlayerInfoUI = function (targetSeat) {
|
||||
if (window.SubGameHooks && SubGameHooks.updatePlayerInfoUI) return SubGameHooks.updatePlayerInfoUI(targetSeat);
|
||||
return false;
|
||||
};
|
||||
Reference in New Issue
Block a user