目录结构调整

This commit is contained in:
2026-02-04 23:47:45 +08:00
parent 6938c911c3
commit 6b22238c6e
8780 changed files with 15333 additions and 574 deletions

View File

@@ -0,0 +1,77 @@
///////////////////////////////////////////////////
//////////////cls_app: 应用基础类//////////////////
///////////////////////////////////////////////////
var cls_app = cls_app || {
//构造函数
new: function(_str_appname, _obj_packet) {
/*
参数说明:
_str_appname 应用名称
_obj_packet 所有应用的总包接口对象
*/
//创建一个实例
var app = {};
// ================= 实例的公有属性 ================= //
//应用名称
app.appname = _str_appname;
//总包接口
app.packet_face = _obj_packet;
//给客户端发包函数
app.SendPack = app.packet_face.SendPack;
//给http客户端发包函数
app.SendPack_Http = app.packet_face.SendPack_Http;
//给tcp客户端发包函数
app.SendPack_Tcp = app.packet_face.SendPack_Tcp;
//将app添加到packet_face的应用列表中
app.packet_face.applist.push(app);
//模块列表 [{"face":room_face,"facename":"room_face","routename":"room"}]
app.modlist = [];
// ================= 实例的公有方法 ================= //
//TCP客户端断开
app.OnTcpDisConnected = function(_str_tcpid) {
cls_app.OnTcpDisConnected(app, _str_tcpid);
}
//处理数据包
app.ReceivePack = function(_pack) {
return cls_app.ReceivePack(app, _pack);
}
return app;
},
// ================= 所有实例的共享方法 ================= //
//TCP客户端断开
OnTcpDisConnected: function(_obj_app, _str_tcpid) {
for (var i = 0; i < _obj_app.modlist.length; i++) {
if (_obj_app.modlist[i].OnTcpDisConnected) {
_obj_app.modlist[i].OnTcpDisConnected(_str_tcpid);
}
}
},
//处理数据包
ReceivePack: function(_obj_app, _pack) {
if (typeof(_pack) == "string") {
_pack = JSON.parse(_pack); //转换json
}
//路由各个模块
for (var i = 0; i < _obj_app.modlist.length; i++) {
if (_pack.route == _obj_app.modlist[i].routename) {
if (_obj_app.modlist[i].DoPack) {
var repack = _obj_app.modlist[i].DoPack(_pack);
//发包
if (repack && _obj_app.SendPack) {
_obj_app.SendPack(repack);
}
return repack;
}
break;
}
}
}
}

View File

@@ -0,0 +1,70 @@
///////////////////////////////////////////////////
//////////////cls_mod: 模块基础类//////////////////
///////////////////////////////////////////////////
var cls_mod = cls_mod || {
//构造函数
new: function(_str_modname, _str_routename, _obj_app) {
/*
_str_modname 模块名称
_str_routename 模块的路由名称
_obj_app 所属的应用对象
*/
//创建一个实例
var mod = {};
// ================= 实例的公有属性 ================= //
//模块名称
mod.modname = _str_modname;
//路由名称
mod.routename = _str_routename;
//所属的应用
mod.app = _obj_app;
//将mod对象添加到app的模块列表中
mod.app.modlist.push(mod);
mod.app[_str_modname] = mod;
// ================= 实例的公有方法 ================= //
//收包处理
mod.DoPack = function(_msg) {
return cls_mod.DoPack(mod, _msg);
}
//输出mod
cls_mod.OutputMod(mod);
return mod;
},
DoPack: function(_obj_mod, _msg) {
if (typeof(_msg) == "string") {
_msg = JSON.parse(_msg); //转换json
}
//执行rpc
if (_msg.rpc) {
if (min_ExitsFunction(_obj_mod[_msg.rpc])) {
return _obj_mod[_msg.rpc](_msg);
}
}
},
OutputMod: function(_obj_mod) {
if (typeof global !== "undefined")
{} else {
global = {};
}
if (typeof module !== "undefined")
{} else {
module = {};
module.exports = {};
}
global[_obj_mod.modname] = _obj_mod;
global[_obj_mod.modname].DoPack = _obj_mod.DoPack;
if (module) {
module.exports[_obj_mod.modname] = _obj_mod;
}
}
}

View File

@@ -0,0 +1,89 @@
///////////////////////////////////////////////////
///////////// cls_mysql: 数据库操作 ///////////////
///////////////////////////////////////////////////
var cls_mysql = cls_mysql || {
//构造函数
new: function(url, func_fail_sendpack){
var mysql = {};
//php地址
mysql.url = url;
//发生错误时的回包函数
mysql.func_fail_sendpack = func_fail_sendpack;
//执行sql语句
mysql.execsql = function(method, sql, para, func_succ, pack) {
/*
method: php方法名 execsql/opensql
sql: 要执行的sql语句
para: 要执行的sql语句的参数数组
func_succ: sql语句执行成功后的回调函数
pack: 客户端发来的数据包执行失败的话会根据pack返回客户端执行失败的结果
*/
var data = {}
data.m = method;
data.s = sql;
data.p = para;
var strdata = JSON.stringify(data);
//将=号替换为^php收到后再替换回来以避免=号POST传参会截断的问题
strdata = strdata.replace(/\=/g,"^");
var cfg = {};
cfg.url = mysql.url;
cfg.data = "data=" + strdata;
cfg.type = "POST";
cfg.success = function(str) {
try {
var result = JSON.parse(str);
} catch(e) {
console.log(min_now() + " 数据库执行结果转换json失败.");
console.log(str);
console.log(data);
return;
}
if (result.state != 0) {
console.log(min_now() + " 请求" + mysql.url + "失败.");
console.log(result);
console.log(data);
if (pack) {
console.log(JSON.stringify(pack));
//返回客户端执行失败的结果
if (mysql.func_fail_sendpack) {
pack.data = {};
pack.data.state = result.state;
pack.data.error = result.error;
mysql.func_fail_sendpack(pack);
}
}
} else {
//执行sql成功执行回调函数
// console.log(result);
if (func_succ) {
func_succ(result.data);
}
}
};
cfg.error = function(str){
console.log(min_now() + " 请求" + mysql.url + "失败.");
console.log(str);
console.log(data);
if (pack) {
console.log(JSON.stringify(pack));
//返回客户端执行失败的结果
if (mysql.func_fail_sendpack) {
pack.data = {};
pack.data.state = 99;
pack.data.error = "请求数据库失败.";
mysql.func_fail_sendpack(pack);
}
}
};
min_http(cfg);
}
return mysql;
}
}

View File

@@ -0,0 +1,70 @@
///////////////////////////////////////////////////
////////////////// cls_pai: 单张牌 ////////////////
///////////////////////////////////////////////////
var cls_pai = cls_pai || {
//创建单张牌实例
new: function(id, score, dealowner){
/*
参数说明:
id 牌的绝对id
score 牌在游戏中的分值
dealowner 发牌状态
扑克牌的统一编码规则:
1牌面花色的定义 5:王 4:黑桃 3:红心 2:梅花 1:方块
2牌面数值的定义 1:A 2:2 3:3 ... 9:9 10:10 11:J 12:Q 13:K 53:小王 54:大王
*/
var pai = {};
//属性
pai.id = id; //绝对id即数组下标从0开始计数
pai.score = score; //牌在游戏中的分值
pai.dealowner = dealowner; //发牌状态
//-1:规则去除的牌
// 0:未发的牌,即底牌
//>0:发牌发到谁手上从1开始计数即座位编号+1座位编号是从0开始计数的
pai.playround = -1; //出牌状态
//-1:未出的牌
// 0:埋牌
//>0:牌是第几轮出出去的从1开始计数
pai.playindex = -1; //本轮中的出牌顺序从1开始计数
pai.playowner = -1; //出牌后被谁得到,与座位编号对应
//方法
pai.method = {};
//牌面花色
pai.method.get_flower = function(){
return cls_pai.get_flower(pai);
}
//牌面数值
pai.method.get_number = function(){
return cls_pai.get_number(pai);
}
return pai;
},
//获取牌面花色
get_flower: function(o_pai) {
var yu = o_pai.id % 54;
if (yu == 52 || yu == 53){ //小王大王
return 5;
}
return parseInt(yu / 13) + 1;
},
//获取牌面数值
get_number: function(o_pai) {
var yu = o_pai.id % 54;
if (yu == 52){ //小王
return 53;
}
if (yu == 53){ //大王
return 54;
}
return yu % 13 + 1;
}
}

View File

@@ -0,0 +1,15 @@
///////////////////////////////////////////////////
//////////////// cls_paiju: 单局牌局 //////////////
///////////////////////////////////////////////////
var cls_paiju = cls_paiju || {
//创建单张牌实例
new: function(){
var paiju = {};
return paiju;
}
}