mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Fixed bugs introduced in last update.
Added delete markers to F10 menu.
This commit is contained in:
parent
5992c852da
commit
e205af75ca
@ -50,6 +50,7 @@
|
|||||||
-- @field #string SubMenuName
|
-- @field #string SubMenuName
|
||||||
-- @field #boolean respawn_after_landing
|
-- @field #boolean respawn_after_landing
|
||||||
-- @field #number respawn_delay
|
-- @field #number respawn_delay
|
||||||
|
-- @field #table markerids
|
||||||
-- @field #table RAT
|
-- @field #table RAT
|
||||||
-- @extends Functional.Spawn#SPAWN
|
-- @extends Functional.Spawn#SPAWN
|
||||||
|
|
||||||
@ -96,6 +97,7 @@ RAT={
|
|||||||
SubMenuName=nil, -- Submenu name for RAT object.
|
SubMenuName=nil, -- Submenu name for RAT object.
|
||||||
respawn_at_landing=false, -- Respawn aircraft the moment they land rather than at engine shutdown.
|
respawn_at_landing=false, -- Respawn aircraft the moment they land rather than at engine shutdown.
|
||||||
respawn_delay=nil, -- Delay in seconds until repawn happens after landing.
|
respawn_delay=nil, -- Delay in seconds until repawn happens after landing.
|
||||||
|
markerids={}, -- Array with marker IDs.
|
||||||
}
|
}
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
@ -146,19 +148,19 @@ RAT.unit={
|
|||||||
}
|
}
|
||||||
|
|
||||||
--- RAT rules of engagement.
|
--- RAT rules of engagement.
|
||||||
-- @field #RAT roe
|
-- @field #RAT ROT
|
||||||
RAT.roe={
|
RAT.ROE={
|
||||||
weaponhold="hold",
|
weaponhold="hold",
|
||||||
weaponfree="free",
|
weaponfree="free",
|
||||||
returnfire="return",
|
returnfire="return",
|
||||||
}
|
}
|
||||||
|
|
||||||
--- RAT reaction to threat.
|
--- RAT reaction to threat.
|
||||||
-- @field #RAT rot
|
-- @field #RAT ROT
|
||||||
RAT.rot{
|
RAT.ROT={
|
||||||
evade="evade",
|
evade="evade",
|
||||||
passive="passive",
|
passive="passive",
|
||||||
noreaction="noreaction"
|
noreaction="noreaction",
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Running number of placed markers on the F10 map.
|
--- Running number of placed markers on the F10 map.
|
||||||
@ -197,6 +199,7 @@ myid="RAT | "
|
|||||||
--DONE: Add markers to F10 menu.
|
--DONE: Add markers to F10 menu.
|
||||||
--TODO: Add respawn limit.
|
--TODO: Add respawn limit.
|
||||||
--DONE: Make takeoff method random between cold and hot start.
|
--DONE: Make takeoff method random between cold and hot start.
|
||||||
|
--TODO: Check out uncontrolled spawning.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -208,6 +211,9 @@ myid="RAT | "
|
|||||||
-- @usage yak:RAT("RAT_YAK") will create a RAT object called "yak". The template group in the mission editor must have the name "RAT_YAK".
|
-- @usage yak:RAT("RAT_YAK") will create a RAT object called "yak". The template group in the mission editor must have the name "RAT_YAK".
|
||||||
function RAT:New(groupname)
|
function RAT:New(groupname)
|
||||||
|
|
||||||
|
-- Welcome message.
|
||||||
|
env.info(myid.."Creating new RAT object from template: "..groupname)
|
||||||
|
|
||||||
-- Inherit SPAWN clase.
|
-- Inherit SPAWN clase.
|
||||||
local self=BASE:Inherit(self, SPAWN:New(groupname)) -- #RAT
|
local self=BASE:Inherit(self, SPAWN:New(groupname)) -- #RAT
|
||||||
|
|
||||||
@ -270,18 +276,18 @@ function RAT:Spawn(naircraft)
|
|||||||
text=text..string.format("Vclimb: %4.1f\n", self.Vclimb)
|
text=text..string.format("Vclimb: %4.1f\n", self.Vclimb)
|
||||||
text=text..string.format("Vcruisemax: %4.1f\n", self.Vcruisemax)
|
text=text..string.format("Vcruisemax: %4.1f\n", self.Vcruisemax)
|
||||||
text=text..string.format("AlphaDescent: %4.2f\n", self.AlphaDescent)
|
text=text..string.format("AlphaDescent: %4.2f\n", self.AlphaDescent)
|
||||||
text=text..string.format("ROE: %s\n", self.roe)
|
text=text..string.format("ROE: %s\n", tostring(self.roe))
|
||||||
text=text..string.format("ROT: %s\n", self.rot)
|
text=text..string.format("ROT: %s\n", tostring(self.rot))
|
||||||
text=text..string.format("Min dist: %4.1f\n", self.mindist)
|
text=text..string.format("Min dist: %4.1f\n", self.mindist)
|
||||||
text=text..string.format("Max dist: %4.1f\n", self.maxdist)
|
text=text..string.format("Max dist: %4.1f\n", self.maxdist)
|
||||||
text=text..string.format("Report status: %s\n", tostring(self.airports))
|
text=text..string.format("Report status: %s\n", tostring(self.reportstatus))
|
||||||
text=text..string.format("Status interval: %4.1f\n", self.statusinterval)
|
text=text..string.format("Status interval: %4.1f\n", self.statusinterval)
|
||||||
text=text..string.format("Place markers: %s\n", tostring(self.placemarkers))
|
text=text..string.format("Place markers: %s\n", tostring(self.placemarkers))
|
||||||
text=text..string.format("FLuser: %s\n", tostring(self.Fluser))
|
text=text..string.format("FLuser: %s\n", tostring(self.Fluser))
|
||||||
text=text..string.format("FLminuser: %s\n", tostring(self.Flminuser))
|
text=text..string.format("FLminuser: %s\n", tostring(self.Flminuser))
|
||||||
text=text..string.format("FLmaxuser: %s\n", tostring(self.Flmaxuser))
|
text=text..string.format("FLmaxuser: %s\n", tostring(self.Flmaxuser))
|
||||||
text=text..string.format("Respawn after landing: %s\n", tostring(self.respawn_after_landing))
|
text=text..string.format("Respawn after landing: %s\n", tostring(self.respawn_after_landing))
|
||||||
text=text..string.format("Respawn after landing: %s\n", tostring(self.respawn_delay))
|
text=text..string.format("Respawn delay: %s\n", tostring(self.respawn_delay))
|
||||||
-- @field #number FLminuser
|
-- @field #number FLminuser
|
||||||
text=text..string.format("******************************************************\n")
|
text=text..string.format("******************************************************\n")
|
||||||
env.info(myid..text)
|
env.info(myid..text)
|
||||||
@ -292,8 +298,9 @@ function RAT:Spawn(naircraft)
|
|||||||
self.SubMenuName=self.SpawnTemplatePrefix
|
self.SubMenuName=self.SpawnTemplatePrefix
|
||||||
self.Menu[self.SubMenuName]=MENU_MISSION:New(self.SubMenuName, RAT.MenuF10)
|
self.Menu[self.SubMenuName]=MENU_MISSION:New(self.SubMenuName, RAT.MenuF10)
|
||||||
self.Menu[self.SubMenuName]["groups"]=MENU_MISSION:New("Groups", self.Menu[self.SubMenuName])
|
self.Menu[self.SubMenuName]["groups"]=MENU_MISSION:New("Groups", self.Menu[self.SubMenuName])
|
||||||
MENU_MISSION_COMMAND:New("Status report", self.Menu[self.SubMenuName], self.Status, self, true)
|
|
||||||
MENU_MISSION_COMMAND:New("Spawn new group", self.Menu[self.SubMenuName], self._SpawnWithRoute, self)
|
MENU_MISSION_COMMAND:New("Spawn new group", self.Menu[self.SubMenuName], self._SpawnWithRoute, self)
|
||||||
|
MENU_MISSION_COMMAND:New("Delete markers", self.Menu[self.SubMenuName], self._DeleteMarkers, self, self.markerids)
|
||||||
|
MENU_MISSION_COMMAND:New("Status report", self.Menu[self.SubMenuName], self.Status, self, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Schedule spawning of aircraft.
|
-- Schedule spawning of aircraft.
|
||||||
@ -511,11 +518,11 @@ end
|
|||||||
-- @param #string roe "hold" = weapon hold, "return" = return fire, "free" = weapons free.
|
-- @param #string roe "hold" = weapon hold, "return" = return fire, "free" = weapons free.
|
||||||
function RAT:SetROE(roe)
|
function RAT:SetROE(roe)
|
||||||
if roe=="return" then
|
if roe=="return" then
|
||||||
self.roe=RAT.roe.returnfire
|
self.roe=RAT.ROE.returnfire
|
||||||
elseif roe=="free" then
|
elseif roe=="free" then
|
||||||
self.roe=RAT.roe.weaponfree
|
self.roe=RAT.ROE.weaponfree
|
||||||
else
|
else
|
||||||
self.roe=RAT.roe.weaponhold
|
self.roe=RAT.ROE.weaponhold
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -524,11 +531,11 @@ end
|
|||||||
-- @param #string rot "noreaction = no reactino, "passive" = passive defence, "evade" = weapons free.
|
-- @param #string rot "noreaction = no reactino, "passive" = passive defence, "evade" = weapons free.
|
||||||
function RAT:SetROT(rot)
|
function RAT:SetROT(rot)
|
||||||
if rot=="passive" then
|
if rot=="passive" then
|
||||||
self.rot=RAT.rot.passive
|
self.rot=RAT.ROT.passive
|
||||||
elseif rot=="evade" then
|
elseif rot=="evade" then
|
||||||
self.rot=RAT.rot.evade
|
self.rot=RAT.ROT.evade
|
||||||
else
|
else
|
||||||
self.rot=RAT.rot.noreaction
|
self.rot=RAT.ROT.noreaction
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -694,6 +701,7 @@ function RAT:_SpawnWithRoute(_departure, _destination)
|
|||||||
if self.takeoff==RAT.waypoint.coldorhot then
|
if self.takeoff==RAT.waypoint.coldorhot then
|
||||||
local temp={RAT.waypoint.cold, RAT.waypoint.hot}
|
local temp={RAT.waypoint.cold, RAT.waypoint.hot}
|
||||||
_takeoff=temp[math.random(2)]
|
_takeoff=temp[math.random(2)]
|
||||||
|
env.info(myid.."Random takeoff type: ".._takeoff)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set flight plan.
|
-- Set flight plan.
|
||||||
@ -743,19 +751,20 @@ function RAT:_SpawnWithRoute(_departure, _destination)
|
|||||||
-- F10/RAT/<templatename>/Group X
|
-- F10/RAT/<templatename>/Group X
|
||||||
self.Menu[self.SubMenuName].groups[self.SpawnIndex]=MENU_MISSION:New(name, self.Menu[self.SubMenuName].groups)
|
self.Menu[self.SubMenuName].groups[self.SpawnIndex]=MENU_MISSION:New(name, self.Menu[self.SubMenuName].groups)
|
||||||
-- F10/RAT/<templatename>/Group X/ROT
|
-- F10/RAT/<templatename>/Group X/ROT
|
||||||
self.Menu[self.SubMenuName].groups[self.SpawnIndex].roe=MENU_MISSION:New("Set ROE", self.Menu[self.SubMenuName].groups)
|
self.Menu[self.SubMenuName].groups[self.SpawnIndex]["roe"]=MENU_MISSION:New("Set ROE", self.Menu[self.SubMenuName].groups[self.SpawnIndex])
|
||||||
MENU_MISSION_COMMAND:New("Weapons hold", self.Menu[self.SubMenuName].groups[self.SpawnIndex].roe, self._SetROE, self, RAT.roe.weaponhold)
|
MENU_MISSION_COMMAND:New("Weapons hold", self.Menu[self.SubMenuName].groups[self.SpawnIndex]["roe"], self._SetROE, self, group, RAT.ROE.weaponhold)
|
||||||
MENU_MISSION_COMMAND:New("Weapons free", self.Menu[self.SubMenuName].groups[self.SpawnIndex].roe, self._SetROE, self, RAT.roe.weaponfree)
|
MENU_MISSION_COMMAND:New("Weapons free", self.Menu[self.SubMenuName].groups[self.SpawnIndex]["roe"], self._SetROE, self, group, RAT.ROE.weaponfree)
|
||||||
MENU_MISSION_COMMAND:New("Return fire", self.Menu[self.SubMenuName].groups[self.SpawnIndex].roe, self._SetROE, self, RAT.roe.returnfire)
|
MENU_MISSION_COMMAND:New("Return fire", self.Menu[self.SubMenuName].groups[self.SpawnIndex]["roe"], self._SetROE, self, group, RAT.ROE.returnfire)
|
||||||
-- F10/RAT/<templatename>/Group X/ROT
|
-- F10/RAT/<templatename>/Group X/ROT
|
||||||
self.Menu[self.SubMenuName].groups[self.SpawnIndex].rot=MENU_MISSION:New("Set ROT", self.Menu[self.SubMenuName].groups)
|
self.Menu[self.SubMenuName].groups[self.SpawnIndex]["rot"]=MENU_MISSION:New("Set ROT", self.Menu[self.SubMenuName].groups[self.SpawnIndex])
|
||||||
MENU_MISSION_COMMAND:New("Weapons hold", self.Menu[self.SubMenuName].groups[self.SpawnIndex].rot, self._SetROT, self, RAT.rot.noreaction)
|
MENU_MISSION_COMMAND:New("No reaction", self.Menu[self.SubMenuName].groups[self.SpawnIndex]["rot"], self._SetROT, self, group, RAT.ROT.noreaction)
|
||||||
MENU_MISSION_COMMAND:New("Weapons free", self.Menu[self.SubMenuName].groups[self.SpawnIndex].rot, self._SetROT, self, RAT.rot.passive)
|
MENU_MISSION_COMMAND:New("Passive defense", self.Menu[self.SubMenuName].groups[self.SpawnIndex]["rot"], self._SetROT, self, group, RAT.ROT.passive)
|
||||||
MENU_MISSION_COMMAND:New("Return fire", self.Menu[self.SubMenuName].groups[self.SpawnIndex].rot, self._SetROT, self, RAT.rot.evade)
|
MENU_MISSION_COMMAND:New("Evade on fire", self.Menu[self.SubMenuName].groups[self.SpawnIndex]["rot"], self._SetROT, self, group, RAT.ROT.evade)
|
||||||
-- F10/RAT/<templatename>/Group X/
|
-- F10/RAT/<templatename>/Group X/
|
||||||
MENU_MISSION_COMMAND:New("Status report", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self.Status, self, true, self.SpawnIndex)
|
|
||||||
MENU_MISSION_COMMAND:New("Place markers", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self._PlaceMarkers, self, waypoints)
|
|
||||||
MENU_MISSION_COMMAND:New("Despawn group", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self._Despawn, self, group)
|
MENU_MISSION_COMMAND:New("Despawn group", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self._Despawn, self, group)
|
||||||
|
MENU_MISSION_COMMAND:New("Place markers", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self._PlaceMarkers, self, waypoints)
|
||||||
|
--MENU_MISSION_COMMAND:New("Delete markers", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self._DelateMarkers, self, markers)
|
||||||
|
MENU_MISSION_COMMAND:New("Status report", self.Menu[self.SubMenuName].groups[self.SpawnIndex], self.Status, self, true, self.SpawnIndex)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -1025,9 +1034,9 @@ function RAT:_SetRoute(takeoff, _departure, _destination)
|
|||||||
text=text..string.format("h_climb = %6.1f m\n", h_climb)
|
text=text..string.format("h_climb = %6.1f m\n", h_climb)
|
||||||
text=text..string.format("h_descent = %6.1f m\n", h_descent)
|
text=text..string.format("h_descent = %6.1f m\n", h_descent)
|
||||||
text=text..string.format("h_holding = %6.1f m\n", h_holding)
|
text=text..string.format("h_holding = %6.1f m\n", h_holding)
|
||||||
text=text..string.format("FLmin = %6.1f m ASL\n", FLmin)
|
text=text..string.format("FLmin = %6.1f m ASL = FL%03d\n", FLmin, FLmin/RAT.unit.FL2m)
|
||||||
text=text..string.format("FLmax = %6.1f m ASL\n", FLmax)
|
text=text..string.format("FLcruise = %6.1f m ASL = FL%03d\n", FLcruise, FLcruise/RAT.unit.FL2m)
|
||||||
text=text..string.format("FLcruise = %6.1f m ASL\n", FLcruise)
|
text=text..string.format("FLmax = %6.1f m ASL = FL%03d\n", FLmax, FLmax/RAT.unit.FL2m)
|
||||||
text=text..string.format("\nAngles:\n")
|
text=text..string.format("\nAngles:\n")
|
||||||
text=text..string.format("Alpha climb = %6.1f Deg\n", math.deg(AlphaClimb))
|
text=text..string.format("Alpha climb = %6.1f Deg\n", math.deg(AlphaClimb))
|
||||||
text=text..string.format("Alpha descent = %6.1f Deg\n", math.deg(AlphaDescent))
|
text=text..string.format("Alpha descent = %6.1f Deg\n", math.deg(AlphaDescent))
|
||||||
@ -1976,6 +1985,7 @@ function RAT:_ModifySpawnTemplate(waypoints)
|
|||||||
-- Also modify x,y of the template. Not sure why.
|
-- Also modify x,y of the template. Not sure why.
|
||||||
SpawnTemplate.x = PointVec3.x
|
SpawnTemplate.x = PointVec3.x
|
||||||
SpawnTemplate.y = PointVec3.z
|
SpawnTemplate.y = PointVec3.z
|
||||||
|
--SpawnTemplate.uncontrolled=true
|
||||||
|
|
||||||
-- Update modified template for spawn group.
|
-- Update modified template for spawn group.
|
||||||
self.SpawnGroups[self.SpawnIndex].SpawnTemplate=SpawnTemplate
|
self.SpawnGroups[self.SpawnIndex].SpawnTemplate=SpawnTemplate
|
||||||
@ -2082,12 +2092,16 @@ end
|
|||||||
-- @param Wrapper.Group#GROUP group Group for which the ROE is set.
|
-- @param Wrapper.Group#GROUP group Group for which the ROE is set.
|
||||||
-- @param #string roe ROE of group.
|
-- @param #string roe ROE of group.
|
||||||
function RAT:_SetROE(group, roe)
|
function RAT:_SetROE(group, roe)
|
||||||
if self.roe==RAT.roe.returnfire then
|
env.info(myid.."Setting ROE to "..roe.." for group "..group:GetName())
|
||||||
|
if self.roe==RAT.ROE.returnfire then
|
||||||
group:OptionROEReturnFire()
|
group:OptionROEReturnFire()
|
||||||
elseif self.roe==RAT.roe.weaponfree then
|
env.info(myid.."ROE return fire")
|
||||||
|
elseif self.roe==RAT.ROE.weaponfree then
|
||||||
group:OptionROEWeaponFree()
|
group:OptionROEWeaponFree()
|
||||||
|
env.info(myid.."ROE weapons free")
|
||||||
else
|
else
|
||||||
group:OptionROEHoldFire()
|
group:OptionROEHoldFire()
|
||||||
|
env.info(myid.."ROE hold fire")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2097,9 +2111,10 @@ end
|
|||||||
-- @param Wrapper.Group#GROUP group Group for which the ROT is set.
|
-- @param Wrapper.Group#GROUP group Group for which the ROT is set.
|
||||||
-- @param #string rot ROT of group.
|
-- @param #string rot ROT of group.
|
||||||
function RAT:_SetROT(group, rot)
|
function RAT:_SetROT(group, rot)
|
||||||
if self.rot==RAT.rot.passive then
|
env.info(myid.."Setting ROT to "..rot.." for group "..group:GetName())
|
||||||
|
if self.rot==RAT.ROT.passive then
|
||||||
group:OptionROTPassiveDefense()
|
group:OptionROTPassiveDefense()
|
||||||
elseif self.rot==RAT.rot.evade then
|
elseif self.rot==RAT.ROT.evade then
|
||||||
group:OptionROTEvadeFire()
|
group:OptionROTEvadeFire()
|
||||||
else
|
else
|
||||||
group:OptionROTNoReaction()
|
group:OptionROTNoReaction()
|
||||||
@ -2217,6 +2232,7 @@ end
|
|||||||
-- @param #table wp Position of marker coming in as waypoint, i.e. has x, y and alt components.
|
-- @param #table wp Position of marker coming in as waypoint, i.e. has x, y and alt components.
|
||||||
function RAT:_SetMarker(text, wp)
|
function RAT:_SetMarker(text, wp)
|
||||||
RAT.markerid=RAT.markerid+1
|
RAT.markerid=RAT.markerid+1
|
||||||
|
table.insert(self.markerids,RAT.markerid)
|
||||||
if self.debug then
|
if self.debug then
|
||||||
env.info(myid.."Placing marker with ID "..RAT.markerid..": "..text)
|
env.info(myid.."Placing marker with ID "..RAT.markerid..": "..text)
|
||||||
end
|
end
|
||||||
@ -2226,4 +2242,19 @@ function RAT:_SetMarker(text, wp)
|
|||||||
trigger.action.markToAll(RAT.markerid, text, vec)
|
trigger.action.markToAll(RAT.markerid, text, vec)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Delete all markers on F10 map.
|
||||||
|
-- @param #RAT self
|
||||||
|
-- @param #table ids (Optional) Table holding the marker IDs to be deleted.
|
||||||
|
function RAT:_DeleteMarkers(ids)
|
||||||
|
if ids then
|
||||||
|
for k,v in pairs(ids) do
|
||||||
|
trigger.action.removeMark(k)
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for i=1,RAT.markerid do
|
||||||
|
trigger.action.removeMark(i)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
Loading…
x
Reference in New Issue
Block a user