- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
170 lines
4.4 KiB
C#
170 lines
4.4 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using DevelopEngine;
|
|
using UnityEngine.Events;
|
|
using XFramework.NetOuter;
|
|
|
|
//网络通信管理类
|
|
public class TCPManager :Singleton<TCPManager>
|
|
{
|
|
TcpClient tcpClient;
|
|
TcpServer tcpServer;
|
|
|
|
public void InitNetWork(TcpClient tcp)
|
|
{
|
|
tcpClient = tcp;
|
|
}
|
|
|
|
public void InitNetWork(TcpServer tcp)
|
|
{
|
|
this.tcpServer = tcp;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Unity主线程中循环调用解析数据
|
|
/// </summary>
|
|
public void ExtractingMsg()
|
|
{
|
|
tcpClient?.ExtractingMsg();
|
|
tcpServer?.ExtractingMsg();
|
|
}
|
|
|
|
#region 教师端调用
|
|
|
|
//某客户端断开事件
|
|
public void RegisterConnCloseEvent(UnityAction<string,bool> connCloseEvent)
|
|
{
|
|
tcpServer.connChangeEvent+=connCloseEvent;
|
|
}
|
|
|
|
//发送科目
|
|
public void SendSubject<T>(string ip, NetSubNameEnum subName,T record) where T: class
|
|
{
|
|
ProtocolByte protocol = new ProtocolByte();
|
|
protocol.AddString(NetMsgName.Subject.ToString());
|
|
protocol.AddInt((int)subName);
|
|
protocol.AddClass(record);
|
|
tcpServer.Send(ip, protocol);
|
|
}
|
|
|
|
//发送教员评价
|
|
public void SendAppraise(string ip, NetAppraiseData appraise)
|
|
{
|
|
ProtocolByte protocol = new ProtocolByte();
|
|
protocol.AddString(NetMsgName.AppraiseResult.ToString());
|
|
protocol.AddClass(appraise);
|
|
tcpServer.Send(ip, protocol);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 发送导调命令
|
|
/// </summary>
|
|
/// <param name="ip"></param>
|
|
/// <param name="startOrQuit">true 代表开始导调 false 结束导调</param>
|
|
public void SendAdjusting(string ip,bool startOrQuit)
|
|
{
|
|
ProtocolByte protocol = new ProtocolByte();
|
|
protocol.AddString(NetMsgName.AdjustingToStu.ToString());
|
|
protocol.AddBool(startOrQuit);
|
|
tcpServer.Send(ip, protocol);
|
|
}
|
|
|
|
|
|
//发送登录检查结果到对应的学员端
|
|
public void SendLoginResult(bool result, string ip, NetLoginFailureMsg errorMsg)
|
|
{
|
|
//返回登录结果
|
|
ProtocolByte proto = new ProtocolByte();
|
|
proto.AddString(NetMsgName.LoginResult.ToString());
|
|
if (result)//登陆成功
|
|
proto.AddInt(0);
|
|
else
|
|
{
|
|
proto.AddInt(1);
|
|
}
|
|
proto.AddInt((int)errorMsg);
|
|
tcpServer.Send(ip, proto);
|
|
}
|
|
|
|
//发送新增或减少突发事件指令
|
|
internal void SendChangeTuFa(string ip,bool value, TuFaData data)
|
|
{
|
|
IProtoBuilder protoBuilder = new ChangeTufaBuilder(value,data);
|
|
tcpServer.Send(ip, protoBuilder.GetProto());
|
|
}
|
|
|
|
|
|
//发送科目结束指令
|
|
public void SendEndCommand(string ip)
|
|
{
|
|
ProtocolByte protocol = new ProtocolByte();
|
|
protocol.AddString(NetMsgName.EndCommand.ToString());
|
|
tcpServer.Send(ip,protocol);
|
|
}
|
|
//public void Send
|
|
|
|
internal void RemoveCloseEnvet(UnityAction<string,bool> studentQuit)
|
|
{
|
|
tcpServer.connChangeEvent -= studentQuit;
|
|
}
|
|
#endregion
|
|
|
|
#region 学员端调用
|
|
|
|
public void RegisterConnectChanged()
|
|
{
|
|
|
|
}
|
|
|
|
//发送当前学员所处的科目阶段 涉及到是否能够开始导调
|
|
public void SendSubStage(NetSubStage netSubStage)
|
|
{
|
|
SendInt(NetMsgName.ChangeStudentStage, (int)netSubStage);
|
|
}
|
|
|
|
//发送当前学员所处的学习阶段 关系到是否能够再次下发科目
|
|
public void SendSubState(LearnState state )
|
|
{
|
|
SendInt(NetMsgName.StuChangeState, (int)state);
|
|
}
|
|
|
|
private void SendInt(NetMsgName msgName,int value)
|
|
{
|
|
ProtocolByte protoco = new ProtocolByte();
|
|
protoco.AddString(msgName.ToString());
|
|
protoco.AddInt((int)value);
|
|
tcpClient.Send(protoco);
|
|
}
|
|
|
|
//发送数据类
|
|
public void SendNetMsg<T>(T t, NetMsgName msgName) where T : class
|
|
{
|
|
ProtocolByte protoco = new ProtocolByte();
|
|
protoco.AddString(msgName.ToString());
|
|
protoco.AddClass(t);
|
|
tcpClient.Send(protoco);
|
|
}
|
|
|
|
//发送一个事件消息
|
|
public void SendNetMsg(NetMsgName msgName)
|
|
{
|
|
ProtocolByte protoco = new ProtocolByte();
|
|
protoco.AddString(msgName.ToString());
|
|
tcpClient.Send(protoco);
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
//断开链接
|
|
public void Close()
|
|
{
|
|
tcpClient?.Close();
|
|
tcpServer?.Close();
|
|
}
|
|
}
|
|
|
|
|