public static void doAskCilentReq_RetryJoinGame(IntPtr connId, string reqData) { JObject respondJO = new JObject(); try { JObject jo = JObject.Parse(reqData); string tag = jo.GetValue("tag").ToString(); string uid = jo.GetValue("uid").ToString(); // 逻辑处理 { // 先去升级里面找 if (GameUtil.checkPlayerIsInRoom(uid)) { GameLogic.doTask_RetryJoinGame(connId, reqData); } // 再去斗地主里面找 else if (DDZ_GameUtil.checkPlayerIsInRoom(uid)) { DDZ_GameLogic.doTask_RetryJoinGame(connId, reqData); } } } catch (Exception ex) { } }
public static void onMySqlRespond(string respondData) { try { UserInfo_Game userInfo_Game = Newtonsoft.Json.JsonConvert.DeserializeObject <UserInfo_Game>(respondData); UserInfo_Game_Manager.addOneData(userInfo_Game); // 获取到玩家信息之后找到该玩家所在的房间,给同桌的玩家推送此人的信息 { // 去升级找 RoomData room = GameUtil.getRoomByUid(userInfo_Game.uid); if (room != null) { string data = Newtonsoft.Json.JsonConvert.SerializeObject(userInfo_Game); for (int i = 0; i < room.getPlayerDataList().Count; i++) { if ((!room.getPlayerDataList()[i].isOffLine()) && (room.getPlayerDataList()[i].m_uid.CompareTo(userInfo_Game.uid) != 0)) { // 发送给客户端 PlayService.m_serverUtil.sendMessage(room.getPlayerDataList()[i].m_connId, data); } } } else { // 去斗地主找 DDZ_RoomData room_ddz = DDZ_GameUtil.getRoomByUid(userInfo_Game.uid); if (room_ddz != null) { string data = Newtonsoft.Json.JsonConvert.SerializeObject(userInfo_Game); for (int i = 0; i < room_ddz.getPlayerDataList().Count; i++) { if ((!room_ddz.getPlayerDataList()[i].isOffLine()) && (room_ddz.getPlayerDataList()[i].m_uid.CompareTo(userInfo_Game.uid) != 0)) { // 发送给客户端 PlayService.m_serverUtil.sendMessage(room_ddz.getPlayerDataList()[i].m_connId, data); } } } } } } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error("Request_UserInfo_Game.onMySqlRespond----" + ex.Message + "," + respondData); // 客户端参数错误 //respondJO.Add("code", Convert.ToInt32(TLJCommon.Consts.Code.Code_ParamError)); // 发送给客户端 //LogicService.m_serverUtil.sendMessage(connId, respondJO.ToString()); } }
public DDZ_GameBase getGameBase() { DDZ_RoomData room = DDZ_GameUtil.getRoomByUid(m_uid); if (room != null) { return(room.m_gameBase); } return(null); }
private void SendData(IntPtr connId, string data) { byte[] bytes = Encoding.UTF8.GetBytes(data); byte[] len = BitConverter.GetBytes((ushort)bytes.Length); byte[] flag = BitConverter.GetBytes(m_packEndFlag); byte[] sendBytes = CombineBytes(flag, CombineBytes(len, bytes)); //LogUtil.getInstance().addDebugLog($"发送数据长度:{sendBytes.Length},body:{bytes.Length},flag:{flag.Length},data:{data}"); if (m_tcpServer.Send(connId, sendBytes, sendBytes.Length)) { // 日志 { PlayerData playerData = GameUtil.getPlayerDataByConnId(connId); if (playerData != null) { RoomData room = GameUtil.getRoomByUid(playerData.m_uid); if (room != null) { LogUtil.getInstance().writeRoomLog(room, "发送消息给客户端:" + data); } else { LogUtil.getInstance().addDebugLog("发送消息给客户端:" + data); } } else { DDZ_PlayerData ddz_playerData = DDZ_GameUtil.getPlayerDataByConnId(connId); if (ddz_playerData != null) { DDZ_RoomData room = DDZ_GameUtil.getRoomByUid(ddz_playerData.m_uid); if (room != null) { LogUtil.getInstance().writeRoomLog(room, "发送消息给客户端:" + data); } else { LogUtil.getInstance().addDebugLog("发送消息给客户端:" + data); } } else { LogUtil.getInstance().addDebugLog("发送消息给客户端:" + data); } } } } else { Debug.WriteLine("发送给客户端失败:" + data); } }
void timerCallback_offLine(object obj) { try { switch ((TimerType)obj) { case TimerType.TimerType_qiangDizhu: { DDZ_RoomData room = DDZ_GameUtil.getRoomByUid(m_uid); if (room != null) { DDZ_TrusteeshipLogic.trusteeshipLogic_QiangDiZhu(room.m_gameBase, room, this); } } break; case TimerType.TimerType_jiaBang: { DDZ_RoomData room = DDZ_GameUtil.getRoomByUid(m_uid); if (room != null) { DDZ_TrusteeshipLogic.trusteeshipLogic_JiaBang(room.m_gameBase, room, this); } } break; case TimerType.TimerType_outPoker: { DDZ_RoomData room = DDZ_GameUtil.getRoomByUid(m_uid); if (room.m_curOutPokerPlayer.m_uid.CompareTo(m_uid) != 0) { string str = "DDZ_PlayerData.timerCallback case TimerType.TimerType_outPoker错误:当前出牌人应该是:" + room.m_curOutPokerPlayer.m_uid + ",但是现在出牌倒计时结束的人是:" + m_uid; LogUtil.getInstance().writeRoomLog(room, str); return; } if (!m_isTuoGuan) { m_isTuoGuan = true; changeTuoGuanState(); } DDZ_TrusteeshipLogic.trusteeshipLogic_OutPoker(room.m_gameBase, room, this); } break; } } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error("DDZ_PlayerData----" + "timerCallback: " + ex); } }
public static void doAskCilentReq_IsJoinGame(IntPtr connId, string reqData) { JObject respondJO = new JObject(); try { JObject jo = JObject.Parse(reqData); string tag = jo.GetValue("tag").ToString(); string uid = jo.GetValue("uid").ToString(); // 逻辑处理 { respondJO.Add("tag", tag); // 先去升级里面找 if (GameUtil.checkPlayerIsInRoom(uid)) { respondJO.Add("isJoinGame", 1); respondJO.Add("gameRoomType", GameUtil.getRoomByUid(uid).m_gameRoomType); } // 再去斗地主里面找 else if (DDZ_GameUtil.checkPlayerIsInRoom(uid)) { respondJO.Add("isJoinGame", 1); respondJO.Add("gameRoomType", DDZ_GameUtil.getRoomByUid(uid).m_gameRoomType); } else { respondJO.Add("isJoinGame", 0); } // 发送给客户端 PlayService.m_serverUtil.sendMessage(connId, respondJO.ToString()); } } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error("NetRespond_IsJoinGame----" + ex.Message); // 客户端参数错误 respondJO.Add("code", Convert.ToInt32(TLJCommon.Consts.Code.Code_ParamError)); //// 发送给客户端 //PlayService.m_serverUtil.sendMessage(connId, respondJO.ToString()); } }
// 游戏结束 public override void gameOver(DDZ_RoomData room) { try { room.setRoomState(DDZ_RoomState.RoomState_end); LogUtil.getInstance().writeRoomLog(room, m_logFlag + "----" + ":比赛结束,roomid = :" + room.getRoomId()); // 游戏在线统计 for (int i = 0; i < room.getPlayerDataList().Count; i++) { Request_OnlineStatistics.doRequest(room.getPlayerDataList()[i].m_uid, room.getRoomId(), room.m_gameRoomType, room.getPlayerDataList()[i].m_isAI, (int)Request_OnlineStatistics.OnlineStatisticsType.OnlineStatisticsType_exit); } // 是否春天 { if (room.m_winPlayerData.m_isDiZhu == 1) { bool isChunTian = true; for (int i = 0; i < room.getPlayerDataList().Count; i++) { if (room.getPlayerDataList()[i].m_isDiZhu == 0) { if (room.getPlayerDataList()[i].m_outPokerCiShu > 0) { isChunTian = false; break; } } } if (isChunTian) { room.m_beishu_chuntian = 2; } } else { bool isChunTian = true; for (int i = 0; i < room.getPlayerDataList().Count; i++) { if (room.getPlayerDataList()[i].m_isDiZhu == 1) { if (room.getPlayerDataList()[i].m_outPokerCiShu > 1) { isChunTian = false; break; } } } if (isChunTian) { room.m_beishu_chuntian = 2; } } } // 计算每个玩家的金币(积分) DDZ_GameUtil.setPlayerScore(room, false); // 加减金币 { for (int i = 0; i < room.getPlayerDataList().Count; i++) { // 加、减玩家金币值 Request_ChangeUserWealth.doRequest(room.getPlayerDataList()[i].m_uid, 1, room.getPlayerDataList()[i].m_score, "斗地主结算"); } } //// 逻辑处理 //{ // List<string> winnerList = new List<string>(); // // 游戏数据统计 // Request_GameStatistics.doRequest(room, winnerList); //} { JObject respondJO = new JObject(); { respondJO.Add("tag", room.m_tag); respondJO.Add("playAction", (int)TLJCommon.Consts.DDZ_PlayAction.PlayAction_GameOver); respondJO.Add("isDiZhuWin", room.m_winPlayerData.m_isDiZhu); for (int i = 0; i < room.getPlayerDataList().Count; i++) { JObject jo = new JObject(); jo.Add("score", room.getPlayerDataList()[i].m_score); float beishu = room.m_maxJiaoFenPlayerData.m_jiaofen * room.m_beishu_chuntian * room.m_beishu_bomb; jo.Add("beishu", (int)beishu * (room.getPlayerDataList()[i].m_isJiaBang + 1)); respondJO.Add(room.getPlayerDataList()[i].m_uid, jo); } // 倍数 for (int i = 0; i < room.getPlayerDataList().Count; i++) { DDZ_PlayerData playerData = room.getPlayerDataList()[i]; JArray ja = new JArray(); { ja.Add("初始倍数X" + room.m_maxJiaoFenPlayerData.m_jiaofen); if (playerData.m_isJiaBang == 1) { ja.Add("加棒X2"); } if (room.m_beishu_bomb > 1) { ja.Add("炸弹X" + room.m_beishu_bomb); } if (room.m_beishu_chuntian > 1) { ja.Add("春天X" + room.m_beishu_chuntian); } } respondJO.Add("beishu_" + playerData.m_uid, ja); } } for (int i = 0; i < room.getPlayerDataList().Count; i++) { // 推送给客户端 if (!room.getPlayerDataList()[i].isOffLine()) { PlayService.m_serverUtil.sendMessage(room.getPlayerDataList()[i].m_connId, respondJO.ToString()); } } } DDZ_GameLogic.removeRoom(this, room, true); } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error(m_logFlag + "gameOver异常: " + ex); } }
public override bool doTaskPlayerCloseConn(string uid) { try { DDZ_RoomData room = getRoomByUid(uid); if (room == null) { return(false); } DDZ_PlayerData playerData = DDZ_GameUtil.getPlayerDataByUid(uid); if (playerData == null) { return(false); } //// 记录逃跑数据 //if ((m_roomList[i].m_roomState != RoomState.RoomState_waiting) && // (m_roomList[i].m_roomState != RoomState.RoomState_end)) //{ // Request_RecordUserGameData.doRequest(room.getPlayerDataList()[i].m_uid, room.m_gameRoomType, (int)TLJCommon.Consts.GameAction.GameAction_Run); //} switch (room.getRoomState()) { case DDZ_RoomState.RoomState_waiting: { if (!playerData.isOffLine()) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":玩家在本桌满人之前退出:" + playerData.m_uid); room.getPlayerDataList().Remove(playerData); if (DDZ_GameUtil.checkRoomNonePlayer(room)) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此房间人数为0,解散房间:" + room.getRoomId()); DDZ_GameLogic.removeRoom(this, room, true); } } else { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此玩家连续退出/掉线:" + playerData.m_uid); } } break; case DDZ_RoomState.RoomState_fapai: case DDZ_RoomState.RoomState_qiangdizhu: case DDZ_RoomState.RoomState_jiabang: case DDZ_RoomState.RoomState_gaming: { if (!playerData.isOffLine()) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":玩家在游戏中退出:" + playerData.m_uid); playerData.setIsOffLine(true); } else { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此玩家连续退出/掉线:" + playerData.m_uid); } } break; case DDZ_RoomState.RoomState_end: { if (!playerData.isOffLine()) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":玩家在本桌打完后退出:" + playerData.m_uid); room.getPlayerDataList().Remove(playerData); if (room.getPlayerDataList().Count == 0) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此房间人数为0,解散房间:" + room.getRoomId()); DDZ_GameLogic.removeRoom(this, room, true); } else { // 如果房间人数为空,则删除此房间 { if (DDZ_GameUtil.checkRoomNonePlayer(room)) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此房间人数为0,解散房间:" + room.getRoomId()); DDZ_GameLogic.removeRoom(this, room, true); } } } } else { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此玩家连续退出/掉线:" + playerData.m_uid); } } break; default: { if (!playerData.isOffLine()) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":玩家在未知阶段退出:" + playerData.m_uid); room.getPlayerDataList().Remove(playerData); if (DDZ_GameUtil.checkRoomNonePlayer(room)) { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此房间人数为0,解散房间:" + room.getRoomId()); DDZ_GameLogic.removeRoom(this, room, true); } } else { LogUtil.getInstance().addDebugLog(m_logFlag + "----" + ":此玩家连续退出/掉线:" + playerData.m_uid); } } break; } return(true); } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error(m_logFlag + "----" + ":doTaskPlayerCloseConn异常:" + ex); } return(false); }
void doTask_JoinGame(IntPtr connId, string data) { try { JObject jo = JObject.Parse(data); string tag = jo.GetValue("tag").ToString(); string uid = jo.GetValue("uid").ToString(); string gameroomtype = jo.GetValue("gameroomtype").ToString(); int playAction = Convert.ToInt32(jo.GetValue("playAction")); DDZ_RoomData room = null; // 检测该玩家是否已经加入房间 if (DDZ_GameUtil.checkPlayerIsInRoom(uid)) { // 给客户端回复 { JObject respondJO = new JObject(); respondJO.Add("tag", tag); respondJO.Add("playAction", playAction); respondJO.Add("gameRoomType", DDZ_GameUtil.getRoomByUid(uid).m_gameRoomType); respondJO.Add("code", (int)TLJCommon.Consts.Code.Code_CommonFail); // 发送给客户端 PlayService.m_serverUtil.sendMessage(connId, respondJO.ToString()); } return; } lock (m_roomList) { // 在已有的房间寻找可以加入的房间 for (int i = 0; i < m_roomList.Count; i++) { if ((gameroomtype.CompareTo(m_roomList[i].m_gameRoomType) == 0) && (m_roomList[i].getRoomState() == DDZ_RoomState.RoomState_waiting)) { if (m_roomList[i].joinPlayer(new DDZ_PlayerData(connId, uid, false, gameroomtype))) { room = m_roomList[i]; break; } } } // 当前没有房间可加入的话则创建一个新的房间 if (room == null) { room = new DDZ_RoomData(this, gameroomtype); room.joinPlayer(new DDZ_PlayerData(connId, uid, false, gameroomtype)); m_roomList.Add(room); LogUtil.getInstance().writeRoomLog(room, "新建比赛场房间:" + room.getRoomId()); } } // 加入房间成功,给客户端回复 { JObject respondJO = new JObject(); respondJO.Add("tag", tag); respondJO.Add("playAction", playAction); respondJO.Add("gameRoomType", gameroomtype); respondJO.Add("code", (int)TLJCommon.Consts.Code.Code_OK); respondJO.Add("roomId", room.getRoomId()); // 发送给客户端 PlayService.m_serverUtil.sendMessage(connId, respondJO.ToString()); } // 检测房间人数是否可以开赛 DDZ_GameLogic.checkRoomStartGame(room, tag); } catch (Exception ex) { TLJ_PlayService.PlayService.log.Error(m_logFlag + "----" + ":doTask_JoinGame异常:" + ex); } }