unityzgy/Assets/Scripts/DataClass/NetModel.cs
ayuan9957 bf12e02276 feat: 多语言本地化系统 - 支持中/英/法/俄实时切换
- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg)
- LoginPanel: InputField placeholder本地化、字体颜色保持
- HistoryPanel: 用时数据本地化、placeholder本地化
- RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建)
- AppraiseWindowBase: 评价等级本地化、操作消息重建
- EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized
- StudentOperateRecorder: 新增InjectOperateMsgLocalized方法
- LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选
- 字体切换时保留颜色和verticalOverflow
2026-07-16 10:05:59 +08:00

395 lines
8.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//当前学员所处的学习阶段 涉及到导调功能
public enum NetSubStage
{
= 0,
= 1,
}
public enum NetLoginFailureMsg
{
none=0,
//数据库查询不到登录传入的用户
noUser = 1,
//已经登陆
hasLogin = 2,
}
/// <summary>
/// 学员上传的答卷
/// </summary>
[Serializable]
public class NetAnswerSheet
{
//科目名称 区别当前科目 不同科目加载不同的界面
public NetSubNameEnum subName;
public string totleTime;//总用时
public List<string> errors;//操作描述
public float score;//评估扣分 为零时代表没有扣分项 其中部分按照
//扣分因素和按照扣分规则计算出的扣除分数
public XDictionary<string, float> deductMsg;
public int transportTime;//转运时间 修理所展开科目使用
}
//科目一网络发送数据类
[Serializable]
public class NetSub1Msg
{
public bool isContinuity;//与后续科目训练
public int state;//学习状态 0 等待 1训练 2考核
public string weather;
public SubRecordClass recordClass;
public XDictionary<string, string> onboardGO = new XDictionary<string, string>();//车载装备与车辆关系 key 车辆名称 value 车载装备名称 教员端每次登录后查询后赋值
}
//科目二网络发送数据类
[Serializable]
public class NetSub2Msg
{
public int state;//训练/考核
public string weather;
public Sub2RecordClass recordClass;
public XDictionary<string, string> onboardGO = new XDictionary<string, string>();//车载装备与车辆关系 key 车辆名称 value 车载装备名称
public NetLearnGroup groupLearn;//分组训练数据
}
[Serializable]
public class NetSub3Msg
{
/// <summary>
/// 维修案例名称 命名规则为: $"案例{dropDown.value}"
/// </summary>
public string caseName;
public string weather;
//案例需要具备的环节 通常由拆装两部分组成
public List<FixLink> fixLinks;
public NetLearnGroup groupLearn;//分组训练数据
}
//分组协同训练时分组信息
[Serializable]
public class NetLearnGroup
{
public int groupNumber;//组号
public List<SyncUser> allStudents = new List<SyncUser>();//所有组员的IP 包括自身
public string masterIP;//组长IP
}
//同步展示VRPerson数据
[Serializable]
public class SyncUser
{
public string ip;
public string userName;
public SyncUser(string ip,string userName)
{
this.ip = ip;
this.userName = userName;
}
}
/// <summary>
/// 环节类
/// </summary>
[Serializable]
public class FixLink
{
public FixLinkEnum fixLinkEnum;
//本环节具备的步骤
public List<StepData> steps;
//步骤规划完成后需要回答的问题 可以为空
public List<Question> questions;
}
//步骤数据
[Serializable]
public class StepData
{
//当前步骤的ID
public int id;
//当前步骤的描述
public string describe;
//当前步骤的前置步骤 为空时代表不需要前置步骤
public int [] preIDs;
public StepData()
{
}
public StepData(int id,string des,int [] pre)
{
this.id = id;
this.describe = des;
this.preIDs = pre;
}
}
//维修环节枚举
public enum FixLinkEnum
{
=1,
=2,
}
//问题类
[Serializable]
public class Question
{
/// <summary>
/// 问题 不能为空
/// </summary>
public string question;
/// <summary>
/// 选项 至少两个 key 选项标题例如 a b c dValue选项描述
/// </summary>
public XDictionary<string, string> options;
/// <summary>
/// 正确选项的key
/// </summary>
public string rightOptionsKey;
public Question()
{
}
public Question( string question,XDictionary<string,string> options,string rightOptionsKey)
{
this.question = question;
this.options = options;
this.rightOptionsKey = rightOptionsKey;
}
}
//科目名称
public enum NetSubNameEnum
{
=1,
=2,
=3,
}
//发送科目类型
public enum SubType
{
train,//训练
exam,//考核
}
//网络消息标识枚举
public enum NetMsgName
{
Login,//登陆
LoginResult,//登录结果
/// <summary>
/// 科目
/// </summary>
Subject,
/// <summary>
/// 结束命令
/// </summary>
EndCommand,
/// <summary>
/// 发向学员的开始/结束导调指令
/// </summary>
AdjustingToStu,
/// <summary>
/// 导调初始化界面信息
/// </summary>
AdjustingInitData,
/// <summary>
/// 导调中 发送增加/减少突发事件命令
/// </summary>
AddOrRmoveTufa,
/// <summary>
/// 导调中发送遇到突发事件处理信息
/// </summary>
TuFaEvent,
/// <summary>
/// 导调同步消息
/// </summary>
Syn,
//学员完成一个科目上传的答卷
AnswerSheet,
/// <summary>
/// 教员可返回最终结果
/// </summary>
AppraiseResult,
/// <summary>
/// 学员退出
/// </summary>
StudentQuit,
/// <summary>
/// 改变学员科目所处阶段
/// </summary>
ChangeStudentStage,
/// <summary>
/// 学员在科目结束后主动关闭结果显示面板
/// </summary>
StuCloseResPanel,
/// <summary>
/// 学员发送当前学习状态
/// </summary>
StuChangeState,
/// <summary>
/// 组员掉线
/// </summary>
GroupUserBreak,
}
/// <summary>
/// 导调初始化信息类
/// </summary>
[Serializable]
public class NetAdjustingInitData
{
public string mapName;
public XDictionary<WayType, List<LineTransData>> linesDic;//路径信息 key: 路径类型 value:记录路径所有的点线路
public List<TuFaData> tufaList;
public List<AdjustingCarIconData> carIconInitDatas;
}
/// <summary>
/// 导调突发事件类
/// </summary>
[Serializable]
public class AdjustingTuFaData
{
public bool value;//true 增加事件 false减少事件
public TuFaData tuFaData;
}
/// <summary>
/// 组成路径的线段同步信息
/// </summary>
[Serializable]
public struct LineTransData
{
public VectorTwo anchorPos;
public float sizeX;//实际像素值
public float angleZ;
}
[Serializable]
public struct VectorThree
{
public float x;
public float y;
public float z;
public VectorThree(float x, float y, float z)
{
this.x = x;
this.y = y;
this.z = z;
}
public VectorThree(Vector3 vector3)
{
x = vector3.x;
y = vector3.y;
z = vector3.z;
}
public Vector3 GetVector3()
{
return new Vector3(x, y, z);
}
}
[Serializable]
public struct VectorTwo
{
public float x;
public float y;
public VectorTwo(float x, float y)
{
this.x = x;
this.y = y;
}
public VectorTwo(Vector2 vector2)
{
x = vector2.x;
y = vector2.y;
}
public Vector2 GetVector2()
{
return new Vector2(x, y);
}
}
//教员端导调时车辆图标信息同步类 不同步车载数据
[Serializable]
public class AdjustingCarIconData
{
public string carName;
public FormationGroupingEnum groupingEnum;//当前分组
public VectorTwo anchorPos;//位置信息
public float angle;//角度信息
}
/// <summary>
/// 学员遇到突发事件处理消息
/// </summary>
[Serializable]
public class NetTuFaHandleMsg
{
//消息类型
public TuFaMsgType msgType;
//消息内容
public string msg;
}
//突发事件处理消息类型
[Serializable]
public enum TuFaMsgType
{
trigger,//触发突发事件
handleRight,//正确处理事件
handleWrong,//错误处理事件
}
/// <summary>
/// 教师发送的评估结果类
/// </summary>
[Serializable]
public class NetAppraiseData
{
public bool appraised;//是否生成了评价
public string appraiseLevel;//评价等级 优良中差
public string remark;//主观评价 修理所展开使用
}