using System; using System.Collections.Generic; using System.Text; using UnityEngine; /// /// 服务端消息处理类 /// class HandleServerMsg { //学员登陆 public void MsgLogin(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); User userMsg = proto.GetClass(start, ref start) as User; NetLoginFailureMsg errorMsg= NetLoginFailureMsg.none; bool result = DBManager.Instance.CheckUserLogin(userMsg); if (!result)//数据库未查询到数据 { errorMsg = NetLoginFailureMsg.noUser; } else if(MasterLoginManager.Instance.CheckUserIsLoginon(userMsg.user))//通过验证后 判断该用户是否已经登录 { result = false; errorMsg = NetLoginFailureMsg.hasLogin; } Debug.Log($"用户:{userMsg.user},尝试通过计算机:{clientMsg.ip}登录,登录结果:{result}"); if (result) { EventCenter.Instance.EventTrigger("StudentLoginOn", clientMsg.ip, userMsg.user); } TCPManager.Instance.SendLoginResult(result, clientMsg.ip, errorMsg); } //接到学员上传的答卷 public void MsgAnswerSheet(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); NetAnswerSheet userRseultMsg = proto.GetClass(start, ref start) as NetAnswerSheet; ResultMsgToUI uiResult = new ResultMsgToUI(clientMsg.ip, userRseultMsg); GameMain.Instance.UIManager.ChangePanel(uiResult); Debug.Log($"用户:{clientMsg.ip}结束当前训练科目,传回结果数据"); } //学员退出登录 public void MsgStudentQuit(ClientMsg clientMsg) { //int start = 0; //ProtocolByte proto = clientMsg.protocolByte; //string protoName = proto.GetString(start, ref start); //proto = new ProtocolByte(); EventCenter.Instance.EventTrigger("StudentQuit", clientMsg.ip); } //学员改变科目推演阶段 public void MsgChangeStudentStage(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); NetSubStage stage = (NetSubStage)proto.GetInt(start, ref start); EventCenter.Instance.EventTrigger("ChangeStudentStage", clientMsg.ip, stage); } //学员传回的导调初始化信息 public void MsgAdjustingInitData(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); NetAdjustingInitData initData = proto.GetClass(start, ref start); Debug.Log("接到传回的导调界面初始化信息"); EventCenter.Instance.EventTrigger("NetAdjustingInitData",clientMsg.ip, initData); } //导调过程中的同步信息 public void MsgSyn(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); AdjustingCarIconData[] synMsg = proto.GetClass(start, ref start); EventCenter.Instance.EventTrigger("SynCarPos", synMsg); } //导调过程中的事件同步信息 public void MsgTuFaEvent(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); NetTuFaHandleMsg handleMsg = proto.GetClass(start, ref start); EventCenter.Instance.EventTrigger("SynTuFa", handleMsg); } //学员端主动结束成绩等待面板 public void MsgStuCloseResPanel(ClientMsg clientMsg) { EventCenter.Instance.EventTrigger("StuCloseResultPanel", clientMsg.ip); } //学员端改变学习状态 目前只有转变为等待状态时调用 public void MsgStuChangeState(ClientMsg clientMsg) { int start = 0; ProtocolByte proto = clientMsg.protocolByte; string protoName = proto.GetString(start, ref start); LearnState handleMsg = (LearnState)proto.GetInt(start, ref start); EventCenter.Instance.EventTrigger("ChangeLearnState", clientMsg.ip, handleMsg); } }