Files
hjha-server/GameModule/GlobalManager/GameInfo.cs
xiaoou e9616125ce feat: initial commit - HJHA game server full source
6 major server modules (PdkFriendServer/GlobalSever/ServerCore/GameModule/GameNetModule) +
game logic (GameFix/GameDAL/ServerData) +
network layer (NetWorkMessage) +
data layer (ObjectModel) +
utilities (MrWu/Core/Config/CloudAPI/dll) +
adapters (zyxAdapter/base)

.NET 8.0 C# solution, 16 projects, 958 source files
2026-07-07 12:02:15 +08:00

658 lines
20 KiB
C#

/********************************
*
* 作者:吴隆健
* 创建时间: 2019/6/28 16:51:21
*
********************************/
using System;
using Server.Config;
using System.Text;
using Game.Player;
using MrWu.Basic;
using MrWu.Debug;
using Game.Robot;
using MrWu.Time;
namespace Server
{
/// <summary>
/// 游戏信息
/// </summary>
public class GameSerInfo
{
/// <summary>
/// 游戏名称
/// </summary>
public string name;
/// <summary>
/// 服务器id
/// </summary>
public int gameid;
/// <summary>
/// 客户端id
/// </summary>
public int clientid;
/// <summary>
/// 模块id
/// </summary>
public int moduleid;
/// <summary>
/// 玩家数量
/// </summary>
public int playerCount;
/// <summary>
/// 真人数量
/// </summary>
public int personCount;
/// <summary>
/// 房间数量
/// </summary>
public int roomCnt;
/// <summary>
/// 厅数量
/// </summary>
public int tingCnt;
/// <summary>
/// 桌子数量
/// </summary>
public int deskCnt;
/// <summary>
/// 开战次数
/// </summary>
public long warCnt;
/// <summary>
/// 运行的桌子
/// </summary>
public int runDeskCnt;
/// <summary>
/// 服务器赢的钱
/// </summary>
public long winMoney;
/// <summary>
/// 税收
/// </summary>
public long taxMoney;
/// <summary>
/// 总机器人数量
/// </summary>
public int RobotCnt;
/// <summary>
/// 闲置的机器人数量
/// </summary>
public int idleRobotCnt;
/// <summary>
/// 是否开启朋友房
/// </summary>
public bool openFriend;
/// <summary>
/// 是否开启金币房
/// </summary>
public bool openGrid;
/// <summary>
/// 是否开启回放
/// </summary>
public bool openhuifang;
/// <summary>
/// 消耗的房卡数量
/// </summary>
public long deFangKa;
/// <summary>
/// 登录次数
/// </summary>
public long loginCnt;
/// <summary>
/// 重连次数
/// </summary>
public long reConnectionCnt;
/// <summary>
/// 影子数量
/// </summary>
public int shadowCnt;
/// <summary>
/// 更新信息
/// </summary>
public virtual void Update()
{
GameConfig gameConfig = ServerConfigManager.Instance.GameConfig;
name = gameConfig.GameName;
openFriend = gameConfig.OpenFriend == 1;
openGrid = gameConfig.OpenGold == 1;
gameid = gameConfig.GameId;
clientid = gameConfig.ClientId;
moduleid = ServerConfigManager.Instance.NodeId;
RobotCnt = RobotController.instance.RobotCnt;
idleRobotCnt = RobotController.instance.idleRobotCnt;
playerCount = PlayerCollection.Instance.PlayerCnt;
RobotCnt = PlayerCollection.Instance.RobotCnt;
roomCnt = GameManager.instance.roomCnt;
tingCnt = GameManager.instance.tingCnt;
winMoney = GameManager.instance.winmoney;
taxMoney = GameManager.instance.taxmoney;
deFangKa = GameManager.instance.DelFangKa;
loginCnt = GameManager.instance.loginCnt;
reConnectionCnt = GameManager.instance.reConnection;
deskCnt = GameManager.instance.deskCnt;
runDeskCnt = deskCnt - GameManager.instance.idleDeskCnt;
warCnt = GameManager.instance.warCnt;
personCount = playerCount - RobotCnt;
}
/// <summary>
/// 输出
/// </summary>
/// <returns></returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
int wight = -15;
sb.AppendLine(BaseFun.Align("名称:", name, wight));
sb.AppendLine(BaseFun.Align("服务器id:", gameid, wight));
sb.AppendLine(BaseFun.Align("客户端id:", clientid, wight));
sb.AppendLine(BaseFun.Align("模块id:", moduleid, wight));
sb.AppendLine(BaseFun.Align("朋友房:", openFriend ? "开启" : "关闭", wight));
sb.AppendLine(BaseFun.Align("金币房:", openGrid ? "开启" : "关闭", wight));
sb.AppendLine(BaseFun.Align("玩家数量:", playerCount, wight));
sb.AppendLine(BaseFun.Align("真人数量:", personCount, wight));
sb.AppendLine(BaseFun.Align("房间数量:", roomCnt, wight));
sb.AppendLine(BaseFun.Align("厅数量:", tingCnt, wight));
sb.AppendLine(BaseFun.Align("桌子数量:", deskCnt, wight));
sb.AppendLine(BaseFun.Align("运行的桌子数:", runDeskCnt, wight));
sb.AppendLine(BaseFun.Align("赢的钱:", winMoney, wight));
sb.AppendLine(BaseFun.Align("税收:", taxMoney, wight));
sb.AppendLine(BaseFun.Align("机器人数量:", RobotCnt, wight));
sb.AppendLine(BaseFun.Align("闲置机器人数量:", idleRobotCnt, wight));
sb.AppendLine(BaseFun.Align("消耗的房卡:", deFangKa, wight));
sb.AppendLine(BaseFun.Align("开战次数:", warCnt, wight));
sb.AppendLine(BaseFun.Align("登录人次:", loginCnt, wight));
sb.AppendLine(BaseFun.Align("重连人次:", reConnectionCnt, wight));
sb.AppendLine(BaseFun.Align("影子数量:", shadowCnt, wight));
return sb.ToString();
}
}
/// <summary>
/// 城堡信息
/// </summary>
public class CastleSerInfo
{
/// <summary>
/// 是否有这个城堡
/// </summary>
public bool isHave;
/// <summary>
/// id
/// </summary>
public int id;
/// <summary>
/// 最小可进游戏币
/// </summary>
public int minMoney;
/// <summary>
/// 最大可进游戏币
/// </summary>
public int maxMoney;
/// <summary>
/// 税收
/// </summary>
public int tax;
/// <summary>
/// 赔率
/// </summary>
public int peilv;
/// <summary>
/// 经验
/// </summary>
public int exp;
/// <summary>
/// 赢的钱
/// </summary>
public long winMoney;
/// <summary>
/// 税收的钱
/// </summary>
public long taxMoney;
/// <summary>
/// 玩家数量
/// </summary>
public int playerCnt;
/// <summary>
/// 真人数量
/// </summary>
public int personCnt;
/// <summary>
/// 机器人数量
/// </summary>
public int robotCnt;
/// <summary>
/// 档数/等级
/// </summary>
public int level;
/// <summary>
/// 更新
/// </summary>
public virtual void Update(int id)
{
isHave = id >= 0 && id < GameManager.instance.roomCnt;
if (isHave)
{
this.id = id;
var room = GameManager.instance.FindRoom(id);
minMoney = room.config.MinMoney;
maxMoney = room.config.MaxMoney;
tax = room.config.Tax;
peilv = room.config.BeiLv;
exp = room.config.Exp;
winMoney = room.winmoney;
taxMoney = room.taxmoney;
playerCnt = room.playerCount;
robotCnt = room.robotCount;
personCnt = playerCnt - robotCnt;
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
int wight = -15;
if (!isHave)
sb.Append("没有城堡");
else
{
sb.AppendLine(BaseFun.Align("城堡id:", id, wight));
sb.AppendLine(BaseFun.Align("最低游戏币:", minMoney, wight));
sb.AppendLine(BaseFun.Align("最高游戏币:", maxMoney, wight));
sb.AppendLine(BaseFun.Align("税收:", tax, wight));
sb.AppendLine(BaseFun.Align("经验值:", exp, wight));
sb.AppendLine(BaseFun.Align("赔率:", peilv, wight));
sb.AppendLine(BaseFun.Align("赢的钱:", winMoney, wight));
sb.AppendLine(BaseFun.Align("税收的钱", taxMoney, wight));
sb.AppendLine(BaseFun.Align("玩家数量:", playerCnt, wight));
sb.AppendLine(BaseFun.Align("真人数量:", personCnt, wight));
sb.AppendLine(BaseFun.Align("机器人数量:", robotCnt, wight));
}
return sb.ToString();
}
}
/// <summary>
/// 服务器厅信息
/// </summary>
public class TingSerInfo
{
/// <summary>
/// 是否存在厅
/// </summary>
public bool isHave;
/// <summary>
/// 厅id
/// </summary>
public int id;
/// <summary>
/// 玩家数量
/// </summary>
public int playerCnt;
/// <summary>
/// 桌子数量
/// </summary>
public int deskCnt;
/// <summary>运行中的桌子数量
/// </summary>
public int runDeskCnt;
/// <summary>
/// 机器人数量
/// </summary>
public int robotCnt;
/// <summary>
/// 真人数量
/// </summary>
public int personCnt;
/// <summary>
/// 最小开战人数
/// </summary>
public int warCnt;
/// <summary>
/// 最大开战人数
/// </summary>
public int maxCnt;
/// <summary>
/// 总的开战次数
/// </summary>
public long allWarCnt;
/// <summary>
/// 机器人胜利次数
/// </summary>
public long allRobotWinCnt;
/// <summary>
/// 总的开战时间
/// </summary>
public long totalWarTime;
/// <summary>
/// 平均开战时间
/// </summary>
public long avgWarTime;
/// <summary>
/// 最长战斗时间
/// </summary>
public long maxWarTime;
/// <summary>
/// 最短战斗时间
/// </summary>
public long minWarTime;
/// <summary>
/// 税收的金额
/// </summary>
public long taxMoney;
/// <summary>
/// 赢取的金额
/// </summary>
public long winMoney;
/// <summary>
/// 更新厅信息
/// </summary>
public virtual void Update(int id)
{
isHave = id >= 0 && id < GameManager.instance.tingCnt;
if (isHave)
{
this.id = id;
var ting = GameManager.instance.FindTing(id);
deskCnt = ting.Count;
warCnt = ting.config.MinPlayerCnt;
maxCnt = ting.config.MaxPlayerCnt;
playerCnt = ting.PlayerCnt;
robotCnt = ting.RobotCnt;
personCnt = playerCnt - robotCnt;
runDeskCnt = ting.WarCount;
allWarCnt = ting.warCnt;
totalWarTime = ting.totalwarTime;
avgWarTime = ting.avgWarTime;
taxMoney = ting.taxmoney;
winMoney = ting.winmoney;
minWarTime = ting.minWarTime;
maxWarTime = ting.maxWarTime;
allRobotWinCnt = ting.robotWinCnt;
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
int wight = -15;
if (!isHave)
sb.Append("没有厅");
else
{
sb.AppendLine(BaseFun.Align("厅id:", id, wight));
sb.AppendLine(BaseFun.Align("玩家数量:", playerCnt, wight));
sb.AppendLine(BaseFun.Align("桌子数量:", deskCnt, wight));
sb.AppendLine(BaseFun.Align("运行的桌子数量:", runDeskCnt, wight));
sb.AppendLine(BaseFun.Align("机器人数量:", robotCnt, wight));
sb.AppendLine(BaseFun.Align("真人数量:", personCnt, wight));
sb.AppendLine(BaseFun.Align("最小开战人数:", warCnt, wight));
sb.AppendLine(BaseFun.Align("最大开战人数:", maxCnt, wight));
sb.AppendLine(BaseFun.Align("战斗次数:", allWarCnt, wight));
sb.AppendLine(BaseFun.Align("机器人胜利次数:", allRobotWinCnt, wight));
sb.AppendLine(BaseFun.Align("税收:", taxMoney, wight));
sb.AppendLine(BaseFun.Align("赢取:", winMoney, wight));
sb.AppendLine(BaseFun.Align("总开战时间", totalWarTime, wight));
sb.AppendLine(BaseFun.Align("平均战斗时间", avgWarTime, wight));
sb.AppendLine(BaseFun.Align("最短战斗时间", minWarTime, wight));
sb.AppendLine(BaseFun.Align("最长战斗时间", maxWarTime, wight));
}
return sb.ToString();
}
}
/// <summary>
/// 桌子服务器信息
/// </summary>
public class DeskSerInfo
{
/// <summary>
/// 是否存在
/// </summary>
public bool isHave;
/// <summary>
/// 厅id
/// </summary>
public int tingid;
/// <summary>
/// 桌子id
/// </summary>
public int id;
/// <summary>
/// 房号
/// </summary>
public string roomNum;
/// <summary>
/// 玩家数量
/// </summary>
public int PlayerCnt;
/// <summary>
/// 桌子状态
/// </summary>
public DeskState state;
/// <summary>
/// 开战时间
/// </summary>
public DateTime warTime;
/// <summary>
/// 玩家信息
/// </summary>
public PlayerInfo[] pls;
/// <summary>
/// 赢取的金额
/// </summary>
public long winmoney;
/// <summary>
/// 税收金额
/// </summary>
public long taxmoney;
/// <summary>
/// 玩家信息
/// </summary>
public class PlayerInfo
{
/// <summary>
/// 玩家的id
/// </summary>
public int id;
/// <summary>
/// 玩家的userid
/// </summary>
public int userid;
/// <summary>
/// 玩家的昵称
/// </summary>
public string nickname;
/// <summary>
/// 是否存在玩家
/// </summary>
public bool isHave;
}
/// <summary>
///
/// </summary>
public virtual void Update(int tingid, int deskid)
{
if (tingid < 0 || tingid >= GameManager.instance.tingCnt)
{
Debug.Log("update_无此厅id:" + tingid + "," + GameManager.instance.tingCnt);
isHave = false;
return;
}
var ting = GameManager.instance.FindTing(tingid);
if (deskid < 0 || deskid >= ting.Count)
{
Debug.Log("update_无此桌子:" + deskid + "," + ting.Count);
isHave = false;
return;
}
isHave = true;
var desk = ting.desks[deskid];
if (desk.deskinfo != null)
{
this.roomNum = desk.deskinfo.roomNum;
}
else
{
this.roomNum = null;
}
this.id = deskid;
this.PlayerCnt = desk.PlayerCnt;
this.tingid = tingid;
this.state = desk.state;
int len = desk.Count;
this.warTime = desk.warTime;
this.taxmoney = desk.taxmoney;
this.winmoney = desk.winmoney;
this.pls = new PlayerInfo[desk.Count];
for (int i = 0; i < len; i++)
{
PlayerInfo pl = new PlayerInfo();
pl.isHave = desk[i] != null;
if (pl.isHave)
{
pl.id = desk[i].id;
pl.nickname = desk[i].nickname;
pl.userid = desk[i].userid;
}
pls[i] = pl;
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override string ToString()
{
StringBuilder sb = new StringBuilder();
int wight = -15;
if (!isHave)
sb.Append("没有桌子");
else
{
if (!string.IsNullOrEmpty(roomNum))
{
sb.AppendLine(BaseFun.Align("桌子号:", roomNum, wight));
}
sb.AppendLine(BaseFun.Align("桌子id:", id, wight));
sb.AppendLine(BaseFun.Align("厅id:", tingid, wight));
sb.AppendLine(BaseFun.Align("人数:", PlayerCnt, wight));
sb.AppendLine(BaseFun.Align("开战时间", warTime.TimeToString(), wight));
sb.AppendLine(BaseFun.Align("税收:", taxmoney, wight));
sb.AppendLine(BaseFun.Align("赢取:", winmoney, wight));
string statestr = string.Empty;
if ((state & DeskState.Idle) > 0)
statestr += "闲置中/";
if ((state & DeskState.Queue) > 0)
statestr += "排队中/";
if ((state & DeskState.War) > 0)
statestr += "开战中/";
sb.AppendLine(BaseFun.Align("状态:", statestr, wight));
sb.AppendLine("所有玩家:");
int len = pls.Length;
for (int i = 0; i < len; i++)
{
sb.AppendLine("位置" + i + ":");
if (pls[i].isHave)
{
// 这个位置有人
sb.AppendLine(BaseFun.Align("id:", pls[i].id, wight));
sb.AppendLine(BaseFun.Align("userid:", pls[i].userid, wight));
sb.AppendLine(BaseFun.Align("nickname:", pls[i].nickname, wight));
}
}
}
return sb.ToString();
}
}
}