指挥所接收雷达并下发任务通信建立

This commit is contained in:
2025-09-17 17:53:39 +08:00
parent c177eeafeb
commit 826c030dc5
7 changed files with 222 additions and 120 deletions

View File

@@ -11,27 +11,43 @@
# * ****** UNCLASSIFIED ****** *
# * * ************************************** * *
include_once platforms/red_radar.txt
#include_once platforms/red_radar.txt
include_once sensors/radar/ew_radar.txt
include_once processors/ep_operations.txt
include_once platforms/red_radar_tactics.txt
platform_type EW_RADAR RED_RADAR
platform_type EW_RADAR WSF_PLATFORM
icon Ground_Radar
category 2D_RADAR
infrared_signature VEHICLE_INFRARED_SIGNATURE
optical_signature VEHICLE_OPTICAL_SIGNATURE
radar_signature VEHICLE_RADAR_SIGNATURE
sensor ew_radar EW_RADAR
on
internal_link data_mgr
ignore_same_side
end_sensor
processor ep_operations EP_OPERATIONS
script_variables
mSensorNameList.PushBack("ew_radar");
end_script_variables
processor data_mgr WSF_LINKED_PROCESSOR
report_to commander via sub_net
end_processor
aux_data
double max_range = 185200 # meters = 100 nm
end_aux_data
comm sub_net RED_DATALINK
network_name <local:slave>
internal_link task_mgr
end_comm
# processor task_mgr RED_RADAR_TACTICS
# end_processor
# processor ep_operations EP_OPERATIONS
# script_variables
# mSensorNameList.PushBack("ew_radar");
# end_script_variables
# end_processor
#
# aux_data
# double max_range = 185200 # meters = 100 nm
# end_aux_data
end_platform_type

View File

@@ -11,9 +11,6 @@
# * ****** UNCLASSIFIED ****** *
# * * ************************************** * *
processor IADS_CMDR_DATA_MGR WSF_TRACK_PROCESSOR
purge_interval 60 sec
end_processor
processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
number_of_servers 5
@@ -32,9 +29,11 @@ processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
// determine if TRACK is assignable
script bool IsAssignable()
#writeln(TRACK);
if ((! TRACK.IFF_Friend()) &&
(TRACK.TimeSinceUpdated() < 30.0))
{
#writeln("find enermy");
return true;
}
@@ -73,17 +72,21 @@ processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
end_script
script void MakeAssignments()
#writeln("MakeAssignments ");
Array<WsfPlatform> filter = Array<WsfPlatform>();
foreach (WsfPlatform sub in PLATFORM.Subordinates())
{
if (sub.Type() == "LARGE_SAM_BATTALION")
#writeln("is Subordinates");
if (sub.Type() == "LARGE_SAM_LAUNCHER")
{
#writeln("is LARGE_SAM_LAUNCHER");
if (WeaponsAvailable(sub) &&
(TasksAssignedTo(sub) < MAX_ASSIGNMENTS_PER_SAM) &&
(TasksAssignedTo(sub, TRACK.TrackId()) < 1) &&
(TRACK.WithinZoneOf(sub, "battalion_sector")))
{
writeln_d("*** Adding ", sub.Name(), " to filter");
writeln("can fire");
writeln("*** Adding ", sub.Name(), " to filter");
filter.PushBack(sub);
}
}
@@ -93,6 +96,7 @@ processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
int numAssignments = (int)MATH.Min(filter.Size(), MAX_SAMS_PER_TARGET);
for (int i=0; i < numAssignments; i = i + 1)
{
writeln("assign fire");
AssignTask(TRACK, "ENGAGE", filter[i]);
}
end_script
@@ -132,6 +136,10 @@ platform_type IADS_CMDR WSF_PLATFORM
infrared_signature VEHICLE_INFRARED_SIGNATURE
optical_signature VEHICLE_OPTICAL_SIGNATURE
radar_signature VEHICLE_RADAR_SIGNATURE
mover WSF_GROUND_MOVER
end_mover
comm sub_net RED_DATALINK
network_name <local:master>
@@ -139,12 +147,14 @@ platform_type IADS_CMDR WSF_PLATFORM
internal_link task_mgr
end_comm
processor data_mgr IADS_CMDR_DATA_MGR
processor data_mgr WSF_TRACK_PROCESSOR
purge_interval 60 sec
end_processor
processor task_mgr IADS_CMDR_TASK_MGR
operating_level ENGAGE 1
end_processor
include processors/commander_track_manager$(TRACKER_TYPE).txt

View File

@@ -15,6 +15,7 @@ include_once weapons/sam/large_sam.txt
platform_type LARGE_SAM_LAUNCHER WSF_PLATFORM
icon SA-10_Launcher
radar_signature VEHICLE_RADAR_SIGNATURE
comm cmdr_net RED_DATALINK
network_name <local:slave>
@@ -27,9 +28,44 @@ platform_type LARGE_SAM_LAUNCHER WSF_PLATFORM
end_processor
processor task_mgr WSF_TASK_PROCESSOR
script void on_task_assign(WsfTask aTask, WsfTrack aTrack)
if (aTask.TaskType() == "ENGAGE")
{
if (!aTrack.Exists())
{
writeln("[SAM] ");
return;
}
}
if (!aTrack.WithinZoneOf(PLATFORM, "battalion_sector"))
writeln("[SAM] 20nm ");
return;
end
--
if (PLATFORM.Weapon("sam").QuantityRemaining() <= 0) then
writeln("[SAM] ");
return;
end
--
PLATFORM.Weapon("sam").FireAt(aTrack);
writeln("[SAM] : ", aTrack.TargetName());
else
writeln("[SAM] ", aTask.Type());
end
end_script
end_processor
weapon sam LARGE_SAM
quantity 4
end_weapon
zone battalion_sector
circular maximum_radius 20 nm
end_zone
end_platform_type

View File

@@ -0,0 +1,45 @@
# File generated by Wizard 2.9.0 on Sep 17, 2025.
include_once sensors/radar/ew_radar.txt
include_once processors/ep_operations.txt
include_once platforms/red_radar_tactics.txt
platform_type RADAR_APACHE WSF_PLATFORM
icon apache
category 2D_RADAR
infrared_signature FIGHTER_INFRARED_SIG
optical_signature FIGHTER_OPTICAL_SIG
radar_signature FIGHTER_RADAR_SIG
mover WSF_AIR_MOVER
default_radial_acceleration 2.0 g
at_end_of_path remove
end_mover
sensor ew_radar EW_RADAR
on
internal_link data_mgr
ignore_same_side
end_sensor
processor data_mgr WSF_LINKED_PROCESSOR
report_to commander via sub_net
end_processor
comm sub_net RED_DATALINK
network_name <local:slave>
#internal_link task_mgr
end_comm
# processor task_mgr RED_RADAR_TACTICS
# end_processor
# processor ep_operations EP_OPERATIONS
# script_variables
# mSensorNameList.PushBack("ew_radar");
# end_script_variables
# end_processor
# aux_data
# double max_range = 185200 # meters = 100 nm
# end_aux_data
end_platform_type