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);
}
}