测试
This commit is contained in:
@@ -127,6 +127,69 @@ processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
|
||||
}
|
||||
end_script
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
script void sendMessage()
|
||||
#writeln("MakeAssignments ");
|
||||
Array<WsfPlatform> firer = Array<WsfPlatform>();
|
||||
Array<WsfPlatform> mover = Array<WsfPlatform>();
|
||||
Array<WsfPlatform> waiter = Array<WsfPlatform>();
|
||||
foreach (WsfPlatform sub in PLATFORM.Subordinates())
|
||||
{
|
||||
#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("can fire");
|
||||
writeln("*** Adding ", sub.Name(), " to firer");
|
||||
firer.PushBack(sub);
|
||||
}
|
||||
if(WeaponsAvailable(sub) &&
|
||||
!(TRACK.WithinZoneOf(sub, "battalion_sector")))
|
||||
{
|
||||
writeln("*** Adding ", sub.Name(), " to mover");
|
||||
mover.PushBack(sub);
|
||||
}
|
||||
if(!WeaponsAvailable(sub))
|
||||
{
|
||||
waiter.PushBack(sub);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int i;
|
||||
int numAssignments = (int)MATH.Min(firer.Size(), MAX_SAMS_PER_TARGET);
|
||||
for (int i=0; i < numAssignments; i = i + 1)
|
||||
{
|
||||
writeln("assign fire");
|
||||
WsfControlMessage msg = WsfControlMessage();
|
||||
msg.SetAuxData("track",TRACK);
|
||||
msg.SetAuxData("task","ENGAGE");
|
||||
PLATFORM.Comm("sub_net").SendMessage(msg,"red_mortar_carrier1","cmdr_net");
|
||||
|
||||
#AssignTask(TRACK, "ENGAGE", firer[i]);
|
||||
}
|
||||
|
||||
int numMover=(int)(mover.Size());
|
||||
for (int i=0; i < numMover; i = i + 1)
|
||||
{
|
||||
writeln("assign move");
|
||||
AssignTask(TRACK, "MOVE", mover[i]);
|
||||
}
|
||||
|
||||
int numWaiter=(int)(waiter.Size());
|
||||
for (int i=0; i < numWaiter; i = i + 1)
|
||||
{
|
||||
writeln("assign wait");
|
||||
AssignTask(TRACK, "WAIT", waiter[i]);
|
||||
}
|
||||
end_script
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
evaluation_interval DETECTED 10.0 sec
|
||||
@@ -134,7 +197,8 @@ processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
|
||||
state DETECTED
|
||||
next_state ASSIGNED
|
||||
if (! IsAssignable()) return false;
|
||||
MakeAssignments();
|
||||
#MakeAssignments();
|
||||
#sendMessage();
|
||||
return true;
|
||||
end_next_state
|
||||
end_state
|
||||
@@ -148,7 +212,8 @@ processor IADS_CMDR_TASK_MGR WSF_TASK_PROCESSOR
|
||||
CancelTask(TRACK.TrackId());
|
||||
return true;
|
||||
}
|
||||
MakeAssignments();
|
||||
#MakeAssignments();
|
||||
#sendMessage();
|
||||
return false;
|
||||
end_next_state
|
||||
end_state
|
||||
@@ -178,6 +243,7 @@ platform_type IADS_CMDR WSF_PLATFORM
|
||||
|
||||
processor task_mgr IADS_CMDR_TASK_MGR
|
||||
operating_level ENGAGE 1
|
||||
|
||||
end_processor
|
||||
|
||||
|
||||
|
||||
@@ -12,54 +12,65 @@
|
||||
# * * ************************************** * *
|
||||
|
||||
include_once weapons/sam/large_sam.txt
|
||||
include_once behavior/behavior_engage.txt
|
||||
|
||||
platform_type LARGE_SAM_LAUNCHER WSF_PLATFORM
|
||||
platform_type LARGE_SAM_LAUNCHER WSF_PLATFORM
|
||||
icon SA-10_Launcher
|
||||
radar_signature VEHICLE_RADAR_SIGNATURE
|
||||
|
||||
comm cmdr_net RED_DATALINK
|
||||
|
||||
mover WSF_GROUND_MOVER
|
||||
end_mover
|
||||
|
||||
comm cmdr_net RED_DATALINK
|
||||
network_name <local:slave>
|
||||
internal_link data_mgr
|
||||
internal_link task_mgr
|
||||
end_comm
|
||||
mover WSF_GROUND_MOVER
|
||||
end_mover
|
||||
|
||||
processor data_mgr WSF_TRACK_PROCESSOR
|
||||
purge_interval 60 sec
|
||||
end_processor
|
||||
|
||||
processor task_mgr WSF_TASK_PROCESSOR
|
||||
script void on_task_assign(WsfTask aTask, WsfTrack aTrack)
|
||||
|
||||
if (aTask.TaskType() == "ENGAGE")
|
||||
{
|
||||
WsfWeapon missile = PLATFORM.Weapon("sam");
|
||||
missile.Fire(aTrack);
|
||||
writeln("fire,remain weapon:", missile.QuantityRemaining());
|
||||
}
|
||||
if (aTask.TaskType() == "MOVE")
|
||||
{
|
||||
if(!aTrack.WithinZoneOf(PLATFORM,"battalion_sector"))
|
||||
{
|
||||
double relativeAzimuthOf=
|
||||
PLATFORM.RelativeAzimuthOf(aTrack.CurrentLocation());
|
||||
PLATFORM.TurnToRelativeHeading(relativeAzimuthOf);
|
||||
PLATFORM.GoToSpeed(16);#m/s
|
||||
|
||||
}
|
||||
}
|
||||
if (aTask.TaskType() == "WAIT")
|
||||
{
|
||||
PLATFORM.GoToSpeed(0);#m/s
|
||||
}
|
||||
|
||||
update_interval 5 sec
|
||||
advanced_behavior_tree
|
||||
selector
|
||||
behavior_node behavior_engage
|
||||
end_selector
|
||||
|
||||
end_advanced_behavior_tree
|
||||
|
||||
end_script
|
||||
# script void on_task_assign(WsfTask aTask, WsfTrack aTrack)
|
||||
#
|
||||
# if (aTask.TaskType() == "ENGAGE")
|
||||
# {
|
||||
# WsfWeapon missile = PLATFORM.Weapon("sam");
|
||||
# missile.Fire(aTrack);
|
||||
# writeln("fire,remain weapon:", missile.QuantityRemaining());
|
||||
# }
|
||||
# if (aTask.TaskType() == "MOVE")
|
||||
# {
|
||||
# if(!aTrack.WithinZoneOf(PLATFORM,"battalion_sector"))
|
||||
# {
|
||||
# double relativeAzimuthOf=
|
||||
# PLATFORM.RelativeAzimuthOf(aTrack.CurrentLocation());
|
||||
# PLATFORM.TurnToRelativeHeading(relativeAzimuthOf);
|
||||
# PLATFORM.GoToSpeed(16);#m/s
|
||||
#
|
||||
# }
|
||||
# }
|
||||
# if (aTask.TaskType() == "WAIT")
|
||||
# {
|
||||
# PLATFORM.GoToSpeed(0);#m/s
|
||||
# }
|
||||
#
|
||||
#
|
||||
# end_script
|
||||
|
||||
|
||||
end_processor
|
||||
|
||||
|
||||
|
||||
weapon sam LARGE_SAM
|
||||
quantity 10
|
||||
end_weapon
|
||||
|
||||
Reference in New Issue
Block a user