using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using GameData;
using GameMessage;
using MrWu.Time;
using Server;
using Debug = MrWu.Debug.Debug;
using GameData.Club;
namespace ObjectModel.Club
{
///
/// 俱乐部比赛 表实体
///
public class ClubMatch
{
///
/// 联赛的俱乐部比赛数据
///
public ClubMatch LeagueClubMatch;
///
/// 开启中
///
public bool IsOpening;
///
/// 自增ID 主键 0是新增 其他是修改
///
public int ClubMatchId;
///
/// 俱乐部Id 索引
///
public int ClubId;
///
/// 比赛名称
///
public string ClubMatchName;
private DateTime _MatchStartTime;
///
/// 比赛开始时间
///
public DateTime MatchStartTime
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.MatchStartTime;
}
return _MatchStartTime;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("MatchStartTime 当前比赛数据属于联赛,不能修改!");
}
_MatchStartTime = value;
}
}
private DateTime _MatchEndTime;
///
/// 比赛结束时间
///
public DateTime MatchEndTime
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.MatchEndTime;
}
return _MatchEndTime;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("MatchEndTime 当前比赛数据属于联赛,不能修改!");
}
_MatchEndTime = value;
}
}
private int _DieOutNum;
///
/// 比赛淘汰分值
///
public int DieOutNum
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.DieOutNum;
}
return _DieOutNum;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("DieOutNum 当前比赛的数据属于联赛,不能修改!");
}
_DieOutNum = value;
}
}
private DateTime _CreateTime;
///
/// 创建时间
///
public DateTime CreateTime {
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.CreateTime;
}
return _CreateTime;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("CreateTime 当前比赛的数据属于联赛,不能修改!");
}
_CreateTime = value;
}
}
private int _StatusFlag;
///
/// 比赛状态 1比赛中 2结束
///
public int StatusFlag
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.StatusFlag;
}
return _StatusFlag;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("StatusFlag 当前比赛数据属于联赛,不能修改!");
}
_StatusFlag = value;
}
}
private bool _AutoOpen;
///
/// 是否自动开启下一场比赛
///
public bool AutoOpen
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.AutoOpen;
}
return _AutoOpen;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("AutoOpen 当前比赛数据属于联赛,不能修改!");
}
_AutoOpen = value;
}
}
private int _HowTopUser;
///
/// --前多少名正数玩家自动进入下一轮比赛
/// 该值表示是否是联赛,小于0是联赛,该值存储了联赛的ClubId
///
public int HowTopUser
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.HowTopUser;
}
return _HowTopUser;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("HowTopUser 当前比赛数据属于联赛,不能修改!");
}
_HowTopUser = value;
}
}
///
/// 第几场比赛
///
public int Round;
private int _MatchRate;
///
/// 比赛频率 单位为天
///
public int MatchRate
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.MatchRate;
}
return _MatchRate;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("MatchRate 当前比赛数据属于联赛,不能修改!");
}
_MatchRate = value;
}
}
private int _VisibleDesk;
///
/// 普通成员显示的桌子数量
///
public int VisibleDesk
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch._VisibleDesk;
}
return _VisibleDesk;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("VisibleDesk 当前比赛数据属于联赛,不能修改!");
}
_VisibleDesk = value;
}
}
private byte _isOnlyVisibleMyClub;
///
/// 是否只显示自己俱乐部的桌子--只有联赛才会能体现出这个设置
/// 1不是 0是显示自己俱乐部的桌子
///
public byte isOnlyVisibleMyClub
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch._isOnlyVisibleMyClub;
}
return _isOnlyVisibleMyClub;
}
set
{
_isOnlyVisibleMyClub = value;
}
}
private byte _isVisibleScoreBak;
///
/// 是否显示淘汰分 1显示 0不显示(默认)
///
public byte isVisibleScoreBak
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch._isVisibleScoreBak;
}
return _isVisibleScoreBak;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("isVisibleScoreBak 当前比赛数据属于联赛,不能修改!");
}
_isVisibleScoreBak = value;
}
}
private byte _isScoreReset;
///
/// 每轮比赛开始积分是否清零 1清零 0不清零(默认)
///
public byte isScoreReset
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch._isScoreReset;
}
return _isScoreReset;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("isScoreReset 当前比赛数据属于联赛,不能修改!");
}
_isScoreReset = value;
}
}
private List _MatchPlayWays = new List();
///
/// 比赛关联的玩法 数据库这个字段用string存储 MatchPlayWayId,用逗号分隔。
///
public List MatchPlayWays
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch.MatchPlayWays;
}
return _MatchPlayWays;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("MatchPlayWays 当前比赛数据属于联赛,不能修改!");
}
_MatchPlayWays = value;
}
}
public List _BakMatchPlayWays = new List();
///
/// 备份的玩法,目的是用户删除玩法然后有的玩法该玩法已经开战了,用户开战玩家计算分。
/// 不存数据库,只在内存中。
///
public List BakMatchPlayWays
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch._BakMatchPlayWays;
}
return _BakMatchPlayWays;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("BakMatchPlayWays 当前比赛数据属于联赛,不能修改!");
}
_BakMatchPlayWays = value;
}
}
///
/// 存储比赛其他设置的Json数据
///
public string JsonData;
///
/// 比赛账号转换联赛账号的基数
///
const int ConstNum = 10000;
private MatchOtherSetting _matchOtherSetting = new MatchOtherSetting();
///
/// 比赛其他设置
///
public MatchOtherSetting matchOtherSetting
{
get
{
if (LeagueClubMatch != null)
{
return LeagueClubMatch._matchOtherSetting;
}
return _matchOtherSetting;
}
set
{
if (LeagueClubMatch != null)
{
Debug.Error("matchOtherSetting 当前比赛数据属于联赛,不能修改!");
}
_matchOtherSetting = value;
}
}
public void InitOtherSetting()
{
if (!string.IsNullOrEmpty(JsonData))
{
matchOtherSetting = JsonPack.GetData(JsonData);
}
}
public MatchOtherSetting CopyMatchOtherSetting()
{
string jsondata = GetJsonData();
return JsonPack.GetData(jsondata);
}
public string GetJsonData()
{
if (matchOtherSetting == null)
{
matchOtherSetting = new MatchOtherSetting();
}
return JsonPack.GetJsonNoIgnore(matchOtherSetting);
}
///
/// 获取联赛账号 5位数数字
///
///
public static int GetLeagueUserName(int clubMatchId)
{
return clubMatchId + ConstNum;
}
///
/// 根据联赛账号返回比赛ID
///
///
public static int GetClubMatchId(int leagueUserNameNumber)
{
return leagueUserNameNumber - ConstNum;
}
///
/// 返回对象
///
///
public static ClubMatch GetInstance(CreateClubMatchPack request, ClubMatch oldClubMatch, bool IsLeague = false)
{
DateTime endTime = DateTime.Now.Date.AddDays(request.MatchRate).AddHours(request.MatchStartTime.Hour).AddMinutes(request.MatchStartTime.Minute);
return new ClubMatch()
{
ClubMatchId = 0,
ClubId = request.ClubId,
ClubMatchName = request.ClubMatchName ?? $"{(IsLeague ? "竞技联赛" : "竞技赛")}第{GetFromRound(oldClubMatch == null ? 1 : oldClubMatch.Round + 1)}轮",
MatchStartTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, request.MatchStartTime.Hour, request.MatchStartTime.Minute, 0),
MatchEndTime = endTime,
DieOutNum = request.DieOutNum,
CreateTime = DateTime.Now,
StatusFlag = 1,
AutoOpen = request.AutoOpen,
HowTopUser = request.HowTopUser,
Round = oldClubMatch == null ? 1 : oldClubMatch.Round + 1,
MatchRate = request.MatchRate,
MatchPlayWays = MatchPlayWay.GetInstances(request),
VisibleDesk = request.VisibleDesk,
isOnlyVisibleMyClub = request.isOnlyVisibleMyClub,
isScoreReset = request.isScoreReset,
isVisibleScoreBak = request.isVisibleScoreBak
};
}
///
/// 获取界面上显示的比赛轮次
///
///
///
public static int GetFromRound(int round)
{
return (round % 5) + 1;
}
private static string GetClubMatchName(bool isLeague,int round)
{
return $"{(isLeague ? "竞技联赛" : "竞技赛")}第{GetFromRound(round + 1)}轮";
}
///
/// 返回下一轮新比赛的对象
///
///
///
public static ClubMatch GetNexMatchObject(ClubMatch oldClubMatch, bool isLeague = false)
{
if (oldClubMatch == null) return null;
DateTime endTime = DateTime.Now.Date.AddDays(oldClubMatch.MatchRate).AddHours(oldClubMatch.MatchEndTime.Hour).AddMinutes(oldClubMatch.MatchEndTime.Minute);
var result = new ClubMatch();
result.ClubMatchId = 0;
result.ClubId = oldClubMatch.ClubId;
result.ClubMatchName = GetClubMatchName(isLeague, oldClubMatch.Round);
result.MatchStartTime = DateTime.Now;
result.MatchEndTime = endTime;
result.DieOutNum = oldClubMatch.DieOutNum;
result.CreateTime = DateTime.Now;
result.StatusFlag = 1;
result.AutoOpen = oldClubMatch.AutoOpen;
result.HowTopUser = oldClubMatch.HowTopUser;
result.Round = oldClubMatch.Round + 1;
result.MatchRate = oldClubMatch.MatchRate;
result.MatchPlayWays = oldClubMatch.MatchPlayWays;
result.VisibleDesk = oldClubMatch.VisibleDesk;
result.isOnlyVisibleMyClub = oldClubMatch.isOnlyVisibleMyClub;
result.isVisibleScoreBak = oldClubMatch.isVisibleScoreBak;
result.isScoreReset = oldClubMatch.isScoreReset;
result.matchOtherSetting = oldClubMatch.CopyMatchOtherSetting();
if (result.MatchPlayWays != null)
{
foreach (var item in result.MatchPlayWays)
{
item.ClubMatchId = 0;
item.MatchPlayWayId = 0;
if (item.MaxWinnerScoreRanges != null)
{
foreach (var itemChid in item.MaxWinnerScoreRanges)
{
itemChid.MatchPlayWayId = 0;
itemChid.MaxWinnerScoreRangeId = 0;
}
}
}
}
return result;
}
///
/// 根据联赛返回 比赛对象
///
///
public static ClubMatch GetClubMatchByLeagueMatch(ClubMatch leagueMatch,ClubMatch originMatch,int clubId, int round)
{
if (leagueMatch == null) return null;
var result = new ClubMatch();
result.ClubMatchName = leagueMatch.ClubMatchName; //比赛名称不能乱改,必须与联赛一致,使用了名字做逻辑
result.LeagueClubMatch = leagueMatch;
result.ClubMatchId = 0;
result.ClubId = clubId;
result.Round = round + 1;
return result;
}
public static ClubMatchInfoResponse GetClubMatchInfoResponse(ClubMatch clubMatch)
{
ClubMatchInfoResponse response = new ClubMatchInfoResponse();
response.ClubId = clubMatch.ClubId;
response.MatchStartTime = DateTimeHelper.DateTime2TimeStamp(clubMatch.MatchStartTime);
response.MatchInfoName = clubMatch.ClubMatchName;
response.MatchEndTime = DateTimeHelper.DateTime2TimeStamp(clubMatch.MatchEndTime);
response.MatchRate = clubMatch.MatchRate;
response.DieOutNum = clubMatch.DieOutNum;
response.AutoOpen = clubMatch.AutoOpen;
response.LeagueClubId = clubMatch.HowTopUser;
response.VisibleDesk = clubMatch.VisibleDesk;
response.IsOnlyVisibleMyClub = clubMatch.isOnlyVisibleMyClub;
response.IsScoreReset = clubMatch.isScoreReset;
response.IsVisibleScoreBak = clubMatch.isVisibleScoreBak;
response.LeagueUserNameNumber = ClubMatch.GetLeagueUserName(clubMatch.ClubMatchId);
response.MatchPlayWayInfos = MatchPlayWay.GetMatchPlayWayInfos(clubMatch.MatchPlayWays);
return response;
}
///
/// 返回输出对象
///
///
///
public static CreateClubMatchPack GetCreateClubMatchResponse(ClubMatch oldClubMatch)
{
return new CreateClubMatchPack
{
ClubId = oldClubMatch.ClubId,
MatchStartTime = oldClubMatch.MatchStartTime,
ClubMatchName = oldClubMatch.ClubMatchName,
MatchEndTime = oldClubMatch.MatchEndTime,
MatchRate = oldClubMatch.MatchRate,
DieOutNum = oldClubMatch.DieOutNum,
AutoOpen = oldClubMatch.AutoOpen,
HowTopUser = oldClubMatch.HowTopUser,
VisibleDesk = oldClubMatch.VisibleDesk,
isOnlyVisibleMyClub = oldClubMatch.isOnlyVisibleMyClub,
isScoreReset = oldClubMatch.isScoreReset,
isVisibleScoreBak = oldClubMatch.isVisibleScoreBak,
LeagueUserNameNumber = ClubMatch.GetLeagueUserName(oldClubMatch.ClubMatchId),
MatchPlayWays = MatchPlayWay.GetMatchPlayWayPacks(oldClubMatch.MatchPlayWays)
};
}
///
/// 返回对象
///
///
///
public static ClubMatchInfo GetMatchInfoInstance(ClubMatch obj)
{
return new ClubMatchInfo
{
ClubMatchId = obj.ClubMatchId,
ClubMatchName = obj.ClubMatchName,
ClubId = obj.ClubId,
StatusFlag = obj.StatusFlag,
MatchStartTime = obj.MatchStartTime,
MatchEndTime = obj.MatchEndTime
};
}
public static ClubMatchData GetMatchDataInstance(ClubMatch obj)
{
ClubMatchData data = new ClubMatchData();
data.ClubMatchId = obj.ClubMatchId;
data.ClubId = obj.ClubId;
data.ClubMatchName = obj.ClubMatchName;
data.MatchStartTime = DateTimeHelper.DateTime2TimeStamp(obj.MatchStartTime);
data.MatchEndTime = DateTimeHelper.DateTime2TimeStamp(obj.MatchEndTime);
data.StatusFlag = obj.StatusFlag;
return data;
}
public void Copy2LeagueMatch()
{
ClubMatch leagueClubMatch = this.LeagueClubMatch;
this.LeagueClubMatch = null;
this._MatchStartTime = leagueClubMatch._MatchStartTime;
this._MatchEndTime = leagueClubMatch._MatchEndTime;
this._DieOutNum = leagueClubMatch._DieOutNum;
this._CreateTime = leagueClubMatch._CreateTime;
this._StatusFlag = leagueClubMatch._StatusFlag;
this._AutoOpen = leagueClubMatch._AutoOpen;
this._HowTopUser = leagueClubMatch._HowTopUser;
this._MatchRate = leagueClubMatch._MatchRate;
this._VisibleDesk = leagueClubMatch._VisibleDesk;
this._isOnlyVisibleMyClub = leagueClubMatch._isOnlyVisibleMyClub;
this._isVisibleScoreBak = leagueClubMatch._isVisibleScoreBak;
this._isScoreReset = leagueClubMatch._isScoreReset;
this._MatchPlayWays = leagueClubMatch._MatchPlayWays;
this._BakMatchPlayWays = leagueClubMatch._BakMatchPlayWays;
this._matchOtherSetting = leagueClubMatch._matchOtherSetting;
}
}
///
/// 比赛其他设置
///
public class MatchOtherSetting
{
///
/// 重赛限制 --重赛审核中的用户无法在本联赛任何俱乐部参与比赛 false不限制 true限制 默认不限制
///
public bool ReplayRestrictions;
///
/// 生存任务限制 --下一轮比赛开始时生存任务调整为默认值
///
public bool LiveTaskRestrictions;
}
///
/// 比赛玩法 表实体对象
///
public class MatchPlayWay
{
///
/// 自增Id 主键
///
public int MatchPlayWayId;
///
/// 所属竞技比赛 组合索引I_MatchPlayWay_ClubIdClubMatchId 1
///
public int ClubId;
///
/// 比赛Id 外键 组合索引I_MatchPlayWay_ClubIdClubMatchId 2
///
public int ClubMatchId;
///
/// 玩法的唯一码
///
public string weiyima;
///
/// 最低分数限制,玩家低于此分不能进入桌子
///
public int MinScore;
///
/// 桌费数值 AA
///
public int DeskCost;
///
/// 消耗方式 1AA 2大赢家
///
public int TypeMode;
///
/// 最低分值免收桌费 AA
///
public int MinFreeDeskCostNum;
///
/// 是否第一局结束前解散不计房费 true是不计 false 否计算
///
public bool IsFirstCalcDeskCost;
///
/// 小局低于多少分解散桌子
///
public int BuresMinScore;
///
/// 是否开启小局低于多少分解散房间
///
public bool IsBuresMin;
///
/// 是否开启 解散房间按实际局数计算比赛消耗
///
public bool IsRealCalcScore;
///
/// 大赢家消耗规则
///
public List MaxWinnerScoreRanges;
///
/// 每次比赛联赛活跃积分
///
public decimal LeagueDeskScore;
///
/// 深复制对象
///
///
///
///
public static T DeepCopy(T obj)
{
object retval;
using (MemoryStream ms = new MemoryStream())
{
XmlSerializer xml = new XmlSerializer(typeof(T));
xml.Serialize(ms, obj);
ms.Seek(0, SeekOrigin.Begin);
retval = xml.Deserialize(ms);
ms.Close();
}
return (T)retval;
}
///
///
///
///
///
public static List GetInstances(CreateClubMatchPack request)
{
var result = new List();
if (request.MatchPlayWays == null || request.MatchPlayWays.Count < 1)
{
return result;
}
foreach (var item in request.MatchPlayWays)
{
result.Add(new MatchPlayWay
{
MatchPlayWayId = 0,
ClubId = request.ClubId,
ClubMatchId = 0,//新增的时候要赋值
weiyima = item.weiyima,
MinScore = item.MinScore,
DeskCost = item.DeskCost,
TypeMode = item.TypeMode,
MinFreeDeskCostNum = item.MinFreeDeskCostNum,
IsBuresMin = item.IsBuresMin,
IsFirstCalcDeskCost = item.IsFirstCalcDeskCost,
IsRealCalcScore = item.IsRealCalcScore,
BuresMinScore = item.BuresMinScore,
MaxWinnerScoreRanges = item.MaxWinnerScoreRanges,
LeagueDeskScore = item.LeagueDeskScore
});
}
return result;
}
///
/// 生成一个默认的玩法
///
///
///
///
public static MatchPlayWay GetInstanceByPlayWay(PlayWay playWay, ClubMatch clubMatch)
{
return new MatchPlayWay()
{
MatchPlayWayId = 0,
ClubId = playWay.Clubid,
ClubMatchId = clubMatch.ClubMatchId,
weiyima = playWay.weiyima,
MinScore = clubMatch.DieOutNum,
DeskCost = 5,
TypeMode = 2,
MinFreeDeskCostNum = 10,
IsBuresMin = true,
IsFirstCalcDeskCost = true,
IsRealCalcScore = true,
BuresMinScore = clubMatch.DieOutNum,
MaxWinnerScoreRanges = new List() {
new MaxWinnerScoreRange{ MatchPlayWayId=0, MaxWinnerScoreRangeId=0, DeskScore=5,
MaxWinnerMinScore=0}
}
};
}
///
/// 获取玩法
///
///
///
public static List GetMatchPlayWayInfos(List matchPlayWays)
{
List result = new List();
if (matchPlayWays == null || matchPlayWays.Count < 1)
{
return result;
}
foreach (var item in matchPlayWays)
{
result.Add(new MatchPlayWayInfo
{
WeiYiMa = item.weiyima,
MinScore = item.MinScore,
DeskCost = item.DeskCost,
TypeMode = item.TypeMode,
MinFreeDeskCostNum = item.MinFreeDeskCostNum,
IsBuresMin = item.IsBuresMin,
IsFirstCalcDeskCost = item.IsFirstCalcDeskCost,
IsRealCalcScore = item.IsRealCalcScore,
BuresMinScore = item.BuresMinScore,
MaxWinnerScoreRanges = Convert2MatchMaxWinnerScoreRanges(item.MaxWinnerScoreRanges),
LeagueDeskScore = (double)item.LeagueDeskScore
});
}
return result;
}
private static List Convert2MatchMaxWinnerScoreRanges(List maxWinnerScoreRanges)
{
List result = new List();
foreach (var item in maxWinnerScoreRanges)
{
result.Add(MaxWinnerScoreRange2MatchMaxWinnerScoreRange(item));
}
return result;
}
//todo 优化使用引用池
private static MatchMaxWinnerScoreRange MaxWinnerScoreRange2MatchMaxWinnerScoreRange(MaxWinnerScoreRange maxWinnerScoreRange)
{
MatchMaxWinnerScoreRange range = new MatchMaxWinnerScoreRange();
range.DeskScore = maxWinnerScoreRange.DeskScore;
range.MaxWinnerMinScore = maxWinnerScoreRange.MaxWinnerMinScore;
return range;
}
///
/// 获取玩法
///
///
///
public static List GetMatchPlayWayPacks(List matchPlayWays)
{
var result = new List();
if (matchPlayWays == null || matchPlayWays.Count < 1)
{
return result;
}
foreach (var item in matchPlayWays)
{
result.Add(new MatchPlayWayPack
{
weiyima = item.weiyima,
MinScore = item.MinScore,
DeskCost = item.DeskCost,
TypeMode = item.TypeMode,
MinFreeDeskCostNum = item.MinFreeDeskCostNum,
IsBuresMin = item.IsBuresMin,
IsFirstCalcDeskCost = item.IsFirstCalcDeskCost,
IsRealCalcScore = item.IsRealCalcScore,
BuresMinScore = item.BuresMinScore,
MaxWinnerScoreRanges = item.MaxWinnerScoreRanges,
LeagueDeskScore = item.LeagueDeskScore
});
}
return result;
}
}
///
/// 积分记录
///
public class ClubMatchScoreNotes
{
///
/// 自增Id 主键
///
public int ScoreNotesId;
///
/// 俱乐部ID 组合索引I_ScoreNotes_ClubIdClubMatchId 1
///
public int ClubId;
///
/// 比赛ID 组合索引I_ScoreNotes_ClubIdClubMatchId 2
///
public int ClubMatchId;
///
/// 玩家Id 组合索引I_ScoreNotes_ClubIdClubMatchIdUserId 3
///
public int UserId;
///
/// 创建时间
///
public DateTime CreateTime;
///
/// 类型 1游戏结算 2群主调整比赛积分 3比赛重置 4比赛结束 5调整淘汰分
///
public int TypeId;
///
/// 操作的分值
///
public double Score;
///
/// 这把玩家扣除的桌费--这个字段只有群主自己展示
///
public double DeskScore;
///
/// 操作以后的分值
///
public double NewScore;
///
/// 获取输出对象
///
///
///
public static List GetUserScoreLogs(List lists)
{
var result = new List();
if (lists == null || lists.Count < 1)
{
return result;
}
for (int i = lists.Count - 1; i >= 0; i--)
{
var item = lists[i];
result.Add(new UserScoreLog
{
CreateTime = item.CreateTime,
TypeId = item.TypeId,
Score = item.Score,
DeskScore = item.DeskScore,
ScoreUI = item.TypeId == 1 ? item.Score - item.DeskScore : item.NewScore
});
}
return result;
}
}
///
/// 俱乐部退赛对象
///
public class ExitMatchObj
{
public int ClubId;
public List Datas;
}
///
/// 比赛玩家积分表
///
public class ClubMatchUserScore
{
///
/// 自增Id 主键
///
public int UserScoreId;
///
/// 俱乐部ID 组合索引I_UserScore_ClubIdClubMatchId
///
public int ClubId;
///
/// 比赛ID 组合索引I_UserScore_ClubIdClubMatchId
///
public int ClubMatchId;
///
/// 玩家Id
///
public int UserId;
///
/// 比赛分
///
public decimal Score;
///
/// 玩家提供的桌费 竞技赛活跃积分 房费/人数
///
public decimal DeskScore;
///
/// 如果显示淘汰分那么就是淘汰分,如果不显示就是积分备注
///
public decimal ScoreBak;
///
/// 数据更新时间
///
public DateTime UpdateTime;
///
/// 获取玩家总积分
///
/// 是否显示淘汰分
///
public decimal GetPlayScore(bool isHaveScoreBak)
{
if (isHaveScoreBak)
{
return this.Score + this.ScoreBak;
}
else
{
return this.Score;
}
}
public ClubMatchUserScore Clone()
{
return new ClubMatchUserScore
{
UserScoreId = this.UserScoreId,
ClubId = this.ClubId,
ClubMatchId = this.ClubMatchId,
UserId = this.UserId,
Score = this.Score,
DeskScore = this.DeskScore,
ScoreBak = this.ScoreBak
};
}
}
///
/// 比赛记录
///
public class ClubMatchNotes
{
///
/// 自增Id 主键
///
public long ClubMatchNotesId;
///
/// 日志类型
///
public MatchNotesEnum TypeId;
///
/// 俱乐部ID 组合索引I_ClubMatchNotes_ClubIdClubMatchId
///
public int ClubId;
///
/// 比赛ID 组合索引I_ClubMatchNotes_ClubIdClubMatchId
///
public int ClubMatchId;
///
/// 产生时间
///
public DateTime CreateTime;
///
/// 内容
///
public string Content;
///
/// 获取输出对象
///
///
///
public static List GetClubMatchNotes(List lists)
{
var result = new List();
if (lists == null || lists.Count < 1)
{
return result;
}
for (int i=lists.Count - 1; i >= 0; i--)
{
var item = lists[i];
result.Add(new ClubMatchNotesLog
{
TypeId = item.TypeId,
CreateTime = item.CreateTime,
Content = item.Content
});
//Debug.Info($"发给客户端的日志:{item.Content}");
}
return result;
}
}
}