syntax = "proto3";

//2025.10.10



package SDK;

//--------------------------------------态势数据设计-----------------------------------
//一、引擎发送完整结构
//二、数据服务根据完整结构计算差异数据
//三、数据服务按推演方分发态势
//四、定义多种话题区分态势数据结构（规范：主题名称不能存在包含关系[例：主题1"TOPIC_DATA";主题2"TOPIC_DATA_ALL"。主题2包含了主题1]，否则数据会出问题）
//----------------------------------------------------------------------
//      数据项					话题					  			数据结构(在通信数据包头内标识是否完整数据，或此数据下的子结构。遍历结构全部属性计算差异。完整数据使用ParseFromString反序列化，差异数据使用MergeFromString上一帧数据基础上反序列化)
//想定基本信息				SCENARIO_INFO							THScenarioInfo
//想定配置的事件			EVENT_INFO								THEventColl
//态势基本信息				SITUATION_INFO							THSituationInfo
//推演方态势				SITUATION_%推演方ID%					THSituationSide
//动态数据订阅（全局）			SITUATION_DYNAMIC_GLOBAL						THLoadScenarioInfo THSimStatusInfo THAdjustTimeCompressionInfo THSimEndInfo THMissionInfo THSideChange THEventTriggers_Status THLoggedMessageList
//动态数据订阅（单方）			SITUATION_DYNAMIC_%推演方ID%			THAircraftTakeOffInfo THAircraftAttemptToRTBInfo THAircraftTouchDownInfo THAircraftDeckAbortInfo THAircraftDisruptInfo 
//																	THUnitDestroyedInfo THWeaponEndgameInfo THWeaponFiredInfo THWeaponFaultInfo THLastDetectionList
//																	THWeaponDestroyedInfo(不使用) THJamingInfoList THComponentStatusChangeInfo THUnitNewbornInfo  THContactInfo THWeaponCancelInfo THSensorStatusChangeInfo  THActiveUnitDevRel（实装关联）  THAAR(这两个结构暂时事件也发，态势也发)  THUnitOffGridInfo THWeaponSalvoList THContactRemoveInfo THMissionMinningInfo THMissionMineClearingInfo THRefuelingInfo THLoggedMessageList
//---------------------------------------------------------------------- 
//   态势订阅机制
//   想定编辑、全席位：订阅所有话题
//   推演模式：订阅 SITUATION_INFO + 本推演方话题或友方 话题，按需订阅SITUATION_KEYCHANGE、SITUATION_DYNAMIC
//五、定义消息类型(DDS通信字段mtype，整数4字节，前2个字节表示是否完整数据，后2个字节表示结构类型，下列值为16进制格式)
//0:完整数据、1:更新数据
//1:THScenarioInfo、2:THEventColl、3:THSituationInfo、4:THSituationSide、50:THAircraftTakeOffInfo、51:THAircraftAttemptToRTBInfo、52:THAircraftTouchDownInfo、53:THAircraftDeckAbortInfo //、54:THAircraftDisruptInfo 
//55:THUnitDestroyedInfo 、56:THWeaponEndgameInfo 、57:THWeaponFiredInfo 、58:THWeaponFaultInfo 、59:THLoadScenarioInfo  、60:THSimStatusInfo 、61:THAdjustTimeCompressionInfo
//62:THSimEndInfo 、63:THWeaponDestroyedInfo 、64:THJamingInfoList 、65:THComponentStatusChangeInfo 、66:THUnitNewbornInfo  、68:THContactInfo、69:THWeaponCancelInfo， //70: THSensorStatusChangeInfo、71、THLastDetectionList 、72:THAAR、 73: THMissionInfo 、 74:THUnitOffGridInfo 、 75: THWeaponSalvoList、76:THContactRemoveInfo、77:THSides 78: THEventTriggers_Status、79：THMissionMinningInfo、80：THMissionMineClearingInfo、81：THRefuelingInfo、82：THLoggedMessageList、 100:THActiveUnitDevRel 、1000:THSituationFull
//例:0x00000001完整的THScenarioInfo结构数据、0x00010001更新的THScenarioInfo结构数据

//六、需综合考虑态势存储大小及回放拖动进度的性能
//七、需考虑态势与实时想定统一结构，便于后台异常重启恢复
//八、序列化结构成员定义原则：除最上层结构单元列表外，下层结构内不定义vector容器类型，使用bytes存放容器的二进制序列化数据。map删除定义消息类型推送需删除的key，避免map下嵌套map
//九、态势数据发送逻辑：
//   1.想定加载、断线重连、数据丢失重发时，推送完整结构数据THScenarioInfo、THEventColl、THSituationInfo、THSituationSide
//   2.THScenarioInfo、THEventColl、THSituationInfo、THSide为触发式数据变化(任务及事件状态特殊处理)，引擎产生数据变化时，应立即记录推送标志
//   3.THSideReal为基础态势实时随机变化，引擎定时周期性推送
//   4.THSidePosition为基础态势实时位置变化，引擎实时记录并定时周期性推送
//   5.SITUATION_DYNAMIC 的结构类型，从0x00000050开始计数
//----------------------------------------------------------------------
//十、proto结构取值时可用has_*判断字段是否有赋值(需要proto版本3.12及以上)



//////////////////////////////嵌套的二进制序列化结构定义///////////////////////////////

message THVectorString{
    repeated string v = 1;//
}
message THVectorInt{
    repeated int32 v = 1;//
}
message THVectorBytes{
    repeated bytes v = 1;//
}
message THVectorGeoPoint{
    repeated THGeoPoint v = 1;//
}
message THVectorWaypoint{
    repeated THWaypoint v = 1;//
}
message THVectorXSection{
    repeated THXSection v = 1;//
}
message THVectorCCS{
    repeated THCCS v = 1;//
}
message THVectorEmptySlot{
    repeated THEmptySlot v = 1;//
}
message THMapBytes{
    map<string, bytes> v = 1;//
}
message THMapString{
    map<string, string> v = 1;//
}

////////////////////////////////////////////////////////////////////////////////////////



//取消武器发射事件
message THWeaponCancelInfo{
    optional string FiringUnitID = 1;//开火单元ID
	optional int32 FiringUnitDBID = 2;//开火单元DBID
	optional string FiringUnitName = 3;//开火单元名称
    optional string FiringUnitSideID = 4;//开火单元推演方id
	optional string WeaponID = 5;//武器ID
	optional int32 WeaponDBID = 6;//武器DBID
	optional string WeaponName = 7;//武器名称
	optional string TargetContactActualUnitID = 8;//目标真实ID
	optional string TargetContactActualUnitName = 9;//目标真实名称
	optional string TargetContactActualUnitSideID = 10;//目标真实推演方id
}

//传感器开关机事件
message THSensorStatusChangeInfo{
    optional string ID = 1;//传感器ID
	optional string Name = 2;//传感器名称
	optional int32 DBID = 3;// 数据库表内的ID
	optional int32 Type = 4;// 传感器类型
	optional int32 Status = 5;//组件状态 参考EComponentStatus定义:0-运转  1-损坏   2-毁灭
    optional string ExceptionStatus = 6;//异常状态
	optional int32 DamageSeverity = 7;// 损伤严重性系数 参考EDamageSeverityFactor定义：0-Light 1-Medium 2-Heavy
    optional bool IsActive = 8;// 处于活动状态
	optional double MaxRange = 9;// 最大范围
    optional double MinRange = 10;// 最小范围
    optional int64 WorkFreq = 11;//工作频率
    optional bool CanBeActive = 12;//传感器能否开关操作
	optional string ParentUnitID = 13;//父平台ID
	optional string ParentUnitName = 14;//父平台名称
	optional bool IsSonar = 15;//是否声纳 （sensor->isSonar()）
	optional bool IsRadar = 16;//是否雷达 （sensor->Type == ESensor_Type::Radar）
}
//仿真单元与实装设备关联信息
message THActiveUnitDevRel{
	map<string, string> DevRel = 1;
}

//新生的单元信息
message THUnitNewbornInfo{
    optional string UnitName = 1;//单元名称 
	optional string UnitID = 2;//单元ID
	optional int32 Category = 3;//大类
    optional int32 Type = 4;     //实体类型
    optional int32 DBID = 5;//数据库实体ID 
	optional double Lon=6;    //经度
    optional double Lat=7;     //纬度
    optional double CurrentAltitude=8;  //当前高度
    optional double CurrentHeading=9;   //朝向
    optional double Pitch=10;      // 纵摇
    optional double Roll=11;       //横摇
    optional double CurrentSpeed=12;//当前速度
	optional string AssignedMission = 13;//分配任务GUID	
	THAirOps AirOps=14;//飞机停靠机场  
	THDockingOps DockingOps=15;//船只停靠码头
	bool DockingCondition = 16;//值为false时不在界面显示  false为停靠状态
	optional string SideID = 17;//推演方ID
	optional int32 UnitType = 18;//实体分类，0:"编组",1:"飞机",2:"舰船",3:"潜艇",4:"设施",5:"火力点",6:"武器",7:"卫星",8:"车辆",9:"人员"
}

//**********情报信息
message THContactInfo {
    optional string ID=1;  
    optional string Name=2;
    optional int32 Type=3;     //类型
    optional double Lon=4;    //经度
    optional double Lat=5;     //纬度
    optional double CurrentAltitude=6;  //当前高度
    optional double CurrentHeading=7;   //朝向
    optional double Pitch=8;      // 纵摇
    optional double Roll=9;       //横摇
    optional string ActualUnitID=10;//真实实体的ID  
    optional int32 DBID=11;//真实实体的数据库ID 
    optional int32 IDStatus=12;//==2，知道飞机舰船导弹，==3，知道具体型号，==4，代表什么都知道了  
    optional int32 ActType=13;//真实实体的类型  
    optional int32 ActCategory=14;//真实实体的小类  
	optional string SideID = 15;//推演方ID
	optional double Age=16;//探测情报丢失时间长度 以120S情报丢失则为悲观 
	optional double CurrentSpeed=17;//当前速度
}


//武器开火事件
message THWeaponFiredInfo{
    optional string FiringUnitID = 1;//开火单元ID
	optional int32 FiringUnitDBID = 2;//开火单元DBID
	optional string FiringUnitName = 3;//开火单元名称
	optional int32 FiringUnitType = 4; //开火单元类型EActiveUnitType
	optional string FiringUnitClass = 5;//装备分类
    optional string FiringUnitSide = 6;//推演方名称
	optional double FiringUnitLongitude = 7;//开火单元经度
	optional double FiringUnitLatitude = 8;//开火单元纬度
	optional float FiringUnitCourse = 9;//开火单元航向
	optional float FiringUnitSpeed = 10;//开火单元速度
	optional float FiringUnitAltitude = 11;//开火单元高度
	optional float FiringUnitAGL = 12;//高度_地平面之上
	optional string WeaponID = 13;//武器ID
	optional int32 WeaponDBID = 14;//武器DBID
	optional string WeaponName = 15;//武器名称
	optional int32 WeaponType = 16;//武器类型EWeaponType
	optional string WeaponClass = 17;//武器分类
	optional string TargetContactID = 18;//目标情报ID
	optional double TargetContactLongitude = 19;//目标情报经度
	optional double TargetContactLatitude = 20;//目标情报纬度
	optional float TargetContactHeading = 21;//目标情报航向
	optional float TargetContactSpeed = 22;//目标情报速度
	optional float TargetContactAltitude = 23;//目标情报高度
	optional float TargetContactRangeHoriz = 24;//目标距单元水平距离
	optional float TargetContactRangeSlant = 25;//目标距单元间斜线距离
	optional string TargetContactActualUnitID = 26;//目标真实ID
	optional string TargetContactActualUnitName = 27;//目标真实名称
	optional string TargetContactActualUnitClass = 28;//目标真实分类
	optional string TargetContactActualUnitSide = 29;//目标真实推演方名称
	optional string SalvoID = 30;//武器齐射ID
	optional string SideID = 31;//推演方ID
	optional double FiringDistance = 32;//开火距离（新增）
}

//武器撞击事件（用于前台显示效果）----------请确认与THWeaponImpact是否重复
message WeaponImpactInfo{
	optional string SideID = 1;//推演方ID
    optional string ID = 2;//ID
    optional float Course = 3;//武器航向CurrentHeading
	optional float Speed_KTS = 4;//速度
	optional double Longitude = 5;//经度
	optional double Latitude = 6;//纬度
	optional double Altitude = 7;//高度
	optional int32 Type = 8;//撞击类型
	optional float Age = 9;//时间
}

//爆炸事件（用于前台显示效果）----------请确认与THExplosion是否重复
message ExplosionInfo{
    optional string ExplosionID = 1;//爆炸ID
	optional double Longitude = 2;//经度
	optional double Latitude = 3;//纬度
	optional float Altitude = 4;//高度
	optional double ExpYield = 5;// 预期当量
	optional int32 WarheadType = 6;// 弹头类型EWarheadType
	optional int32 WeaponType = 7;// 武器类型EWeaponType
	optional int32 ExplosiveType = 8;// 爆炸物类型EWarheadExplosivesType
	optional double Duration = 9;// 持续时间
	optional float MaxDuration = 10;//最大持续时间
	optional string DirectImpactUnitID = 11;//直接撞击单元
	optional string DirectImpactAimpointID = 12;//直接影响目标
	optional string ExcludedUnitID = 13;// 排除的单元
	optional string ExcludedAimPointID = 14;//排除的目标ID
	optional string SideID = 15;//推演方ID
}




///////////////////////////////////////////////////////////////////////////////////////
message THWeaponSalvo{
    optional string ID = 1;
	optional int32 NumberOfShooters = 2;//齐射数量
	optional int32 WeaponDBID = 3;//武器DBID
	optional int32 QuantityTotal = 4;//发射弹药总量
	optional string Target = 5;//目标情报ID
	optional bool ManualFire = 6;//主动开火
	optional bytes Weapons = 7;//THVectorString二进制序列化
	map<string, THShooter> Shooters = 8;//打击单元信息
	optional bytes WPoint = 9;//弹道  THVectorWaypoint二进制序列化
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}
//射击信息
message THShooter{
    optional string ID = 1;//射手对象ID ShooterObjectID
	optional string PrefMountID = 2;//首选挂架ID PreferredMountObjectID
	optional int32 QuantityAssigned = 3;//分配的数量 
    optional int32 QuantityFired = 4;//开火数量 
    optional int32 TimeToNextLaunch = 5;//发射间隔
    optional int32 Timeout = 6;//超时
}



//*************************任务列表******************************//
message THMissionColl{
	map<string, THMissionPatrol> Patrol = 1;//巡逻任务
	map<string, THMissionStrike> Strike = 2;//打击任务
	map<string, THMissionCargo> Cargo = 3;//投送任务
	map<string, THMissionFerry> Ferry = 4;//转场任务
	map<string, THMissionSupport> Support = 5;//支援任务
	map<string, THMissionMineClearing> MineClearing = 6;//排雷任务
	map<string, THMissionMining> Mining = 7;//布雷任务
	map<string, THMissionCustom> Custom = 8;//自定义任务
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key，例：有map字段("Patrol"、"Strike"、"Cargo"、"Ferry"、"Support"、"MineClearing"、"Mining"、"Custom")，需删除Patrol的元素"123456"，则此处记录信息为{"Patrol",["123456"]}
}

//巡逻任务
message THMissionPatrol{
    optional THMission Mission = 1;//任务基类
	optional int32 Type = 2;//任务子类型 参考EPatrolType定义
    optional bytes PatrolArea = 3;//THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    optional bytes ProsecutionArea = 4;//THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    optional bool OTR = 5;// 三分之一规则
    optional int32 MNOS = 6;// 阵位上的最小数量
    optional bool IOPA = 7;// 侦查巡逻区外
    optional bool IWWR = 8;// 侦查武器范围内
    optional bool AEOIPA = 9;// 仅在巡逻区或警戒区域内激活电磁辐射控制
    optional bool SAD = 10;// 冲刺和漂移
    optional int32 TransitThrottle_Aircraft = 11;// 运输油门_飞机
    optional int32 StationThrottle_Aircraft = 12;// 阵位油门_飞机
    optional int32 AttackThrottle_Aircraft = 13;// 攻击油门_飞机
    optional float TransitAltitude_Aircraft = 14;// 运输高度_飞机
    optional float StationAltitude_Aircraft = 15;// 阵位高度_飞机
    optional float AttackAltitude_Aircraft = 16;// 攻击高度_飞机
    optional float AttackDistance_Aircraft = 17;// 攻击距离_飞机
    optional bool TransitTerrainFollowing_Aircraft = 18;// 运输地形跟随_飞机
    optional bool StationTerrainFollowing_Aircraft = 19;// 阵位地形跟随_飞机
    optional bool AttackTerrainFollowing_Aircraft = 20;// 攻击地形跟随_飞机
    optional int32 TransitThrottle_Submarine = 21;// 运输油门_潜艇
    optional int32 StationThrottle_Submarine = 22;// 阵位油门_潜艇
    optional int32 AttackThrottle_Submarine = 23;// 攻击油门_潜艇
    optional float TransitDepth_Submarine = 24;//9999表示无设置  // 运输深度_潜艇
    optional float StationDepth_Submarine = 25;//9999表示无设置 // 阵位深度_潜艇
    optional float AttackDepth_Submarine = 26;// 攻击深度_潜艇
    optional float AttackDistance_Submarine = 27;// 攻击距离_潜艇
    optional int32 TransitThrottle_Ship = 28;// 运输油门_舰船
    optional int32 StationThrottle_Ship = 29;// 阵位油门_舰船
    optional int32 AttackThrottle_Ship = 30;// 攻击油门_舰船
    optional float AttackDistance_Ship = 31;// 攻击距离_舰船
    optional int32 TransitThrottle_Facility = 32;// 运输油门_设施
    optional int32 StationThrottle_Facility = 33;// 阵位油门_设施
    optional int32 AttackThrottle_Facility = 34;// 攻击油门_设施
    optional int32 Formation_Cruise = 35;// 巡航队形
    optional int32 Formation_Attack = 36;// 攻击队形
    optional int32 MinAircraftReq = 37;// 最小飞机数量
    optional int32 NumberOfFlights_Investigate = 38;// 航班数量_侦查
    optional int32 NumberOfFlights_Engage = 39;// 航班数量_交战
    optional int32 WingmanEngageDistance = 40;// 僚机交战距离
    optional int32 NumberOfBoats_Investigate = 41;// 船只数量_侦查
    optional int32 NumberOfBoats_Engage = 42;// 船只数量_交战
    optional int32 GroupMemberEngageDistance = 43;// 组成员交战距离
    optional bool ContinousCoverage_Enable = 44;// 连续覆盖启用
    optional bool ContinousCoverage_AllowQRA = 45;// 连续覆盖_QRA启用
    optional int32 ContinousCoverage_FlightGenerationMethod = 46;// 连续覆盖_航班方法
    optional int32 ContinousCoverage_StationTime = 47;// 连续覆盖_阵位时间
    optional int32 ContinousCoverage_Overlap = 48;// 连续覆盖_重叠
    optional int32 ContinousCoverage_Duration = 49;// 连续覆盖_持续时间
    optional bytes CCSList = 50;// 连续覆盖_阵位     THVectorCCS二进制序列化
    optional bytes QRAs = 51;// 连续覆盖_QRA       THVectorCCS二进制序列化
    optional int32 ContinousCoverage_QRANumberOfFlights = 52;// 连续覆盖_QRA航班数量
    optional int32 ContinousCoverage_QRAFlightGenerationMethod = 53;// 连续覆盖_QRA航班方法
    optional int32 ContinousCoverage_NumberOfFlightsNeededToAllowQRA = 54;// 连续覆盖_允许QRA所需的航班数量
	optional int32 MovementStyle = 55;// 巡逻运动风格
}	

//打击任务
message THMissionStrike{
    optional THMission Mission = 1;//任务基类
    optional int32 Type = 2;//任务子类型 参考EPatrolType定义
	optional THDoctrine Doctrine_Escorts = 3;        //护航条令
    optional bytes SpecificTargets = 4;//打击目标GUID列表     THVectorString二进制序列化
	optional bytes STargName = 5;//打击目标名称列表(与SpecificTargets一一对应)     THVectorString二进制序列化
	optional int32 MCSTT = 6;//MinimumContactStanceToTrigger 触发的最小接触立场
    optional bool UP = 7;//UsePlanner 使用计划
    optional int32 Formation_Cruise = 8;// 队形_巡航
    optional int32 Formation_Attack = 9;// 队形_攻击
    optional int32 Bingo = 10;// Bingo 燃油设置
    optional int32 TargeteeringMethod = 11;// 目标定位方法
    optional int32 Escort_FlightSize_Shooter = 12;// 护送_航班大小_射击
    optional int32 Escort_FlightSize_NonShooter = 13;// 护送_航班大小_无射击
    optional int32 Escort_Formation_Cruise = 14;// 护送_队形_巡航
    optional int32 Escort_Formation_Attack = 15;// 护送_队形_攻击
    optional int32 Escort_TransitThrottle = 16;// 护送_运输油门
    optional int32 Escort_StationThrottle = 17;// 护送_攻击油门
    optional float Escort_TransitAltitude = 18;// 护送_运输高度
    optional float Escort_StationAltitude = 19;// 护送_攻击高度
    optional bool Escort_TransitTerrainFollowing = 20;// 护送_运输地形跟随
    optional bool Escort_AttackTerrainFollowing = 21;// 护送_攻击地形跟随
    optional double Escort_ResponseRadius = 22;// 护送_响应半径
    optional int32 Escort_GroupSize = 23;// 护送_编队大小
    optional int32 MinAircraftReq_Strikers = 24;// 最小飞机数量 MinimumNumberOfAircraft
    optional int32 MaxAircraftToFly_Strikers = 25;// 最大飞行次数_打击 MaxFlightNumber_Strike
    optional int32 MinAircraftReq_Escorts_Shooter = 26;// 最小飞机数量_护送_射击 
    optional int32 MaxAircraftToFly_Escort_Shooter = 27;// 最大飞机数量_护送_射击
    optional int32 MinAircraftReq_Escorts_NonShooter = 28;// 最小飞机数量_护送_无射击 
    optional int32 MaxAircraftToFly_Escort_NonShooter = 29;// 最大飞机数量_护送_无射击
    optional double MinResponseRadius_Aircraft = 30;// 最小响应半径_飞机
    optional double MaxResponseRadius_Aircraft = 31;// 最大响应半径_飞机
    optional double MinResponseRadius_Ship = 32;// 最小响应半径_舰艇
    optional double MaxResponseRadius_Ship = 33;// 最大响应半径_舰艇
    optional bool PrePlannedOnly = 34;// 仅预先计划
    optional bool OneTimeOnly = 35;// 仅限一次性
    optional bool OneTimeOnlyFlown = 36;// 仅限一次性飞行
    optional int32 RadarBehaviour = 37;// 雷达行为
    optional int32 AttackMethod = 38;// 攻击方法
    optional int32 SplitDistance = 39;// 分割距离
    optional bool UseFlightSizeHardLimit_Escort = 40;// 使用航班大小强制限制_护送
    optional bool UseGroupSizeHardLimit_Escort = 41;// 使用编队大小强制限制_护送
    optional int32 Escort_NumberOfFlights_Investigate = 42;// 护送_航班数量_侦查
    optional int32 Escort_NumberOfFlights_Engage = 43;// 护送_航班数量_交战
    optional double Escort_WingmanEngageDistance = 44;// 护送_僚机交战距离
    optional int32 Escort_NumberOfBoats_Investigate = 45;// 护送_船只数量_侦查
    optional int32 Escort_NumberOfBoats_Engage = 46;// 护送_船只数量_交战
    optional double Escort_GroupMemberEngageDistance = 47;// 护送_编队成员交战距离
}	

//投送任务
message THMissionCargo{
    optional THMission Mission = 1;//任务基类
    optional int32 Type = 2;//货运任务类型 参考ECargoMissionType定义
    optional int32 TransitThrottle_Aircraft = 3;// 运输油门_飞机
    optional int32 StationThrottle_Aircraft = 4;// 阵位油门_飞机
    optional float TransitAltitude_Aircraft = 5;// 运输高度_飞机
    optional float StationAltitude_Aircraft = 6;// 阵位高度_飞机
    optional int32 TransitThrottle_Ship = 7;// 运输油门_舰艇
    optional int32 StationThrottle_Ship = 8;// 阵位油门_舰艇
    optional bytes Area = 9;//THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    map<int32, int32> MountsToUnload = 10;// 卸载的货物(key为货物类型，value为数量)

	map<string, THVectorInt> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}
	
//转场任务
message THMissionFerry{
    optional THMission Mission = 1;//任务基类
    optional int32 Type = 2;//转场任务无任务子类型
    optional string NDH = 3;  //转场任务目的地（机场或航母）ID mDestinationHostID
    optional int32 FerryThrottle_Aircraft = 4;// 转场油门_飞机
    optional float FerryAltitude_Aircraft = 5;// 转场高度_飞机
    optional bool FerryTerrainFollowing_Aircraft = 6;// 转场地形跟随_飞机
    optional int32 FerryThrottle_Ship = 7;// 转场油门_舰艇
    optional int32 FerryThrottle_Submarine = 8;// 转场油门_潜艇
    optional float FerryAltitude_Submarine = 9;// 转场高度_潜艇
    optional int32 Formation_Cruise = 10;// 队形_巡航
    optional float MinAircraftReq = 11;// 最小飞机数量
    optional int32 Behavior = 12;// 转场任务行为
}

//支援任务
message THMissionSupport{
    optional THMission Mission = 1;//任务基类
    optional int32 Type = 2;//支援任务无任务子类型
    optional bytes Area = 3;//支援区域   THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    optional int32 NLT = 4;// 支援任务导航循环类型 NavigationLoopType
    optional bool OTR = 5;// 三分之一规则
    optional int32 MNOS = 6;// 阵位上的最小数量
    optional bool OTO = 7;// 仅限一次性 OneTimeOnly
    optional bool AEOOS = 8;// 仅在阵位上激活电磁辐射控制 ActiveEMCONOnlyOnStation
    optional int32 TransitThrottle_Aircraft = 9;// 运输油门_飞机
    optional int32 StationThrottle_Aircraft = 10;// 阵位油门_飞机
    optional float TransitAltitude_Aircraft = 11;// 运输高度_飞机
    optional float StationAltitude_Aircraft = 12;// 阵位高度_飞机
    optional bool TransitTerrainFollowing_Aircraft = 13;// 运输地形跟随_飞机
    optional bool StationTerrainFollowing_Aircraft = 14;// 阵位地形跟随_飞机
    optional int32 TransitThrottle_Submarine = 15;// 运输油门_潜艇
    optional int32 StationThrottle_Submarine = 16;// 阵位油门_潜艇
    optional float TransitDepth_Submarine = 17;//9999表示无设置  // 运输深度_潜艇
    optional float StationDepth_Submarine = 18;// 阵位深度_潜艇
    optional int32 TransitThrottle_Ship = 19;// 运输油门_舰船
    optional int32 StationThrottle_Ship = 20;// 阵位油门_舰船
    optional int32 TransitThrottle_Facility = 21;// 运输油门_设施
    optional int32 StationThrottle_Facility = 22;// 阵位油门_设施
    optional int32 Formation_Cruise = 23;// 巡航队形
    optional int32 A2AR_MaxNumberOfReceiversPerTanker = 24;// 空中加油_每艘油轮的最大接收器数量
    optional bool A2AR_OneTankingCycleOnly = 25;// 空中加油_仅限一个油轮循环
    optional int32 MinAircraftReq = 26;// 最小飞机数量
    optional bool ContinousCoverage_Enable = 27;// 连续覆盖启用
    optional bool ContinousCoverage_AllowQRA = 28;// 连续覆盖_QRA启用
    optional int32 ContinousCoverage_FlightGenerationMethod = 29;// 连续覆盖_航班方法
    optional int32 ContinousCoverage_StationTime = 30;// 连续覆盖_阵位时间
    optional int32 ContinousCoverage_Overlap = 31;// 连续覆盖_重叠
    optional int32 ContinousCoverage_Duration = 32;// 连续覆盖_持续时间
    optional bytes CCSList = 33;// 连续覆盖_阵位     THVectorCCS二进制序列化
    optional bytes QRAs = 34;// 连续覆盖_QRA     THVectorCCS二进制序列化
    optional int32 ContinousCoverage_QRANumberOfFlights = 35;// 连续覆盖_QRA航班数量
    optional int32 ContinousCoverage_QRAFlightGenerationMethod = 36;// 连续覆盖_QRA航班方法
    optional int32 ContinousCoverage_NumberOfFlightsNeededToAllowQRA = 37;// 连续覆盖_允许QRA所需的航班数量
}

//排雷任务
message THMissionMineClearing{
    optional THMission Mission = 1;//任务基类
    optional int32 Type = 2;//任务子类型(无）
    optional bytes Area = 3;//排雷区域 THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    optional bool OTR = 4;//OneThirdRule
    optional int32 TransitThrottle_Aircraft = 5;// 运输油门_飞机
    optional int32 StationThrottle_Aircraft = 6;// 阵位油门_飞机
    optional float TransitAltitude_Aircraft = 7;// 运输高度_飞机
    optional float StationAltitude_Aircraft = 8;// 阵位高度_飞机
    optional bool TransitTerrainFollowing_Aircraft = 9;// 运输地形跟随_飞机
    optional bool StationTerrainFollowing_Aircraft = 10;// 阵位地形跟随_飞机
    optional int32 TransitThrottle_Submarine = 11;// 运输油门_潜艇
    optional int32 StationThrottle_Submarine = 12;// 阵位油门_潜艇
    optional float TransitDepth_Submarine = 13;//9999表示无设置  // 运输深度_潜艇
    optional float StationDepth_Submarine = 14;// 阵位深度_潜艇
    optional int32 TransitThrottle_Ship = 15;// 运输油门_舰船
    optional int32 StationThrottle_Ship = 16;// 阵位油门_舰船
    optional int32 TransitThrottle_Facility = 17;// 运输油门_设施
    optional int32 StationThrottle_Facility = 18;// 阵位油门_设施
    optional int32 Formation_Cruise = 19;// 巡航队形
    optional int32 Formation_Attack = 20;// 攻击队形
    optional int32 MinAircraftReq = 21;// 最小飞机数量
}

//布雷任务
message THMissionMining{
    optional THMission Mission = 1;//任务基类
    optional int32 Type = 2;//任务子类型（无）
    optional bytes Area = 3;//布雷区域 THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    optional bool OTR = 4;//OneThirdRule
    optional int32 TransitThrottle_Aircraft = 5;// 运输油门_飞机
    optional int32 StationThrottle_Aircraft = 6;// 阵位油门_飞机
    optional float TransitAltitude_Aircraft = 7;// 运输高度_飞机
    optional float StationAltitude_Aircraft = 8;// 阵位高度_飞机
    optional bool TransitTerrainFollowing_Aircraft = 9;// 运输地形跟随_飞机
    optional bool StationTerrainFollowing_Aircraft = 10;// 阵位地形跟随_飞机
    optional int32 TransitThrottle_Submarine = 11;// 运输油门_潜艇
    optional int32 StationThrottle_Submarine = 12;// 阵位油门_潜艇
    optional float TransitDepth_Submarine = 13;//9999表示无设置  // 运输深度_潜艇
    optional float StationDepth_Submarine = 14;// 阵位深度_潜艇
    optional int32 TransitThrottle_Ship = 15;// 运输油门_舰船
    optional int32 StationThrottle_Ship = 16;// 阵位油门_舰船
    optional int32 TransitThrottle_Facility = 17;// 运输油门_设施
    optional int32 StationThrottle_Facility = 18;// 阵位油门_设施
    optional int32 Formation_Cruise = 19;// 巡航队形
    optional int64 AD = 20;//ArmingDelay 待命延迟
	optional int32 MinAircraftReq = 21;// 最小飞机数量
}

//自定义任务
message THMissionCustom{
    optional THMission Mission = 1;//任务基类
}

//任务基类
//各任务下特殊值定义：油门-1表示未指定、高度-9999表示未指定、深度9999表示未指定
message THMission{
    optional string ID = 1;
    optional string Name = 2;
    optional int32 Category = 3;   //任务类别：0-任务 1-任务池 2-任务包（EMissionCategory）   
    optional int32 Status = 4;     //任务状态：1-未启用 0-启用 （EMissionStatus）
    optional uint64 START = 5;   //任务启用时间UTC(毫秒)
    optional uint64 END = 6;     //任务失效时间UTC(毫秒)
    optional THDoctrine Doctrine = 7;//条令
    optional uint64 TakeOffTime = 8;// 起飞时间
    optional uint64 TimeOnTarget = 9;// 目标时间
	optional bool SISIH = 10;// ScrubIfSideIsHuman 如果推演方是人，则取消
	optional bool UseFlightplan = 11;// 使用飞行计划
	optional bool UseFlightplansOnly = 12;//UsePreGeneratedFlightplansOnly仅使用预生成的飞行计划
    optional bool IncludeInATO = 13;//包含在ATO中
	optional int32 TankerUsage = 14;//油轮使用,参考ETankerMethod定义
	optional bytes TankerMissionList = 15;//油轮任务ID列表    THVectorString二进制序列化
	optional int32 FlightSize = 16;// 航班大小
    optional int32 GroupSize = 17;// 编队大小
	optional string GroupName = 18;	//编组名称 （c++未找到变量）
    optional bool Deactivation_UnassignUnits = 19;// 停用_取消分配单元
    optional bool CheckBox_OrderRTB = 20;// 停用_命令返回基地
    optional bool CheckBox_DeleteMission = 21;// 停用_删除任务
    optional bool LaunchMissionWithoutTankersInPlace = 22;// 无油轮就位的启动任务
    optional int32 TankerMinNumber_Total = 23;// 油轮最小数量_总共
    optional int32 TankerMinNumber_Airborne = 24;// 油轮最小数量_在空
    optional int32 TankerMinNumber_Station = 25;// 油轮最小数量_阵位
    optional int32 MaxReceiversInQueuePerTanker_Airborne = 26;// 每个油轮队列中的最大接收器数_在空
    optional int32 FuelQtyToStartLookingForTanker_Airborne = 27;// 开始寻找油轮的燃油量_在空
    optional int32 TankerMaxDistance_Airborne = 28;// 油轮最大距离_在空
    optional bool TankerFollowsReceivers = 29;// 油轮跟随接收者  
	optional bool UseFlightSizeHardLimit = 30;// 使用航班大小限制
    optional bool UseGroupSizeHardLimit = 31;// 使用组大小限制
    map<string, THFlight> Flight = 32;//航班，key为航班ID
    optional bytes EmptySlotsList = 33;// 空飞机插槽（EmptyAircraftSlot）    THVectorEmptySlot二进制序列化
    optional bytes ListNavigation1 = 34;    //出航航线    THVectorWaypoint二进制序列化
    optional bytes ListNavigation2 = 35;    //阵位航线    THVectorWaypoint二进制序列化
    optional bytes ListNavigation3 = 36;    //返航航线    THVectorWaypoint二进制序列化

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}


//航班
message THFlight{
    optional string ID = 1;
    optional string ParentMissionOrPackageObjectID = 2;// 父任务或包对象ID
    optional string ParentMissionOrPackageName = 3;// 父任务或包名称
    optional string Callsign = 4;// 呼号
    optional int32 Task = 5;// 任务
    optional int32 Type = 6;// 类型
    optional string TakeOffLocation_HostUnitObjectID = 7;// 起飞位置_主机单元对象ID
    optional string TakeOffLocation_HostUnitObjectName = 8;// 起飞位置_主机单元对象名称
    optional string LandingLocation_HostUnitObjectID = 9;// 着陆位置_主机单元对象ID
    optional string LandingLocation_HostUnitObjectName = 10;// 着陆位置_主机单元对象名称
    optional string AlternativeLandingLocation_HostUnitObjectID = 11;// 备选着陆位置_主机单元对象ID
    optional string AlternativeLandingLocation_HostUnitObjectName = 12;// 备选着陆位置_主机单元对象名称
    optional uint64 EarliestTaskingTime = 13;// 最早任务时间(毫秒)
    optional uint64 LatestTaskingTime = 14;// 最大就绪时间
    optional uint64 EarliestLaunchTime = 15;// 最早的启动时间
    optional uint64 LatestLaunchTime = 16;// 最近启动时间
    optional float MaxReadyTime = 17;// 最长准备时间
    optional int32 Priority = 18;// 优先
    optional int32 Status = 19;// 航班状态
    optional int32 CreatedBy = 20;// 被谁创建
    optional int32 EditedBy = 21;// 被谁编辑
    optional int32 DesiredAircraftQty = 22;// 期望飞机数量
    optional int32 MinimumAircraftQty = 23;// 最小飞机数量
    optional int32 AssignedAircraftQty = 24;// 分配的飞机数量
    optional int32 ReadyAircraftQty = 25;// 准备好的飞机数量
    optional int32 ReferenceUnit_DBID = 26;// 参考单元DBID
    optional string ReferenceUnit_ObjectID = 27;// 参考单元ID
    optional string ReferenceUnit_Name = 28;// 参考单元名称
    optional int32 LoadoutDBID = 29;// 参考单元ID
    optional string LoadoutName = 30;// 挂载方案名称
    optional bool UsedByFlight = 31;// 按航班使用
    optional bool IsEscort = 32;// 护卫
    optional string TaskPool_ID = 33;// 任务池ID
    optional string PrimaryTarget_ID = 34;// 主要目标id
    optional string TaskPool_Name = 35;// 任务池名称
    optional int32 Age = 36;// 年龄
    optional bytes FlightPlan = 37;// 飞行计划    THVectorWaypoint二进制序列化
    optional bytes ErrorList = 38;// 错误列表    THVectorString二进制序列化
    optional bytes NotificationList = 39;// 通知列表    THVectorString二进制序列化
    optional bool HasCriticalError = 40;// 有严重错误
}

// 空飞机插槽
message THEmptySlot{
    optional int32 DBID = 1;// 关联单元DBID ReferenceUnit_DBID
    optional string UnitClass = 2;// 关联单元分类 ReferenceUnit_UnitClass
    optional int32 LoadoutDBID = 3;// 挂载方案DBID
    optional string LoadoutName = 4;// 挂载方案名称
    optional bool Loadout_ExcludeOptionalWeapons = 5;// 挂载方案_排除可选武器
    optional bool Loadout_QuickTurnaround = 6;// 挂载方案_快速周转
    optional int32 Loadout_QuickTurnaround_NumberOfSorties = 7;// 挂载方案_快速周转_出击数量
    optional int32 Loadout_QuickTurnaround_MaxSorties = 8;// 挂载方案_快速周转_最大出击数量
    optional string CurrentHostUnit_ObjectID = 9;// 当前主机单元ID
    optional string CurrentHostUnit_Name = 10;// 当前主机单元名称
    optional bool IsEscort = 11;// 是护送
    optional string MissionFlight_ObjectID = 12;// 任务航班ID
}



//*************************事件编辑器******************************//
message THEventColl{
	optional THEventTriggerColl EventTriggers = 1;//事件触发器
	optional THEventConditionColl EventConditions = 2;//事件条件
	optional THEventActionColl EventActions = 3;//事件行动
	map<string, THSimEvent> SimEvents = 4;//仿真事件  
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}   

message THEventTriggerColl{
	map<string, THEventTrigger_UnitDestroyed> EventTrigger_UnitDestroyed = 1; //单元销毁
	map<string, THEventTrigger_UnitDamaged> EventTrigger_UnitDamaged = 2;//
	map<string, THEventTrigger_Points> EventTrigger_Points = 3; //得分
	map<string, THEventTrigger_Time> EventTrigger_Time = 4;//时间
	map<string, THEventTrigger_UnitRemainsInArea> EventTrigger_UnitRemainsInArea = 5;//单元仍在区域内
	map<string, THEventTrigger_UnitEntersArea> EventTrigger_UnitEntersArea = 6;//单元进入区域
	map<string, THEventTrigger_RandomTime> EventTrigger_RandomTime = 7;//随机时间
	map<string, THEventTrigger_UnitDetected> EventTrigger_UnitDetected = 8;//探测到单元
	map<string, THEventTrigger_ScenLoaded> EventTrigger_ScenLoaded = 9;//想定加载
	map<string, THEventTrigger_RegularTime> EventTrigger_RegularTime = 10;//常规时间
	map<string, THEventTrigger_ScenEnded> EventTrigger_ScenEnded = 11;//想定结束 

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THEventConditionColl{
	map<string, THEventCondition_SidePosture> EventCondition_SidePosture = 1;//
	map<string, THEventCondition_ScenHasStarted> EventCondition_ScenHasStarted = 2;//
	map<string, THEventCondition_LuaScript> EventCondition_LuaScript = 3;//

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THEventActionColl{
	map<string, THEventAction_Points> EventAction_Points = 1;//
	map<string, THEventAction_EndScenario> EventAction_EndScenario = 2;//
	map<string, THEventAction_TeleportInArea> EventAction_TeleportInArea = 3;//
	map<string, THEventAction_Message> EventAction_Message = 4;//
	map<string, THEventAction_ChangeMissionStatus> EventAction_ChangeMissionStatus = 5;//
	map<string, THEventAction_LuaScript> EventAction_LuaScript = 6;//

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THSimEvent{
    optional string ID = 1;
	optional string Description = 2;
	optional bool IsRepeatable = 3;
	optional bool IsActive = 4;
	optional bool IsShown = 5;
	optional int32 Probability = 6;
	map<string, string> Triggers = 7;//
	map<string, string> Conditions = 8;//
	map<string, string> Actions = 9;//

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THEventTrigger_UnitDestroyed{
	optional string ID = 1;
	optional string Description = 2;
	optional THTargetFilter TargetFilter = 3;
}

message THTargetFilter{
	optional string ID = 1;
	optional string TargetSide = 2;
	optional int32 TargetType = 3;
	optional int32 TargetSubType = 4;
	optional int32 SpecificUnitClass = 5;//目标分类
	optional string SpecificUnitID = 6;//特定单元ID
	optional string WeaponSide = 7;//武器阵营
	optional string WeaponID = 8;//武器ID
}

message THEventTrigger_UnitDamaged{
	optional string ID = 1;
	optional string Description = 2;
	optional THTargetFilter TargetFilter = 3;
	optional int32 DamagePercent = 4;
}

message THEventTrigger_Points{
	optional string ID = 1;
	optional string Description = 2;
	optional string SideID = 3;
	optional int32 PointValue = 4;
	optional int32 ReachDirection = 5;
}

message THEventTrigger_Time{
	optional string ID = 1;
	optional string Description = 2;
    optional uint64 Time = 3;
}

message THEventTrigger_UnitRemainsInArea{
	optional string ID = 1;
	optional string Description = 2;
	optional THTargetFilter TargetFilter = 3;
	optional bytes Area = 4;//区域  THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSituationInfo下全局参考点ReferencePoints查找THRefPoint
	optional int32 TD = 5;
	optional int32 TA = 6;
}

message THEventTrigger_UnitEntersArea{
	optional string ID = 1;
	optional string Description = 2;
	optional THTargetFilter TargetFilter = 3;
	optional bytes Area = 4;//区域  THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSituationInfo下全局参考点ReferencePoints查找THRefPoint
	optional uint64 ETOA = 5;
	optional uint64 LTOA = 6;
	optional int32 ExitArea = 7;
}

message THEventTrigger_RandomTime{
	optional string ID = 1;
	optional string Description = 2;
	optional uint64 EarliestTime = 3;
	optional uint64 LatestTime = 4;
}

message THEventTrigger_UnitDetected{
	optional string ID = 1;
	optional string Description = 2;
	optional THTargetFilter TargetFilter = 3;
	optional bytes Area = 4;//区域  THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSituationInfo下全局参考点ReferencePoints查找THRefPoint
	optional string DetectorSideID = 5;
	optional int32 MCL = 6;
}

message THEventTrigger_ScenLoaded{
	optional string ID = 1;
	optional string Description = 2;
}

message THEventTrigger_RegularTime{
	optional string ID = 1;
	optional string Description = 2;
	optional int32 Interval = 3;
}

message THEventTrigger_ScenEnded{
	optional string ID = 1;
	optional string Description = 2;
}

message THEventTrigger_UnitExpend{
	optional string ID = 1;
	optional string Description = 2;
	optional THTargetFilter TargetFilter = 3;
}

message THEventCondition_SidePosture{
	optional string ID = 1;
	optional string Description = 2;
	optional string ObserverSideID = 3;
	optional string TargetSideID = 4;
	optional int32 TargetPosture = 5;
	optional int32 NOT = 6;
}

message THEventCondition_ScenHasStarted{
	optional string ID = 1;
	optional string Description = 2;
	optional int32 NOT = 3;
}

message THEventCondition_LuaScript{
	optional string ID = 1;
	optional string Description = 2;
	optional string ScriptText = 3;
}

message THEventAction_Points{
	optional string ID = 1;
	optional string Description = 2;
	optional string SideID = 3;
	optional int32 PointChange = 4;
}

message THEventAction_EndScenario{
	optional string ID = 1;
	optional string Description = 2;
}

message THEventAction_TeleportInArea{
	optional string ID = 1;
	optional string Description = 2;
	optional bytes UnitIDs = 3;//THVectorString二进制序列化
	optional bytes Area = 4;//区域  THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSituationInfo下全局参考点ReferencePoints查找THRefPoint
}

message THEventAction_Message{
	optional string ID = 1;
	optional string Description = 2;
	optional string SideID = 3;//
	optional string UnitID = 4;//
	optional string Text = 5;//
}

message THEventAction_ChangeMissionStatus{
	optional string ID = 1;
	optional string Description = 2;
	optional string MissionID = 3;//
	optional int32 NewStatus = 4;//
}

message THEventAction_LuaScript{
	optional string ID = 1;
	optional string Description = 2;
	optional string ScriptText = 3;
}

//封锁区
message THExclusionZone{
    optional string ID = 1;//区域ID
	optional string Description = 2;//描述
	optional bytes Area = 3;//区域参考点ID列表  THVectorString二进制序列化
    optional string AffectedUnitTypes = 4;//受影响的单元类型
	optional int32 MarkViolatorAs = 5;//标记违规者为  参加EPostureStance
	optional bool IsActive = 6;//是否处于活动状态
	optional double Alt = 7;//高度
}

//禁航区
message THNoNavZone{
    optional string ID = 1;//区域ID
	optional string Description = 2;//描述
	optional bytes Area = 3;//区域参考点ID列表  THVectorString二进制序列化
    optional string AffectedUnitTypes = 4;//受影响的单元类型
	optional bool IsLocked = 5;//是否锁定
	optional bool IsActive = 6;//是否处于活动状态
	optional double Alt = 7;//高度
}

//空中走廊
message THAirCorridorZone{
    optional string ID = 1;//区域ID
	optional string Description = 2;//描述
	optional bytes Area = 3;//区域  THVectorString二进制序列化      记录RefPoint ID列表，通过ID在THSide下ReferencePoints查找THRefPoint
    optional string AffectedUnitTypes = 4;//受影响的单元类型
	optional bool IsActive = 5;//是否处于活动状态
    optional double Diameter = 6;//直径 公里
	optional double Alt = 7;//高度
}

message THSpecialAction{
	optional string ID = 1;
	optional string Description = 2;
    optional string Name = 3;
	optional bool IsRepeatable = 4;
	optional bool IsActive = 5;
	optional string ScriptText = 6;
}

message THNonActiveUnitColl{
	map<string, THExplosion> Explosions = 1;//爆炸
	map<string, THWeaponImpact> WeaponImpacts = 2;//武器撞击
	map<string, THUnguidedWeapon> UnguidedWeapons = 3;//非制导武器
	map<string, THChaffCloud> ChaffClouds = 4;//箔条云

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THExplosion{
    optional string ID = 1;  
    optional string Name = 2;
    optional double Lon = 3;    //经度
    optional double Lat = 4;     //纬度
    optional double CurrentAltitude = 5;  //当前高度
    optional double CurrentHeading = 6;   //朝向
    optional double Pitch = 7;      // 纵摇
    optional double Roll = 8;       //横摇
    optional double CurrentSpeed = 9;//当前速度
	optional double Lon_Graphics = 10;
	optional double Lat_Graphics = 11;
	optional double Yield = 12;// 预期当量
	optional double Yield_Graphics = 13;// 预期当量_图样
	optional double TTL = 14;// 持续时间
	optional int32 WarheadType = 15;// 弹头类型EWarheadType
	optional int32 WeaponType = 16;// 武器类型EWeaponType
	optional int32 ExpType = 17;// 爆炸物类型EWarheadExplosivesType
	optional string ExcludedUnit = 18;//目标ID
}
//武器撞击
message THWeaponImpact{
    optional string ID = 1;//ID
	optional double Longitude = 2;//经度
	optional double Latitude = 3;//纬度
	optional double CurrentAltitude = 4;//经度
	optional int32 Type = 5;//撞击类型
	optional double Age = 6;//时间
	optional string message = 7;
}


message THUnguidedWeapon{
    optional string ID = 1;  
    optional string Name = 2;
    optional double Lon = 3;    //经度
    optional double Lat = 4;     //纬度
    optional double CurrentAltitude = 5;  //当前高度
    optional double CurrentHeading = 6;   //朝向
    optional double Pitch = 7;      // 纵摇
    optional double Roll = 8;       //横摇
    optional double CurrentSpeed = 9;//当前速度
	optional string side = 10;//推演方名称
	optional int32 DBID = 11;// 数据库表内的ID
	optional double ImpactAltitude = 12;// 撞击高度
	optional double CEP_Surface = 13;// 圆概率误差_水面
	optional double CEP_Land = 14;// 圆概率误差_陆地
	optional string Target = 15;//目标ID
	optional double TimeToLive = 16;// 生存时间
	optional double TimeToDetonate = 17;// 引爆时间
	optional THGeoPoint LaunchPoint = 18;// 发射点
	optional string FiringParent = 19;// 发射父单元ID
}

message THChaffCloud{
    optional string ID = 1;  
    optional double Lon = 2;    //经度
    optional double Lat = 3;     //纬度
    optional double CurrentAltitude = 4;  //当前高度
    optional double CurrentHeading = 5;   //朝向
	optional double Age = 6;//已存在时长
}

message THWeatherProfile{
    optional double Temp = 1;// 平均温度
    optional double Pressure = 2;// 大气压
    optional double RL = 3;//相对湿度RelativeHumidity
    optional double GRC = 4;//地面反射系数GroundReflectionCoeff
    optional double DN = 5;//DELTA_N
    optional double SDH = 6;//SurfaceDuctHeight表面波导高度
    optional double EDH = 7;//EvaporationDuctHeight蒸发波导高度
    optional double RFR = 8;//RainfallRate降雨率
    optional double FUR = 9;// 在雨中的部分
    optional int32 SS = 10;//SeaState海况
    optional int32 EC = 11;//电磁复杂度
    optional int32 ECB = 12;//电磁复杂度基准值
    optional int32 EE = 13;//电磁能量值
    optional int32 EEB = 14;//电磁能量值基准值
}

message THFeatureOption{
    optional bool DetailedGunFireControl = 1;//精细的枪支火力控制
    optional bool UnlimitedBaseMags = 2;//无限基地弹匣
    optional bool RealisticSubComms = 3;//现实的潜艇通信
    optional  bool LandTypeEffects = 4;//土地类型影响
    optional bool CommsJamming = 5;//通信干扰
    optional bool CommsDisruption = 6;//通信中断
    optional bool AircraftDamage = 7;//飞机损坏
}


//攻击目标
message THTargetingEntry{
	optional string ID=1;
	optional string ActualUnitID=2;
	optional int32 BHVR=3;//参考ETargetingBehavior定义
}

//实体决策
message THAI {
	optional int32 AltitudePreset=1;//高度预设枚举值定义参见：飞机AircraftAltitudePreset，潜艇SubmarineDepthPreset
    optional bool PTOE=2;//PrimaryTargetOverrideExists覆盖存在的主要目标
    optional bool FCLIO=3;//_FerryCycleLegIsOutbound离开转场循环航线路段
    optional bool ET_E=4;//EvaluateTargets_Enabled评估目标_启用
    optional bool DPT_E=5;//DeterminePrimaryTarget_Enabled确定主要目标_启用
    optional bool IE=6;//护航
	optional bool HPos=7;//保持阵位
	map<string, THTargetingEntry> TargetList=8;//装备单元对应的攻击目标信息
	optional string PrimaryTarget=9;//主要目标id
	optional int32 PrimaryTarget_Type=10;//主要目标类型

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//航路点
message THWaypoint{
	optional THGeoPoint GeoPoint=1;
    optional int32 Type=2;//EWaypointType 航路点类型
	optional int32 Category=3;//EWaypointCategory 航路点类别
	optional int32 ThrottlePreset=4;//EUnitThrottlePreset 单元油门预设
	optional int32 AltitudePreset=5;//EAircraftAltitudePreset 飞机高度预设 
	optional int32 DepthPreset=6;//ESubmarineDepthPreset 潜艇深度预设
	optional int32 TurnRate=7;//ETurnRateCategory 转弯速率_导航
    optional float Hold_Time=8;//停留时间
	optional float Station_Time=9;//阵位时间
	optional string Description=10;//航路点描述
}

//武器分配
message THWeaponAssignments{
	optional string ID=1;//
    optional int32 Weapon=2;//武器DBID
    optional int32 Quantity=3;//武器数量
    optional string Target=4;//攻击目标ID
    optional uint64 ScheduledFireTime=5;//预计开火时间
    optional bytes PlottedCourse=6;//绘制航线    THVectorWaypoint二进制序列化
    optional bool ManualFire=7;//手动开火

}

//武器
message THWeaponry{
    optional THWeaponAssignments WeaponAssignments=1;//武器分配信息
    optional bool LCS=2;//箔条连续爆破
    optional bool IDLZ=3;// 动态发射区

}

//平台机动
message THKinematics{
	optional int32 AMV=1;//ActualMovementVector 实际运动矢量
    optional bool DOA=2;//mDesiredAltitudeOverride 期望高度覆盖
	optional double ReserveFuel=3;//储备燃油
	optional int32 SP=4;//油门预设
	optional int32 SADC=5;//ESprintAndDriftCadence 冲刺或漂流
	optional bool bDSO=6;//DesiredSpeedOverride 是否开启手动预设速度
	optional string Cavitation=7;//表示舰船、潜艇空化状态文本
}

//平台导航
message THNavigator{
	optional bytes PC=1;//THVectorWaypoint二进制序列化
	optional bool AvoidCavitation = 2;//启用避免空化
	optional bool SprintDrift = 3;//启用冲刺/侧滑模式
}

//平台传感器
message THSensory{
	optional bool ObE=1;//单元遵守电磁管控（禁用手动传感器控制）
	optional string ContactEntry=2;//Contact id数组，以逗号分割，例：k55efi-0hn8r344d8hhu,k55efi-0hn8r344dertce
	optional bool JammerHas = 3;//mJammerUnits（干扰装置）数组是否有值
}

//火灾强度等级
//enum EFireIntensityLevel
//{
//	NoFire = 0;//无火灾
//	Minor = 1;//轻微的火灾
//	Major = 2;//大的火灾
//	Severe = 3;//严重的火灾
//	Conflagration = 4;//无法控制的火灾
//}
//洪水强度等级
//enum EFloodingIntensityLevel
//{
//	NoFlooding = 0;//无淹没
//	Minor = 1;//轻微的淹没
//	Major = 2;//大量的淹没
//	Severe = 3;//严重的淹没
//	Capsizing = 4;//倾覆的危险
//}

//平台毁伤
message THDamage{
	optional int32 Fire = 1;//值参考EFireIntensityLevel
	optional int32 Flood = 2;//值参考EFloodingIntensityLevel
	optional float TTNSDC = 3;//
}

//平台通信
message THCommStuff{
	optional bool OOC = 1;//
	optional bool ICS = 2;//
	optional bool HBS = 3;//
}

message THWRA{
    optional int32 WeaponQty = 1;//每次齐射武器数量
    optional int32 ShooterQty = 2;//每次齐射者数量
    optional int32 SelfDefenceRange = 3;//自卫距离
    optional int32 FiringRange = 4;//射击距离   
}



// 连续覆盖阵位
message THCCS{
    optional string FlightObjectID = 1;// 航班ID
    optional int32 AircraftDBID = 2;// 飞机DBID
    optional int32 LoadoutDBID = 3;// 挂载方案DBID
    optional string HostUnitObjectID = 4;// 主机单元ID
    optional uint64 StationStartTime = 5;// 进攻开始时间
    optional uint64 StationEndTime = 6;// 进攻结束时间
    optional string FlightplanTemplateObjectID = 7;// 飞行计划模板ID
}




//////////////////////////////////////////////////////////////////////////////////////////////////////////////

//几何点
message THGeoPoint{
    optional string ID=1;
    optional string Name=2;
    optional double Lon=3;
    optional double Lat=4;
    optional double Alt=5;
}
//参考点
message THRefPoint{ 
    optional int32 OriType =1;//参考实体方向类型   0-固定  1-旋转
    optional string OriUnitID =2;//参考实体的GUID
    optional string ID =3;
    optional string Name =4;
    optional double Lon =5; 
    optional double Lat =6;
    optional double Alt =7;
}

//位置及姿态信息
message THPosition {
    optional double Lon=1;    //经度
    optional double Lat=2;     //纬度
    optional double CurrentAltitude=3;  //当前高度
    optional double CurrentHeading=4;   //朝向
    optional double Pitch=5;      // 纵摇
    optional double Roll=6;       //横摇
}

message THMapWRA{
    map<string, THWRA> v = 1;//
	repeated string mapdel = 100;//要删除的key列表
}

//条令
message THDoctrine{
    optional int32 Nukes = 1; //使用核武器（参考EUseNukesAllowed定义）0-No,1-Yes
    optional int32 WCS_Air = 2; //武器控制状态，对空
    optional int32 WCS_Surface = 3;//武器控制状态，对海
    optional int32 WCS_Submarine = 4;//武器控制状态，对潜
    optional int32 WCS_Land = 5;//武器控制状态，对地
    optional int32 IPCWA = 6;//攻击时忽略计划航线
    optional int32 WinchesterShotgunRTB = 7; ////武器状态返航
    optional int32 BingoJokerRTB = 8;////燃油状态返航
    optional int32 JettisonOrdnance = 9; //抛弃弹药
    optional int32 BVRLogic = 10;//防空禁止开火
    optional int32 BTAT = 11;//接战模糊目标
    optional int32 AE = 12;//自动规避
    optional int32 MS = 13;//与目标保持距离
    optional int32 GS = 14;//A/G扫射
    optional int32 UR = 15;//加油/途中补给
    optional int32 RS = 16;//加油/途中补给选择
    optional int32 ST = 17;//接战临机目标
    optional int32 SAM_ASUW = 18; //在反水面战模式下使用地对空导弹
    optional int32 QuickTurnAround = 19; //快速周转
    optional int32 AirOpsTempo = 20;//空中作战节奏
    optional int32 BingoJoker = 21;////燃油状态预先规划
    optional int32 WinchesterShotgun = 22;////武器状态-预先规划
    optional int32 IgnoreEMCONUnderAttack = 23; //受攻击时忽略电磁管控
    optional int32 UseTorpedoesKinematicRange = 24; //鱼雷使用动力航程
    optional int32 RefuelAllies =25 ;//加油/途中补给友军
    optional int32 AvoidContact = 26;//避免接触
    optional int32 DiveWhenThreatsDetected = 27;//检测到威胁时下潜
    optional int32 RechargePercentagePatrol = 28;//充电电池，运输/站点
    optional int32 RechargePercentageAttack = 29;//充电电池，进攻/防守
    optional int32 AIPUsage = 30;//空气独立推进(AIP)使用
    optional int32 DippingSonar = 31; //使用吊放声纳
    optional int32 SurfNav = 32;//反舰导航方法
    optional int32 SubNav = 33;//反潜导航方法
    optional int32 LandNav = 34;//陆战导航方法
	optional int32 E_Radar = 35; //电磁管控-雷达
	optional int32 E_Sonar = 36; //电磁管控-声纳
	optional int32 E_OECM = 37;  //电磁管控-干扰机
	optional int32 WithdrawDamageThreshold = 38;            //撤退--毁伤程度大于
	optional int32 WithdrawFuelThreshold = 39;				//撤退--燃油少于
	optional int32 WithdrawAttackThreshold = 40;			//撤退--主要攻击攻击武器至少
	optional int32 WithdrawDefenceThreshold = 41;			//撤退--主要防御武器至少
	optional int32 RedeployDamageThreshold = 42;            //重新部署--毁伤程度小于
	optional int32 RedeployFuelThreshold = 43;				//重新部署--燃油至少处于
	optional int32 RedeployAttackThreshold = 44;			//重新部署--主要攻击武器处于
	optional int32 RedeployDefenceThreshold = 45;			//重新部署--主要防御武器处于
    optional uint64 BitAuthority = 46;//条令修改权限位标识（参考EDoctrineItemBit定义）
    optional uint64 BitInherit = 47;//继承位标识（参考EDoctrineItemBit定义）
    map<string, THMapWRA> WRA = 48;//只有修改过的条目才有值 武器发射授权（KEY1-武器DBID  KEY2-目标类型   VALUE2-授权）

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}


//弹头
message THWarhead{ 
	optional int32 DBID=1;
	optional double DP=2;//破坏点
	optional int32 Type=3;// EWarheadType 弹头类型
	optional int32 ExpType=4;// EWarheadExplosivesType弹头爆炸物类型
	optional int32 Cal=5;//弹头口径
	optional int32 NOW=6;//弹头数量
	optional int32 CBDAL=7;//集束炸弹扩散范围长度
	optional int32 CBDAW=8;//集束炸弹扩散范围宽度
}

message THWeaponRec{
	optional string Name = 1;
	optional int32 DefaultLoad = 2;//默认挂载量
	optional int32 CurrentLoad = 3;//当前挂载量       (此值会变化，需要发出变化通知)
	optional int32 MaxLoad = 4;//最大挂载量
	optional int32 ROF = 5;//发射时间间隔
	optional bool OW = 6;
	optional bool IW = 7;
	optional int32 Multiple = 8;
	optional int32 WeaponDBID = 9;
	optional double TimeToFire = 10;
	optional bool IsTank = 11;
	optional double FuelTank = 12;
	optional double AirRangeMax = 13;//对空最大打击范围
	optional double AirRangeMin = 14;//对空最小打击范围
	optional double SurfaceRangeMax = 15;//对海最大打击范围
	optional double SurfaceRangeMin = 16;//对海最小打击范围
	optional double LandRangeMax = 17;//对陆最大打击范围
	optional double LandRangeMin = 18;//对陆最小打击范围
	optional double SubsurfaceRangeMax = 19;//对潜最大打击范围
	optional double SubsurfaceRangeMin = 20;//对潜最小打击范围
	map<string, THWarhead> Warheads = 21;//弹头
	optional int32 Guidance = 22;//制导方式 参考WeaponGuidanceType定义
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//组件
message THComponent{  
    optional int32 DBID = 1;//数据库实体ID
	optional int32 Type = 2;     //类型
    optional int32 Status = 3;//0-运转  1-损坏   2-毁灭    
    optional string Name = 4;//组件名称
    optional string ExceptionStatus = 5;//异常状态    
    optional int32 DamageSeverity = 6;// EDamageSeverityFactor 损伤严重性系数
} 

//通信设备
message THComponentCommDevice{
    optional THComponent Component = 1;
    optional int32 OC = 2;//占用的通道数 
	optional bool IJ = 3;//是否受干扰
	optional bool PS = 4;// 父级特定
	optional bool IsActive = 5;// 处于活动状态（没找到）
	map<string, string> Link=6;//<对方通信单元GUID,对方通信组件>
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//传感器
message THComponentSensor{
    optional THComponent Component=1;
    optional bool IsActive = 2;// 处于活动状态
	optional double MaxRange = 3;// 最大范围
    optional double MinRange = 4;// 最小范围
    optional int64 WorkFreq = 5;//工作频率
    optional bool CanBeActive = 6;//传感器能否开关操作
	optional int32 Role = 7;
	optional string Cov = 8;
	optional string Cov_Ill = 9;
}

//挂载武器,包含打击范围
message THComponentMount{
    optional THComponent Component=1;
	optional string FireTime = 2;
	optional double TTF = 3;//开火时间
	optional int32 ReloadStatus = 4;//重新加载状态  参考EReloadStatus定义
	optional double DP = 5;
	optional string RPriority = 6;//优先重载的武器ID [WeaponDBID]，逗号分割，例：103,801
	optional double AO_B = 7;// 瞄准点偏移_方位
	optional double AO_D = 8;// 瞄准点偏移_距离
	optional double TTRA = 9;// 重新加载尝试的时间
	map<string, THWeaponRec> WeaponRecs = 10;// 挂载的武器
	map<string, THWeaponRec> MagazineWeaponRecs = 11;// 弹药库
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THComponentMagazine{
    optional THComponent Component=1;
	map<string, THWeaponRec> Weapons=2;//
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//装载物资
message THComponentCargo{
    optional THComponent Component=1;
	optional string Mission=2;//分配给物资的任务id
	map<string, THComponentMount> Mounts=3;//
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//航空设施
message THComponentAirFacility{
    optional THComponent Component=1;
	optional int32 Size=2;
	optional int32 Capacity=3;
}

//停靠设施
message THComponentDockFacility{
    optional THComponent Component=1;
}	

//发动机
message THComponentPropulsion{ 
    optional THComponent Component=1;
} 

//燃料
message THFuelRec{
    optional int32 DBID=1;
    optional double MQ=2;//挂载总量
    optional double CQ=3;//当前剩余量
    optional int32 FT=4;//EFuelType 燃料类型
} 



//挂载方案
message THLoadout{
	optional int32 DBID = 1;
	optional string Name = 2;
	map<string, THWeaponRec> WeaponRecs = 3;//挂载方案下的武器信息
	optional bool QuickTurnaround = 4;//是否启用快速周转
	optional int32 QuickTurnaround_ReadyTime = 5;//快速周转待机时长
	optional int32 QuickTurnaround_AirborneTime = 6;//快速周转最大飞行时长
	optional int32 QuickTurnaround_MaxSorties = 7;//快速周转最大飞行架次
	optional int32 QuickTurnaround_AdditionalTimePenalty = 8;//快速周转惩罚时间

	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//探测范围
message THRangeSymbol {
	optional double Range = 1;//距离（海里）
	optional double LeftArc = 2;//扇形的启始角
	optional double RightArc = 3;//扇形的终止角
	optional int32 Type = 4;//1－圆  2－扇形
	optional int32 Color = 5;//区分探测类型：1 - 地面  2 - 空中  3 - 水下
}

message THXSection{
	optional int32 Type = 1;//参考ESignatureType定义
	optional double Front = 2;
	optional double Side = 3;
	optional double Rear = 4;
	optional double Top = 5;
}

//飞机停靠机场
message THAirOps{
    optional string HAF=1;//机场设施ID：如机库，跑道，跑道入口
	optional string AHU=2;//分配的HOST单元ID(HOST例：飞机停靠的机场)
	optional string CHU=3;//当前的HOST单元ID
	optional string Status=4;//当前空中业务状态描述，参考EAirOpsCondition
	optional string ReadyTime=5;// 空中业务时间描述
	optional string QuickTurnaround=6;//快速转运
	optional bool QTAroEna=7;//能否启用快速转运
	optional int32 Condition=8;//参考EAirOpsCondition定义
	optional float CT=9;//mfConditionTimer状态计时器
	optional bytes RQ=10;//加油队列  THVectorString二进制序列化
} 

//停靠码头
message THDockingOps{ 
    optional string HDF=1;//码头设施id：如码头，坞仓
	optional string AHU=2;//分配的HOST单元ID(HOST例：飞机停靠的机场)
	optional string CHU=3;//当前的HOST单元ID
	optional string Status=4;//// 停靠业务状态描述，参考EDockingOpsCondition
	optional string ReadyTime=5;// 停靠业务时间描述
	optional int32 Condition=6;//参考EDockingOpsCondition定义
}

//情报
message THContact{ 
	optional string Side=1; //推演方id
    optional string Name=2;
    optional int32 Type=3;     //类型
    optional double CurrentSpeed=4;//当前速度
    optional string ActualUnitID=5;//真实实体的ID  
    optional int32 DBID=6;//真实实体的数据库ID 
    optional int32 IDStatus=7;//==2，知道飞机舰船导弹，==3，知道具体型号，==4，代表什么都知道了  
    optional int32 ActType=8;//真实实体的类型  
    optional int32 ActCategory=9;//真实实体的小类  
    optional double Age=10;//探测情报丢失时间长度 以120S情报丢失则为悲观  
    optional double HeldFor=11;//接触保持探测时长
    optional bytes UncertaintyArea=12;//不确定性区域  THVectorGeoPoint二进制序列化
    map<string, int32> Stance=13;//与各推演方的相对立场
    optional bool ShowMark=14;//显示特殊标记（新增）
    optional string BatchNum=15;//批号
	optional string NetNodeID=16; // 当前所属通信节点ID
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//通信节点
message THCommNode{
	optional string CommLink = 1;// 通信计划
	optional string CommPPLI = 2;// 通信PPLI
	optional double RevisedCommunicationDistance = 3;// 实时修改后的通信距离
	optional int32 RevisedCommunicationBandwidth = 4;// 获取实时修改后通信带宽
}

message THClCommBRule{
	optional int32 MaxMemberNumber = 1;// 集群最大成员数
	optional int32 SupType = 2;// 集群包含成员类型 
}

message THClCommARule{
	optional THClCommBRule ClCommBRule = 1;
	optional string StartTime = 2;// 开始时间
	optional string EndTime = 3;// 结束时间
	optional bool IsFixed = 4;// 是否是固定区域
	optional string Regio = 5;// 区域参考点ID列表
	optional float Radius = 6;// 区域半径
	optional string UnitID = 7;// 绑定单元ID
}

//集群
message THCLComm{
	optional int32 CLColor = 1;// 颜色
	optional string CLSideID = 2;// 推演方ID
	optional float CLComLat = 3;// 集群纬度
	optional float CLComLon = 4;// 集群经度
	optional string CLMember = 5;// 成员ID列表
	optional int32 CLType = 6;// 集群类型 0-默认 1-静态 2-动态
	optional THClCommARule CLRule = 7;// 集群规则
	optional string CLComPlan = 8;// 通信计划
	optional string CLComPPLI = 9;// 通信PPLI
	optional string CLInforCenterID = 10;// 情报中心ID
	optional string CLName = 11;// 名称
}

//探测到的最近信息记录
message THLastDetection  { 
    optional string UnitID = 1;//探测源的载体单元GUID
	optional string SensorID = 2;//传感器GUID
	optional double DetectionRange = 3;//探测范围
	optional int32 POSSUB = 4;//可能的探测源类型
	optional uint64 DetectionTime = 5;//探测时间
	optional string ContactID = 6;//情报ID
	optional string UnitName = 7;//探测源的载体单元名称
	optional string SensorName = 8;//传感器名称
	optional string SideName = 9;//推演方名称
}

message THLastDetectionList
{
	repeated THLastDetection LastDetectionList = 1;
}
message THAAR  {
	map<string, THVectorString> Losses = 1;		//实体损失
	map<string, int32> Expenditures = 2;//武器损耗
}

//相对推演方的立场
enum EPostureStance
{
	Neutral=0;//中立
	Friendly=1;//友方
	Unfriendly=2;//非友方
	Hostile=3;//敌方
	Unknown=4;
}


//日志信息
message THLoggedMessage{
	optional string ID = 1;
	optional int32 Increment = 2;// 增量
	optional string Text = 3;// 文本
	optional string Summary = 4;// 概要
	optional uint64 TimeStamp = 5;// 时间戳
	optional int32 Level = 6;// 级别
	optional int32 Type = 7;//参考EMessageType。 分大类   情报消息：1、2、14、17、19、20、21、22  装备战损：6、7    武器消耗：3、4、10、24     关键事件：0、5、8、9、11、13、15、16、18、23
	optional string ReporterID = 8;// 报告者ID
	optional string TargetID = 9;
	optional string FiringParent = 10;
	optional string Side = 11;// 推演方ID
	optional string Location = 12;   // 位置 
}

//全局日志信息
message THLoggedMessageList
{
	repeated THLoggedMessage LogList = 1;
}

//实体单元信息
message THActiveUnitInfo {
/////////////////////////////////静态不变数据/////////////////////////////////////////
	optional int32 Category = 1;//大类（歼击机，无人机）
    optional int32 Type = 2;     //实体类型(暂不使用，各类型的实体类型在各自结构体中体现）（什么类型的歼击机，什么类型的无人机）
    optional int32 DBID = 3;//数据库实体ID 
	optional int32 ProficiencyLevel = 4;//熟练程度。参考EProficiencyLevel定义
    optional string Side = 5; //所属推演方
/////////////////////////////////触发式变化数据/////////////////////////////////////////
    optional string Name = 6;
	optional THDoctrine Doctrine = 7;
	optional bytes XSections = 8;//信号特征参数   THVectorXSection二进制序列化
	optional int32 UnitType = 9; //实体分类，0:"编组",1:"飞机",2:"舰船",3:"潜艇",4:"设施",5:"火力点",6:"武器",7:"卫星",8:"车辆",9:"人员"
}

//实体单元
message THActiveUnit{
    optional double CurrentSpeed=1;//当前速度
    optional double Acc=2;//加速度/过载
	optional string CargoToMission = 3; //物资所属任务
    optional bool DockingCondition = 4;//值为false时不在界面显示  false为停靠状态
    optional int32 Throttle = 5;//油门状态
    optional int32 Status = 6;//活动单元状态
    optional int32 FuelState = 7;//油量状态
    optional int32 WeaponState = 8;//武器状态
    optional double DesiredSpeed = 9;//期望速度
    optional double DesiredAltitude = 10;//期望高度
    optional double DamagePts = 11;// 损毁Pts值
    optional double DamagePercent = 12;//生命值、损毁百分比
    optional string AssignedMission = 13;//分配任务GUID
    optional string GroupID  = 14;//编组ID
    optional bool IsAD = 15;//是否被自动检测
    optional THAI AI = 16;//AI决策
    optional THWeaponry Weaponry = 17;//武器分配信息
    optional THKinematics Kinematics = 18;//机动模块
    optional THNavigator Navigator = 19; //导航
    optional THSensory Sensory = 20;//单元是否遵守电磁管控   
	optional THDamage Damage = 21;//毁伤
	map<string, THComponentCommDevice> CommDevices = 22;//
	map<string, THComponentSensor> Sensors = 23;//传感器
	map<string, THComponentMount> Mounts = 24;//挂载武器,包含打击范围
	map<string, THComponentMagazine> Magazines = 25;//弹药库
	map<string, THComponentCargo> Cargos = 26;//装载物资
	map<string, THComponentAirFacility> AirFacilitys = 27;//航空设施
	map<string, THComponentDockFacility> DockFacilitys = 28;//停靠设施
    map<string, THComponentPropulsion> Propulsions = 29;//发动机
    map<string, THFuelRec> FuelRecs = 30;//燃料
	map<string, THLoadout> Loadouts = 31;//挂载方案
    map<string, THRangeSymbol> RangeSymbols = 32;//新探测范围
	optional int32 Source = 33;//数据来源 0：虚拟添加，1：实时数据
	optional string CommLink = 34;// 通信计划
	optional string ClCommID = 35;// 单元所在集群ID
	optional THCommStuff CommStuff = 36;//通信模块
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
} 

message THUnitAircraft{
    optional THActiveUnit ActiveUnit = 1;
	optional int32 FlightRole=2;//EFlightElement 航班角色
    optional double AirborneTime=3;//飞行时间  
    optional int32 AltitudePreset=4;//预设高度  高度预设枚举值定义参见：飞机EAircraftAltitudePreset
    optional THAirOps AirOps=7;//飞机停靠机场  
	optional int32 Type=8;  //实体类型
	optional double FuelRate=9;  //耗油率
}

message THUnitFacility{
    optional THActiveUnit ActiveUnit = 1;
	optional int32 Type=2;  //实体类型
}

message THUnitShip{
    optional THActiveUnit ActiveUnit = 1;
    optional THDockingOps DockingOps=2;//船只停靠码头
	optional int32 Type=3;  //实体类型
}

message THUnitSubmarine{
    optional THActiveUnit ActiveUnit = 1;
	optional int32 DepthPreset=2;//ESubmarineDepthPreset 潜艇深度预设
    optional THDockingOps DockingOps=3;//停靠码头
	optional int32 Type=4;  //实体类型
}

message THUnitSatellite{
    optional THActiveUnit ActiveUnit = 1;
	optional int32 Type=2;  //实体类型
}

message THUnitWeapon{
    optional THActiveUnit ActiveUnit = 1;
	optional double ImpactAltitude=2;// 撞击高度
    optional double CEP_Surface=3;// 圆概率误差(表示导弹命中精度)_水面
    optional double CEP_Land=4;// 圆概率误差(表示导弹命中精度)_陆地
	optional string FiringParent=5;// 发射父单元ID
    map<string, THWarhead> Warheads=6;//弹头
	optional int32 Guidance=7;//制导方式 参考EWeaponGuidanceType定义
	optional int32 Type=8;  //实体类型
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

message THUnitGroup{
    optional THActiveUnit ActiveUnit = 1;
	optional string GroupLead=2;// 领队ID
	optional bytes Members=3;//编组成员列表THVectorString二进制序列化
	optional int32 Type=4;  //实体类型
}

message THUnitVehicle{
    optional THActiveUnit ActiveUnit = 1;
	optional int32 Type=2;  //实体类型
}

message THActiveUnitColl{
	map<string, THUnitAircraft> Aircraft = 1;//飞机实体
	map<string, THUnitFacility> Facility = 2;//设施
	map<string, THUnitShip> Ship = 3;//舰船
	map<string, THUnitSubmarine> Submarine = 4;//潜艇
	map<string, THUnitSatellite> Satellite = 5;//卫星
	map<string, THUnitWeapon> Weapon = 6;//武器
	map<string, THUnitGroup> Group = 7;//编组
	map<string, THCLComm> ClComm = 8;//集群
	map<string, THCommNode> CommNode = 9;//通信节点
	map<string, THUnitVehicle> Vehicle = 10;//车辆
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//席位基本信息（运行过程不改变的数据-----触发式变化。仅接口调用才发生的变化）
message THSideInfo{
    optional string ID = 1;//推演方ID
    optional string Name = 2;//推演方名称
	map<string, int32> Postures = 3;//立场
    optional bool CollectiveResponsibility = 4;// 分配集体责任
    optional bool CATC = 5;// 可以自动跟踪平民
    optional double CameraAlt = 6;//相机高度
    optional int32 AwarenessLevel = 8;// 意识水平
    optional int32 ProficiencyLevel = 9;//熟练程度
    optional THGeoPoint MapCenter = 10;//推演方地图中心点
	optional int32 Scoring_Disaster = 11;//评分设置(完败)
	optional int32 Scoring_Triumph = 12;//评分设置(完胜)
	optional string Briefing = 13;//简报
	optional bool IsAIOnly = 14;//是否电脑控制
	optional int32 ClusterNetWork = 15;// 网络类型
	
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}
//席位基础数据（触发式变化。仅接口调用才发生的变化---对比二进制差异/所有属性对比）
message THSide{
    optional THMissionColl Missions = 1;//任务
    optional THDoctrine Doctrine = 2;//条例
	map<string, THRefPoint> ReferencePoints = 3;//参考点
	map<string, THSpecialAction> SpecialActions = 4;//特殊动作
	map<string, THActiveUnitInfo> ActiveUnitsInfo = 5;//实体列表基础信息表(不变或触发才变化的数据，例：名称、条令等)
	map<string, THExclusionZone> ExclusionZones = 6;//封锁区
	map<string, THNoNavZone> NoNavZones = 7;//禁航区
	map<string, THAirCorridorZone> AirCorridorZones = 8;//空中走廊
	optional string CommandList = 9;//推演方指挥官列表
	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}
//席位实时变化数据（低频变化[暂定每秒一帧]-----实时变化---对比二进制差异/所有属性对比）
message THSideReal{
    optional int32 ContactAutoIncrement = 1;
	map<string, THWeaponSalvo> WeaponSalvos = 2;//齐射信息
    optional int32 TotalScore = 3;//比分
	map<string, THContact> Contacts = 4;//情报(不存经纬高三角度信息)
    optional THActiveUnitColl ActiveUnits = 5;//实体列表(不存经纬高三角度信息)

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//席位单元位置数据（高频变化[暂定每秒十帧]-----实体及情报经纬高三角度信息----在设置值函数内记录修改，不需对比差异）
message THSidePosition{
	map<string, THPosition> Aircraft = 1;//飞机实体
	map<string, THPosition> Facility = 2;//设施
	map<string, THPosition> Ship = 3;//舰船
	map<string, THPosition> Submarine = 4;//潜艇
	map<string, THPosition> Satellite = 5;//卫星
	map<string, THPosition> Weapon = 6;//武器
	map<string, THPosition> Group = 7;//编组
	map<string, THPosition> Contacts = 8;//情报

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}


//飞机起飞事件
message THAircraftTakeOffInfo{
    optional string AircraftID = 1;//飞机ID
	optional string AircraftName = 2;//飞机名称
	optional string HostAirFacility = 3;//航空设施ID
	optional string AssignedHostUnit = 4;//分配的HOST单元ID(HOST例：飞机停靠的机场)
	optional string CurrentHostUnit = 5;//当前的HOST单元ID
	optional int32 Condition=6;//参考EAirOpsCondition定义
	optional float CT=7;//mfConditionTimer状态计时器
}

//飞机返航事件
message THAircraftAttemptToRTBInfo{
    optional string AircraftID = 1;//飞机ID
	optional string AircraftName = 2;//飞机名称
	optional string HostAirFacility = 3;//航空设施ID
	optional string HostUnit = 4;//HOST单元ID(HOST例：飞机停靠的机场)
	optional bool ManuallyOrdered = 5;//是否手动控制
	optional int32 ActiveUnitStatus = 6;//单元状态，参考EActiveUnitStatus定义
	optional int32 Condition=7;//参考EAirOpsCondition定义
}

//飞机降落事件
message THAircraftTouchDownInfo{
    optional string AircraftID = 1;//飞机ID
	optional string AircraftName = 2;//飞机名称
	optional string HostAirFacility = 3;//航空设施ID
	optional string HostUnit = 4;//HOST单元ID(HOST例：飞机停靠的机场)
	optional int32 Condition=5;//参考EAirOpsCondition定义
	optional bool NormalLanding = 6;//是否正常降落	
}

//飞机起飞失败事件
message THAircraftDeckAbortInfo{
    optional string AircraftID = 1;//飞机ID
	optional string AircraftName = 2;//飞机名称
	optional string HostAirFacility = 3;//航空设施ID
	optional string HostUnit = 4;//HOST单元ID(HOST例：飞机停靠的机场)
	optional int32 Reason = 5;//原因 1-需要维修 2-航班计划错误 3-跑道限制 4-未按预期挂载
	optional string message = 6;//原因记录
}

//飞机空中无效事件（飞行中断）
message THAircraftDisruptInfo{
    optional string AircraftID = 1;//飞机ID
	optional string AircraftName = 2;//飞机名称
	optional string HostAirFacility = 3;//航空设施ID
	optional string HostUnit = 4;//HOST单元ID(HOST例：飞机停靠的机场)
	optional int32 Reason = 5;//原因 1-燃料不足 2-空中时间不足 3-武器挂载原因 4-任务执行失败
	optional string message = 6;//原因记录
}

//*********装备战损
//单元毁伤事件 即实体完全损毁了（UnguidedWeapon::DestroyMe 和 Scenario::DestroyThisUnit中发送）
message THUnitDestroyedInfo{
    optional bool IsDamaged = 1;//是否损毁
    optional string SideID = 2;//推演方ID
    optional string UnitName = 3;//单元名称 
	optional string UnitID =4;//单元ID
    optional string UnitClass = 5;//单元分类
	optional string Reason = 6;//损毁原因  
	optional string Cause = 7;//引发损毁原因
	optional double DamagePercent = 8;//单元损伤百分比
	optional int32 DestroyType = 9;//1-交战损伤 2-非交战损伤（新增）
}

//武器交战事件
message THWeaponEndgameInfo{
	optional string WeaponID = 1;//武器ID
	optional string WeaponName = 2;//武器名称
	optional string WeaponSide = 3;//武器推演方ID
	optional string ParentFiringUnitID =4;//单元ID
	optional string ParentFiringUnitName = 5;//单元名称 
	optional string TargetID = 6;//目标ID
	optional string TargetName = 7;//目标名称
	optional string TargetSide = 8;//目标推演方
	optional double TargetLongitude = 9;//目标经度
	optional double TargetLatitude = 10;//目标纬度
	optional float TargetAltitude = 11;//目标高度
	optional double MissDistance = 12;//未击中距离(如果结果是未击中，给出武器与目标的距离）
	optional float DistanceFromFiringUnit_Horiz = 13;//目标距单元水平距离	
	optional int32 Result = 14;//交战结果 1-击中 2-未击中 3-近距离爆炸 4-被拦截 5-被浪费 6-自毁 7-被欺骗 8-武器故障
}


//武器故障事件
message THWeaponFaultInfo{
    optional string FiringUnitID = 1;//开火单元ID
	optional int32 FiringUnitDBID = 2;//开火单元DBID
	optional string FiringUnitName = 3;//开火单元名称
	optional int32 FiringUnitType = 4; //开火单元类型EActiveUnitType
	optional string FiringUnitClass = 5;//开火单元装备分类
    optional string FiringUnitSideID = 6;//开火单元推演方id
	optional string WeaponID = 7;//武器ID
	optional int32 WeaponDBID = 8;//武器DBID
	optional string WeaponName = 9;//武器名称
	optional int32 WeaponType = 10;//武器类型EWeaponType
	optional string WeaponClass = 11;//武器分类
	optional string TargetContactActualUnitID = 12;//目标真实ID
	optional string TargetContactActualUnitName = 13;//目标真实名称
	optional string TargetContactActualUnitClass = 14;//目标真实分类
	optional string TargetContactActualUnitSideID = 15;//目标真实推演方id
}

//****推演状态
//想定加载信息（LoadScenarioInfo）
message THLoadScenarioInfo{
    optional string EngieGUID = 1; //推演ID
	optional string ScenarioName = 2;//想定名称
}

//开始/暂停
message THSimStatusInfo{
	optional int32 SimStatus = 1; //仿真状态 （0=Paused,1=Running）
}

//倍速调整
message THAdjustTimeCompressionInfo{
    optional int32 TimeCompression = 1;//倍速
}

//结束推演
message THSimEndInfo{
    optional bool HasEnded = 1;//是否结束
}

//*********需要增加的事件
//武器销毁事件
message THWeaponDestroyedInfo{
    optional string FiringUnitID = 1;//开火单元ID
	optional int32 FiringUnitDBID = 2;//开火单元DBID
	optional string FiringUnitName = 3;//开火单元名称
	optional int32 FiringUnitType = 4; //开火单元类型EActiveUnitType
	optional string FiringUnitClass = 5;//开火单元装备分类
    optional string FiringUnitSideID = 6;//开火单元推演方id
	optional string WeaponID = 7;//武器ID
	optional int32 WeaponDBID = 8;//武器DBID
	optional string WeaponName = 9;//武器名称
	optional int32 WeaponType = 10;//武器类型EWeaponType
	optional string WeaponClass = 11;//武器分类
	optional string TargetContactID = 12;//目标ID
	optional string TargetContactActualUnitID = 13;//目标真实ID
	optional string TargetContactActualUnitName = 14;//目标真实名称
	optional string TargetContactActualUnitClass = 15;//目标真实分类
	optional string TargetContactActualUnitSideID = 16;//目标真实推演方id
    optional int32 Reason = 17;//原因 1-被浪费(浪费的武器被定义为当在武器飞行之前或飞行过程中目标平台被其他方法损害) 2-被拦截 3-命中目标 4-未命中目标
	optional double MissDistance = 18;//未击中距离
}

//电子干扰事件，包括干扰类型、攻击平台、干扰目标平台信息、干扰目标平台组件
message THJamingInfo{
    optional int32 JamType = 1;//干扰类型  1：雷达干扰  2：通信干扰  3：导弹干扰
	repeated string AttackUnitIDList = 2;//攻击平台ID
	optional string TargetUnitID = 3;//干扰目标平台ID
}

message THJamingInfoList{
	repeated THJamingInfo JamingInfo = 1;
}

//组件状态变化事件
message THComponentStatusChangeInfo{
    optional string ParentUnitID = 1;//组件父平台ID
	optional string ComponentID = 2;//组件ID
	optional string ComponentName = 3;//组件名称
	optional int32 ComponentType = 4;//组件类型（1-通信设备、2-传感器、3-挂架、4-弹药库、5-货物、6-航空设施、7-停靠设施）
	optional int32 Status = 5;//组件状态 0-运转  1-损坏   2-毁灭
}

//想定基本信息（运行过程不改变的数据-----触发式变化。仅接口调用才发生的变化）
message THScenarioInfo{
	optional string ScenarioID = 1;//想定ID
	optional string Title = 2;//想定名称
	optional string Description = 3;//想定描述
	optional string FileName = 4;//文件名称
	optional int32 Meta_Complexity = 5;//复杂度
	optional int32 Meta_Difficulty = 6;//难度
	optional string Meta_ScenSetting = 7;//位置
	optional string PostureColor = 8;//推演方颜色配置
	optional uint64 StartTime = 9;//开始仿真时间(单位：毫秒)
	optional int32 Duration = 10;//仿真时长（单位：秒）
	map<string, THSideInfo> SideInfo=11;//推演方信息  (新增)
	optional THFeatureOption FeatureOption = 12;//场景功能设置

	map<string, THVectorString> mapdel = 100;//key定位以上哪个map，value为要删除对应map下的key
}

//态势基本信息（运行过程中变化的数据-----随机式变化）
message THSituationInfo{
	optional uint64 Time = 1;//当前仿真时间(单位：毫秒)
	optional string Status = 2;//仿真状态
	optional uint64 LoadTime = 3;//加载想定时的电脑时间(单位：毫秒)，用于区分仿真的标识（服务器重启自动加载的此值一样）
	optional string RecordTime = 4;//仿真录制时间(引擎中没找到该值)
	optional int32 Speed = 5;//推演速度
	optional int32 Seed = 6;//随机种子(引擎中没找到该值)
	optional uint64 FirstRunTime = 7; //首次点击运行按钮时间
	optional THNonActiveUnitColl NonActiveUnits = 8;
	optional int32 WeatherModel = 10;//天气模式
	optional THWeatherProfile WeatherProfile = 11;//天气配置
	optional int32 Resolution = 12;//仿真步长(单位:毫秒)
	map<string, THRefPoint> ReferencePoints = 13; // 全局参考点集
	
	map<string, THVectorString> mapdel = 100; // key定位以上哪个map，value为要删除对应map下的key
}


//席位态势实时结构
message THSituationSide{
	optional THSide Side = 1;//推演方数据（运行过程中变化的数据--）
	optional THSideReal SideReal = 2;//席位下所有实时动态数据（运行过程中变化的数据--）
	optional THSidePosition SidePosition = 3;//席位下所有单元动态数据（运行过程中变化的数据--）
}
//态势实时结构（归类使用---未用于态势传输）
message THSituation{
	optional THSituationInfo SituationInfo = 1;//态势基本信息（运行过程中变化的数据--）
	map<string, THSituationSide> SituationSides = 2;//席位态势实时数据
}

//态势整体结构（归类使用---未用于态势传输）
message THSituationFull{
	optional THScenarioInfo ScenarioInfo = 1;//想定基本信息（运行过程不改变的数据-----触发式变化。仅接口调用才发生的变化）
	optional THEventColl Events = 2;//想定配置的事件（运行过程不改变的数据-----触发式变化。仅接口调用才发生的变化）
	optional THSituation Situation = 3;//态势实时信息
}
	//std::vector<string> FlightplanErrors;//航班错误消息   （将此消息放入THLoggedMessage）
	//string TimelineID = 3;
//平台离网事件
message THUnitOffGridInfo{
    optional string SideID = 1;//推演方ID
    optional string UnitName = 2;//单元名称 
	optional string UnitID =3;//单元ID
    optional string UnitClass = 4;//单元分类
	optional string Reason = 5;//离网原因  
}
//武器齐射事件
message THWeaponSalvoList {
    optional string SideID = 1;//推演方ID
	map<string, THWeaponSalvo> WeaponSalvos = 2;//齐射信息
}

//任务-多分支使用
message THMissionInfo{
    optional string RoomID = 1;//房间ID
    optional string MissionID = 2;//任务ID
	optional string MissionName =3;//任务名称
    optional int32 MissionClass = 4;//任务类型
	optional uint64 Time = 5;//创建任务时间 ,或删除任务时间，或更新任务时间
	optional int32 Type = 6;//0:add 1:delete 2:updata	
}

//情报移除事件
message THContactRemoveInfo{
    optional string ID=1;  
    optional string Name=2;
}

//推演方信息
message THSideChange{
	optional bool IsAddSide = 1;//true：为添加推演方，false:为删除推演方
    optional THSideInfo SideInfo = 2;//推演方信息  
}
//事件激活状态
message THEventActive{
	optional string Name = 1;  //事件名称
	optional bool Status = 2;  //激活状态
	optional uint64 Time = 3;     //激活时间
	optional string ID =4;       //ID
	optional int32 Type = 5;       //0：add 1：remove 2.update
}

//添加所有事件触发器的所有事件的激活状态
message THEventTriggers_Status{
	map<string, THEventActive> EventActives = 1;//事件信息
}

// 布雷事件
message THMissionMinningInfo {
	optional int32 Type = 1;                  // 布雷类型，1：飞机布雷 2：舰船布雷 3：潜艇布雷
	optional string MinningUnitID = 2;        // 布雷平台ID
	optional string MinningUnitName = 3;      // 布雷平台名称
	optional THPosition Position = 4;  // 布雷位置
    optional int32 MineType = 5;              // 雷类型
    optional int32 MineNum = 6;               // 雷数量	
}

 // 扫雷事件
 message THMissionMineClearingInfo {
    optional int32 Type = 1;                   // 扫雷类型，1: 飞机扫雷 2：舰船扫雷 3：潜艇扫雷
	optional string MineClearingUnitID = 2;    // 扫雷平台ID
	optional string MineClearingUnitName = 3;  // 扫雷平台名称
	optional THPosition Position = 4;   // 扫雷平台位置
	optional int32 MineClearingType = 5;       // 扫雷类型，1：成功扫雷 2：失败扫雷
	optional int32 MineClearingNum = 6;        // 扫雷数量	
 }

// 加油事件
message THRefuelingInfo {
	optional int32 Type = 1;         // 加油类型，1：飞机加油 2：舰船加油
	optional string FuelUnitID = 2;      // 加油平台ID
	optional string FuelUnitName = 3;    // 加油平台名称
	optional string RefuelUnitID = 4;    // 被加油平台ID
	optional string RefuelUnitName = 5;  // 被加油平台名称
	optional bytes FuelType = 6;//THVectorInt二进制序列化     
	optional int32 FuelCapacity = 7;     // 加油量(无）
}
//通信事件信息
message THCommunicationEventInfo{
    optional double dfSimTime =1;		//仿真时间	
	optional string SendID = 2;			//发送方ID       
    optional string SendName = 3;   	//发送方名称
    optional string SendSideID = 4; 	//发送平台推演方ID
	optional string ReceiverID = 5;  	//接收方ID  	
    optional string ReceiverName = 6;   //接收方名称
    optional string ReceiverSideID = 7; //接收方推演方ID
	optional int32 ResultType= 8;		//通信结果 0-失败 1-成功 
    optional int32 Time = 9;            //通信延迟时间（ms）
};
message THCommandLogInfo
{
	optional string commandName = 1;//命令名称
	optional string commandParam = 2;//命令参数
}

message THCargoInfo{
	optional int32 Type = 1;     // 投送类型 1：飞机投送 2：轮船投送，由投送平台确定
	optional string CargoUnitID = 2;  // 投送平台ID
	optional int32 CargoType = 3;                 // 货物类型
	optional int32 CargoVal = 4;                 // 货物数量
    optional string CargoID = 5;                 // 货物ID
};