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;//主观评价 修理所展开使用
}