Skip to content

Commit 0b98f10

Browse files
committed
feat(BelowGlideSlopeWarningAlert): trigger when below minimums and deviation is >2.5
Signed-off-by: Octol1ttle <[email protected]>
1 parent 86c5e0f commit 0b98f10

File tree

5 files changed

+21
-10
lines changed

5 files changed

+21
-10
lines changed

src/main/kotlin/ru/octol1ttle/flightassistant/api/computer/Computer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package ru.octol1ttle.flightassistant.api.computer
33
/**
44
* A class responsible for computing data and providing it to [ru.octol1ttle.flightassistant.api.display.Display]s and [ru.octol1ttle.flightassistant.api.alert.Alert]s
55
*/
6-
abstract class Computer(val computers: ComputerBus) {
6+
abstract class Computer(protected val computers: ComputerBus) {
77
/**
88
* Whether or not this computer is enabled. Disabled computers do not tick.
99
*/

src/main/kotlin/ru/octol1ttle/flightassistant/impl/alert/gpws/BelowGlideSlopeAlert.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class BelowGlideSlopeAlert(computers: ComputerBus) : Alert(computers), CenteredA
2727
}
2828

2929
val glideSlopeDeviation = computers.plan.getVerticalDeviation(computers.data.position)!!
30-
return glideSlopeDeviation > 5
30+
return glideSlopeDeviation > 5.0
3131
}
3232

3333
override fun render(guiGraphics: GuiGraphics, y: Int): Boolean {

src/main/kotlin/ru/octol1ttle/flightassistant/impl/alert/gpws/BelowGlideSlopeWarningAlert.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,13 @@ class BelowGlideSlopeWarningAlert(computers: ComputerBus) : Alert(computers), Ce
2626
return false
2727
}
2828

29-
val altitudeAboveGround = computers.data.altitude - computers.gpws.groundOrVoidY
3029
val glideSlopeDeviation = computers.plan.getVerticalDeviation(computers.data.position)!!
30+
val minimums = computers.plan.getMinimums()
31+
if (minimums != null && computers.data.altitude < minimums && glideSlopeDeviation > 2.5) {
32+
return true
33+
}
34+
35+
val altitudeAboveGround = computers.data.altitude - computers.gpws.groundOrVoidY
3136
return altitudeAboveGround < glideSlopeDeviation
3237
}
3338

src/main/kotlin/ru/octol1ttle/flightassistant/impl/alert/gpws/MinimumsReachedAlert.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import ru.octol1ttle.flightassistant.api.alert.ECAMAlert
88
import ru.octol1ttle.flightassistant.api.computer.ComputerBus
99
import ru.octol1ttle.flightassistant.api.util.extensions.cautionColor
1010
import ru.octol1ttle.flightassistant.api.util.extensions.drawString
11-
import ru.octol1ttle.flightassistant.impl.computer.autoflight.FlightPlanComputer
1211
import ru.octol1ttle.flightassistant.impl.computer.autoflight.FlightPlanComputer.FlightPhase
1312

1413
class MinimumsReachedAlert(computers: ComputerBus) : Alert(computers), ECAMAlert {
@@ -25,10 +24,8 @@ class MinimumsReachedAlert(computers: ComputerBus) : Alert(computers), ECAMAlert
2524
return true
2625
}
2726

28-
val minimums =
29-
if (computers.plan.arrivalData.minimumsType == FlightPlanComputer.ArrivalData.MinimumsType.ABSOLUTE) computers.plan.arrivalData.minimums.toDouble()
30-
else computers.plan.computers.gpws.groundOrVoidY + computers.plan.arrivalData.minimums
31-
reached = computers.plan.computers.data.altitude <= minimums
27+
val minimums = computers.plan.getMinimums() ?: return false
28+
reached = computers.data.altitude <= minimums
3229
return reached
3330
}
3431

src/main/kotlin/ru/octol1ttle/flightassistant/impl/computer/autoflight/FlightPlanComputer.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ import ru.octol1ttle.flightassistant.impl.display.StatusDisplay
2828
class FlightPlanComputer(computers: ComputerBus) : Computer(computers) {
2929
var currentPhase: FlightPhase = FlightPhase.UNKNOWN
3030
private set
31+
var groundSpeeds: LimitedFIFOQueue<Double> = LimitedFIFOQueue(SharedConstants.TICKS_PER_SECOND * 5)
32+
private set
3133

3234
var departureData: DepartureData = DepartureData.DEFAULT
3335
var enrouteData: MutableList<EnrouteWaypoint> = ArrayList()
3436
private set
3537
var arrivalData: ArrivalData = ArrivalData.DEFAULT
3638

37-
var groundSpeeds: LimitedFIFOQueue<Double> = LimitedFIFOQueue(SharedConstants.TICKS_PER_SECOND * 5)
38-
3939
override fun tick() {
4040
updateEnrouteData()
4141
currentPhase = updateFlightPhase()
@@ -128,6 +128,15 @@ class FlightPlanComputer(computers: ComputerBus) : Computer(computers) {
128128
return getDistanceToTarget(target) < computers.data.velocityPerSecond.horizontalDistance() * 3.0
129129
}
130130

131+
fun getMinimums(): Double? {
132+
if (computers.plan.arrivalData.isDefault()) {
133+
return null
134+
}
135+
136+
return if (computers.plan.arrivalData.minimumsType == ArrivalData.MinimumsType.ABSOLUTE) computers.plan.arrivalData.minimums.toDouble()
137+
else computers.gpws.groundOrVoidY + computers.plan.arrivalData.minimums
138+
}
139+
131140
fun getCruiseAltitude(): Int? {
132141
return enrouteData.maxOfOrNull { it.altitude }
133142
}

0 commit comments

Comments
 (0)