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, } /// /// 学员上传的答卷 /// [Serializable] public class NetAnswerSheet { //科目名称 区别当前科目 不同科目加载不同的界面 public NetSubNameEnum subName; public string totleTime;//总用时 public List errors;//操作描述 public float score;//评估扣分 为零时代表没有扣分项 其中部分按照 //扣分因素和按照扣分规则计算出的扣除分数 public XDictionary 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 onboardGO = new XDictionary();//车载装备与车辆关系 key 车辆名称 value 车载装备名称 教员端每次登录后查询后赋值 } //科目二网络发送数据类 [Serializable] public class NetSub2Msg { public int state;//训练/考核 public string weather; public Sub2RecordClass recordClass; public XDictionary onboardGO = new XDictionary();//车载装备与车辆关系 key 车辆名称 value 车载装备名称 public NetLearnGroup groupLearn;//分组训练数据 } [Serializable] public class NetSub3Msg { /// /// 维修案例名称 命名规则为: $"案例{dropDown.value}" /// public string caseName; public string weather; //案例需要具备的环节 通常由拆装两部分组成 public List fixLinks; public NetLearnGroup groupLearn;//分组训练数据 } //分组协同训练时分组信息 [Serializable] public class NetLearnGroup { public int groupNumber;//组号 public List allStudents = new List();//所有组员的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; } } /// /// 环节类 /// [Serializable] public class FixLink { public FixLinkEnum fixLinkEnum; //本环节具备的步骤 public List steps; //步骤规划完成后需要回答的问题 可以为空 public List 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 { /// /// 问题 不能为空 /// public string question; /// /// 选项 至少两个 key 选项标题例如 a b c d,Value选项描述 /// public XDictionary options; /// /// 正确选项的key /// public string rightOptionsKey; public Question() { } public Question( string question,XDictionary 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,//登录结果 /// /// 科目 /// Subject, /// /// 结束命令 /// EndCommand, /// /// 发向学员的开始/结束导调指令 /// AdjustingToStu, /// /// 导调初始化界面信息 /// AdjustingInitData, /// /// 导调中 发送增加/减少突发事件命令 /// AddOrRmoveTufa, /// /// 导调中发送遇到突发事件处理信息 /// TuFaEvent, /// /// 导调同步消息 /// Syn, //学员完成一个科目上传的答卷 AnswerSheet, /// /// 教员可返回最终结果 /// AppraiseResult, /// /// 学员退出 /// StudentQuit, /// /// 改变学员科目所处阶段 /// ChangeStudentStage, /// /// 学员在科目结束后主动关闭结果显示面板 /// StuCloseResPanel, /// /// 学员发送当前学习状态 /// StuChangeState, /// /// 组员掉线 /// GroupUserBreak, } /// /// 导调初始化信息类 /// [Serializable] public class NetAdjustingInitData { public string mapName; public XDictionary> linesDic;//路径信息 key: 路径类型 value:记录路径所有的点线路 public List tufaList; public List carIconInitDatas; } /// /// 导调突发事件类 /// [Serializable] public class AdjustingTuFaData { public bool value;//true 增加事件 false减少事件 public TuFaData tuFaData; } /// /// 组成路径的线段同步信息 /// [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;//角度信息 } /// /// 学员遇到突发事件处理消息 /// [Serializable] public class NetTuFaHandleMsg { //消息类型 public TuFaMsgType msgType; //消息内容 public string msg; } //突发事件处理消息类型 [Serializable] public enum TuFaMsgType { trigger,//触发突发事件 handleRight,//正确处理事件 handleWrong,//错误处理事件 } /// /// 教师发送的评估结果类 /// [Serializable] public class NetAppraiseData { public bool appraised;//是否生成了评价 public string appraiseLevel;//评价等级 优良中差 public string remark;//主观评价 修理所展开使用 }