syntax = "proto3";
package KYFramework.Network;

message C2R_Ping // IRequest
{
	int32 RpcId = 90;
}

message R2C_Ping // IResponse
{
	int32 RpcId = 90;
	int32 Error = 91;
	string Message = 92;
}

message C2S_Test // IRequest
{
	int32 RpcId = 90;
	string Message = 92;
}

message S2C_Test // IResponse
{
	int32 RpcId = 90;
	int32 Error = 91;
	string Message = 92;
}

message C2S_TestMessage // IMessage
{
	string Message = 90;
}

message S2C_TestMessage // IMessage
{
	string Message = 90;
}

/* 地理点:经纬高 */
message Point
{
	double Longitude = 1;
	double Latitude = 2;
	double Altitude = 3;
}

/* 基地 */
message Base
{
	string BaseName = 1;
	Point BaseLocation = 2;
}

/* 行政区气象数据 */
message CityWeather
{
	/* 行政区域名称:XX市 */
	string CityName = 1;
	/* 天气状况:晴/多云/雨等 */
	string WeatherCondition = 2;
	/* 风向:东南西北 */
	string WindDirection = 3;
	/* 风速 */
	double WindVelocity = 4;
	/* 温度 */
	double Temperature = 5;
	/* 湿度 */
	double Humidity = 6;
	/* 能见度 */
	double Visibility = 7;
}

/* 航线 */
message AirRoute
{
	string Name = 1;
	repeated Point PointArr = 2;
}

/* 圆形禁飞区 */
message NoFlyZoneCircle
{
	string NoFlyZoneType = 1;
	Point NoFlyZoneCenterLocation = 2;
	double NoFlyZoneRadius = 3;
}

/* 矩形禁飞区 */
message NoFlyZoneRect
{
	string NoFlyZoneType = 1;
	repeated Point NoFlyZoneRectangleLocation = 2;
}

/* 爬升航段 */
message ClimbSegment
{
	double ClimbVelocity = 1;
	double ClimbFuelConsumptionRate = 2;
}

/* 下降航段 */
message DescentSegment
{
	double DescentVelocity = 1;
	double DescentFuelConsumptionRate = 2;
}

/* 巡航航段 */
message CruiseSegment
{
	double CruiseAltitude = 1;
	double CruiseVelocity = 2;
	double CruiseFuelConsumptionRate = 3;
}

/* 转弯航段 */
message TurningSegment
{
	double TurningRadius = 1;
	double TurningVelocity = 2;
	double ClimbFuelConsumptionRate = 3;
}

/* 飞行计划编辑器(输入) */
message C2S_FlyPlanInput // IMessage
{
	/* ------------------------------ 任务 ------------------------------ */
	
	/* 任务名称 */
	string MissionName = 1;
	/* 任务类型 */
	string MissionType = 2;
	/* 任务矩形区域顶点集合 */
	repeated Point MissionRectangle = 3;
	
	/* ------------------------------ 飞机 ------------------------------ */
	
	/* 最大起飞重量 */
	double MaxTakeoffWeight = 4;
	/* 起飞空重 */
	double TakeoffEmptyWeight = 5;
	/* 最大航程 */
	double MaxFlightRange = 6;
	/* 续航时间 */
	double MaxFlightTime = 7;
	/* 实用升限 */
	double ServiceCeiling = 8;
	/* 最大载油量 */
	double MaxFuelCapacity = 9;
	/* 最大商载量 */
	double MaxWeightCapacity = 10;
	/* 载荷名称 */
	string LoadName = 11;
	/* 载荷数量 */
	int32 LoadQuantity = 12;
	/* 载荷重量 */
	double LoadWeight = 13;
	
	/* ------------------------------ 气象 ------------------------------ */
	
	/* 行政区气象集合 */
	repeated CityWeather CityWeatherArr = 14;
	
	/* ------------------------------ 基地 ------------------------------ */
	
	/* 基地集合 */
	repeated Base BaseArr = 15;
	
	/* ------------------------------ 航线 ------------------------------ */
	
	/* 航线集合 */
	repeated AirRoute AirRouteArr = 16;
	
	/* ------------------------------ 终点 ------------------------------ */
	
	/* 任务终点选择:Base代表返回基地,Point代表前往定点,Hover代表原地盘旋等待 */
	string EndSelection = 17;
	/* 终点位置集合 */
	repeated Point TerminusLocation = 18;
	
	/* ------------------------------ 禁飞区 ------------------------------ */
	
	/* 圆形禁飞区集合 */
	repeated NoFlyZoneCircle NoFlyZoneCircleArr = 19;
	/* 矩形禁飞区集合 */
	repeated NoFlyZoneRect NoFlyZoneRectArr = 20;
	
	/* ------------------------------ 火场 ------------------------------ */
	
	/* 目视距离 */
	double VisualDistance = 21;
	/* 火场绕行方向:Clockwise表示顺时针,Anticlockwise表示逆时针 */
	string DetourDirection = 22;
	/* 火场绕行圈数 */
	int32 NumberOfDetour = 23;
	/* 绕行间隔距离 */
	double DetourIntervalDistance = 24;
	/* 绕行速度 */
	double DetourVelocity = 25;
	/* 火点位置集合 */
	repeated Point FirePointLocation = 26;
	
	/* ------------------------------ 航段 ------------------------------ */
	
	/* 最小转弯半径 */
	double MinTurningRadius = 27;
	/* 最大转弯速度 */
	double MaxTurningVelocity = 28;
	/* 最大爬升速度 */
	double MaxClimbVelocity = 29;
	/* 最大下降速度 */
	double MaxDescentVelocity = 30;
	/* 最大巡航速度 */
	double MaxCruiseVelocity = 31;
	
	/* 爬升航段集合 */
	repeated ClimbSegment ClimbSegmentArr = 32;
	/* 下降航段集合 */
	repeated DescentSegment DescentSegmentArr = 33;
	/* 巡航航段集合 */
	repeated CruiseSegment CruiseSegmentArr = 34;
	/* 转弯航段集合 */
	repeated TurningSegment TurningSegmentArr = 35;
	
	/* ------------------------------ 飞行器编号 ------------------------------ */
	
	/* 飞行器编号:按照“子任务-编队号-机号”方式命名” */
	string AircraftID = 36;
	
}

/* 飞行计划编辑器(输出) */
message S2C_FlyPlanOutput // IMessage
{
	/* 飞行器编号 */
	string AircraftID = 1;
	/* 飞行航路点集合 */
	repeated PlanTurningPoint PlanTurningPointArr = 2;
}

/* 计划航路点 */
message PlanTurningPoint
{
	/* 名称:爬升、巡航、转弯、下降、观测火场 */
	string Name = 1;
	/* 位置 */
	Point Location = 2;
	/* 类型:普通、转弯、取水任务、灭火任务 */
	string Type = 3;
	/* 速度 */
	double Velocity = 4;
	/* 航段油耗 */
	double SegmentConsumption = 5;
	/* 航段飞行时间 */
	double SegmentTime = 6;
	/* 转弯半径 */
	double Radius = 7;
}

/* 航路曲线(输入) */

/* 航路曲线(输出) */
message S2C_TurningPointOutput // IMessage
{
	/* 飞行器编号 */
	string AircraftID = 1;
	/* 飞行航路点名称 */
	string TurningPointName = 2;
	/* 飞行航路点位置列表 */
	repeated Point TurningPointLocation = 3;
	/* 当前任务阶段 */
	string PresentMission = 4;
	/* 当前飞行目标点 */
	string PresentTarget = 5;
	/* 航路开始日期 */
	string StartDate = 6;
	/* 航路开始时间 */
	string StartTime = 7;
	/* 航路结束日期 */
	string EndDate = 8;
	/* 航路结束时间 */
	string EndTime = 9;
	/* 已飞行时间 */
	double ElapsedTime = 10;
	/* 当前日期 */
	string PresentDate = 11;
	/* 当前时刻 */
	string PresentTime = 12;
	/* 当前位置 */
	Point PresentLocation = 13;
	/* 当前已消耗油量 */
	double PresentFuelConsumption = 14;
	/* 当前剩余油量 */
	double PresentRemainingFuel = 15;
	/* 当前飞行速度 */
	double PresentVelocity = 16;
}

message C2S_GetReport // IRequest
{
	int32 RpcId = 90;
}

message S2C_GetReport // IResponse
{
	int32 RpcId = 90;
	int32 Error = 91;
	string Message = 92;
	repeated ResportWithTaskName Reports = 93;
}

message ResportWithTaskName
{
	int32 FirePointId = 1;
	repeated EntitySheetReportValue EntitySheetReportValueArr = 2;
}


/* 仿真开始 */
message C2S_StmulationStart // IMessage
{
	
}

/* 仿真倍速调整 */
message C2S_StmulationTimeScale // IMessage
{
	int32 TimeScale = 1;
}

/* 仿真结束 */
message S2C_StmulationEnd // IMessage
{
	int32 FirePointId = 1;
	repeated EntitySheetReportValue EntitySheetReportValueArr = 2;
}

message EntitySheetReportValue
{
	string Name = 1;
	repeated SheetReportValue SheetReportValueArr = 2;

}

message SheetReportValue
{
	string Name = 1;
	repeated ReportValue ValueArr = 2;
}

message ReportValue
{
	string Name = 1;
	string Value = 2;
}



/* 请求 效能评估 */
message C2S_SimulationResult // IRequest
{
	int32 RpcId = 90;
}
	
/* 返回 效能评估 */
message S2C_SimulatinResult // IResponse
{
	int32 RpcId = 1;
	int32 Error = 2;
	string Message = 3;

	/* 任务响应时间(秒) */
	double TaskResponseTime = 4;
	/* 总任务耗时(秒) */
	double TaskTotalTime = 5;
	/* 单机入场时间(秒) */
	double SingleJoinTime = 6;
	/* 单机有效任务时长(秒) */
	double SingleEffectiveTaskTime = 7;
	/* 单机总投送人数(人) */
	double SingleAll_Peopeo = 8;

	/* 单机单次投送人数(人) */
	double SingleEach_People = 9;
	/* 巡护速度(km/h) */
	double Speed_Patrol = 10;
	/* 巡护航程 (km)*/
	double Voyage_Patrol = 11;
	/* 总巡护耗时 (秒)*/
	double Time_AllPatrol = 12;
	/* 火情入场时间 (秒)*/
	double FireJoinTime = 13;
	/* 单机总油耗 (kg)*/
	double Fuel_Single = 14;
	/* 单机机场使用情况 */
	string AirportUseSituation = 15;
	/* 单机导航使用情况 */
	string NavUseSituation = 16;

	/* 消防巡护任务经济性评估参数 */

	/* 单机总任务时长(秒) */
	double FireJoinTime_Economical = 17;
	/* 单机总油耗(kg) */
	double Fuel_Single_Economical = 18;
	/* 单机机场使用情况 */
	string AirportUseSituation_Economical = 19;
	/* 单机导航使用情况 */
	string NavUseSituation_Economical = 20;
	
}

/* 火焰蔓延输出 */
message S2C_FireSpread // IMessage
{
	string AircraftId = 1;
	int32 FirePointId = 2;
	double fireGrids = 3;
	double firedGrids = 4;
}