diff --git a/Moose Development/Moose/Actions/Act_Route.lua b/Moose Development/Moose/Actions/Act_Route.lua index 21b1fa04a..5a7b85d14 100644 --- a/Moose Development/Moose/Actions/Act_Route.lua +++ b/Moose Development/Moose/Actions/Act_Route.lua @@ -159,13 +159,23 @@ do -- ACT_ROUTE local RouteText = "" - if self.RouteMode == "B" then + if self.Coordinate and self.RouteMode == "B" then RouteText = "Route to " .. FromCoordinate:GetBRText( self.Coordinate ) .. " km." end - if self.RouteMode == "C" then + if self.Coordinate and self.RouteMode == "C" then RouteText = "Route to " .. self.Coordinate:ToString() end + + if self.Zone and self.RouteMode == "B" then + local Coordinate = self.Zone:GetCoordinate() + RouteText = "Route to zone bearing " .. FromCoordinate:GetBRText( Coordinate ) .. " km." + end + + if self.Zone and self.RouteMode == "C" then + local Coordinate = self.Zone:GetCoordinate() + RouteText = "Route to zone at " .. Coordinate:ToString() + end return RouteText end diff --git a/Moose Development/Moose/Core/Zone.lua b/Moose Development/Moose/Core/Zone.lua index 5f41cf733..07d437913 100644 --- a/Moose Development/Moose/Core/Zone.lua +++ b/Moose Development/Moose/Core/Zone.lua @@ -223,6 +223,23 @@ function ZONE_BASE:GetPointVec2() end +--- Returns a @{Point#COORDINATE} of the zone. +-- @param #ZONE_BASE self +-- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. +-- @return Core.Point#COORDINATE The Coordinate of the zone. +function ZONE_BASE:GetCoordinate() + self:F2( self.ZoneName ) + + local Vec2 = self:GetVec2() + + local Coordinate = COORDINATE:NewFromVec2( Vec2 ) + + self:T2( { Coordinate } ) + + return Coordinate +end + + --- Returns the @{DCSTypes#Vec3} of the zone. -- @param #ZONE_BASE self -- @param Dcs.DCSTypes#Distance Height The height to add to the land height where the center of the zone is located. diff --git a/Moose Development/Moose/Tasking/Mission.lua b/Moose Development/Moose/Tasking/Mission.lua index 86f77eccf..9336ae32c 100644 --- a/Moose Development/Moose/Tasking/Mission.lua +++ b/Moose Development/Moose/Tasking/Mission.lua @@ -227,21 +227,6 @@ function MISSION:New( CommandCenter, MissionName, MissionPriority, MissionBriefi return self end --- FSM function for a MISSION --- @param #MISSION self --- @param #string From --- @param #string Event --- @param #string To -function MISSION:onbeforeComplete( From, Event, To ) - - for TaskID, Task in pairs( self:GetTasks() ) do - local Task = Task -- Tasking.Task#TASK - if not Task:IsStateSuccess() and not Task:IsStateFAILED() and not Task:IsStateAborted() and not Task:IsStateCancelled() then - return false -- Mission cannot be completed. Other Tasks are still active. - end - end - return true -- Allow Mission completion. -end -- FSM function for a MISSION -- @param #MISSION self @@ -250,7 +235,7 @@ end -- @param #string To function MISSION:onenterCOMPLETED( From, Event, To ) - self:GetCommandCenter():MessageToCoalition( "Mission " .. self:GetName() .. " has been completed! Good job guys!" ) + self:GetCommandCenter():MessageToCoalition( self:GetName() .. " has been completed! Good job guys!" ) end --- Gets the mission name. diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index 35387c045..004fb85de 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -130,7 +130,7 @@ do -- TASK_A2G if Task:GetRendezVousZone( TaskUnit ) then self:__RouteToRendezVousZone( 0.1 ) else - if Task:GetRendezVousPointVec2( TaskUnit ) then + if Task:GetRendezVousCoordinate( TaskUnit ) then self:__RouteToRendezVousPoint( 0.1 ) else self:__ArriveAtRendezVous( 0.1 ) @@ -173,9 +173,9 @@ do -- TASK_A2G else local TargetUnit = Task.TargetSetUnit:GetFirst() -- Wrapper.Unit#UNIT if TargetUnit then - local PointVec2 = TargetUnit:GetPointVec2() - self:T( { TargetPointVec2 = PointVec2, PointVec2:GetX(), PointVec2:GetAlt(), PointVec2:GetZ() } ) - Task:SetTargetPointVec2( TargetUnit:GetPointVec2(), TaskUnit ) + local Coordinate = TargetUnit:GetCoordinate() + self:T( { TargetCoordinate = Coordinate, Coordinate:GetX(), Coordinate:GetAlt(), Coordinate:GetZ() } ) + Task:SetTargetCoordinate( TargetUnit:GetCoordinate(), TaskUnit ) end self:__RouteToTargetPoint( 0.1 ) end @@ -189,7 +189,7 @@ do -- TASK_A2G self:E( { TaskUnit = TaskUnit, Task = Task and Task:GetClassNameAndID() } ) local TargetUnit = Task.TargetSetUnit:GetFirst() -- Wrapper.Unit#UNIT if TargetUnit then - Task:SetTargetPointVec2( TargetUnit:GetPointVec2(), TaskUnit ) + Task:SetTargetCoordinate( TargetUnit:GetCoordinate(), TaskUnit ) end self:__RouteToTargets( -10 ) end @@ -204,28 +204,28 @@ do -- TASK_A2G end --- @param #TASK_A2G self - -- @param Core.Point#POINT_VEC2 RendezVousPointVec2 The PointVec2 object referencing to the 2D point where the RendezVous point is located on the map. + -- @param Core.Point#COORDINATE RendezVousCoordinate The Coordinate object referencing to the 2D point where the RendezVous point is located on the map. -- @param #number RendezVousRange The RendezVousRange that defines when the player is considered to have arrived at the RendezVous point. -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_A2G:SetRendezVousPointVec2( RendezVousPointVec2, RendezVousRange, TaskUnit ) + function TASK_A2G:SetRendezVousCoordinate( RendezVousCoordinate, RendezVousRange, TaskUnit ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) local ActRouteRendezVous = ProcessUnit:GetProcess( "RoutingToRendezVous", "RouteToRendezVousPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - ActRouteRendezVous:SetPointVec2( RendezVousPointVec2 ) + ActRouteRendezVous:SetCoordinate( RendezVousCoordinate ) ActRouteRendezVous:SetRange( RendezVousRange ) end --- @param #TASK_A2G self -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Point#POINT_VEC2 The PointVec2 object referencing to the 2D point where the RendezVous point is located on the map. + -- @return Core.Point#COORDINATE The Coordinate object referencing to the 2D point where the RendezVous point is located on the map. -- @return #number The RendezVousRange that defines when the player is considered to have arrived at the RendezVous point. - function TASK_A2G:GetRendezVousPointVec2( TaskUnit ) + function TASK_A2G:GetRendezVousCoordinate( TaskUnit ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) local ActRouteRendezVous = ProcessUnit:GetProcess( "RoutingToRendezVous", "RouteToRendezVousPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - return ActRouteRendezVous:GetPointVec2(), ActRouteRendezVous:GetRange() + return ActRouteRendezVous:GetCoordinate(), ActRouteRendezVous:GetRange() end @@ -253,26 +253,26 @@ do -- TASK_A2G end --- @param #TASK_A2G self - -- @param Core.Point#POINT_VEC2 TargetPointVec2 The PointVec2 object where the Target is located on the map. + -- @param Core.Point#COORDINATE TargetCoordinate The Coordinate object where the Target is located on the map. -- @param Wrapper.Unit#UNIT TaskUnit - function TASK_A2G:SetTargetPointVec2( TargetPointVec2, TaskUnit ) + function TASK_A2G:SetTargetCoordinate( TargetCoordinate, TaskUnit ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) local ActRouteTarget = ProcessUnit:GetProcess( "Engaging", "RouteToTargetPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - ActRouteTarget:SetPointVec2( TargetPointVec2 ) + ActRouteTarget:SetCoordinate( TargetCoordinate ) end --- @param #TASK_A2G self -- @param Wrapper.Unit#UNIT TaskUnit - -- @return Core.Point#POINT_VEC2 The PointVec2 object where the Target is located on the map. - function TASK_A2G:GetTargetPointVec2( TaskUnit ) + -- @return Core.Point#COORDINATE The Coordinate object where the Target is located on the map. + function TASK_A2G:GetTargetCoordinate( TaskUnit ) local ProcessUnit = self:GetUnitProcess( TaskUnit ) local ActRouteTarget = ProcessUnit:GetProcess( "Engaging", "RouteToTargetPoint" ) -- Actions.Act_Route#ACT_ROUTE_POINT - return ActRouteTarget:GetPointVec2() + return ActRouteTarget:GetCoordinate() end