summaryrefslogtreecommitdiff
path: root/android-app/app/src/main/kotlin/org
diff options
context:
space:
mode:
Diffstat (limited to 'android-app/app/src/main/kotlin/org')
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/ui/InstrumentHandler.kt7
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/FishingTarget.kt19
-rw-r--r--android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/RigAdvisor.kt32
3 files changed, 58 insertions, 0 deletions
diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/InstrumentHandler.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/InstrumentHandler.kt
index ccb3a91..371235a 100644
--- a/android-app/app/src/main/kotlin/org/terst/nav/ui/InstrumentHandler.kt
+++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/InstrumentHandler.kt
@@ -14,6 +14,13 @@ fun formatBearing(deg: Double, locale: Locale = Locale.getDefault()): String =
fun formatPeriod(sec: Double, locale: Locale = Locale.getDefault()): String =
"· %.0fs".format(locale, sec)
+/** Converts metres to feet. */
+fun metresToFeet(metres: Double): Double = metres * 3.28084
+
+/** Formats a depth/height value in feet to one decimal place. */
+fun formatFt(feet: Double, locale: Locale = Locale.getDefault()): String =
+ "%.1f".format(locale, feet)
+
// ── InstrumentHandler ────────────────────────────────────────────────────────
/**
diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/FishingTarget.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/FishingTarget.kt
new file mode 100644
index 0000000..f7597db
--- /dev/null
+++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/FishingTarget.kt
@@ -0,0 +1,19 @@
+package org.terst.nav.ui.fishing
+
+enum class FishingSpecies(val displayName: String) {
+ ONO("Ono (Wahoo)"), MAHI("Mahi-Mahi"), BOTH("Ono & Mahi")
+}
+
+data class RigRecommendation(
+ val primarySpecies: FishingSpecies,
+ val rigDescription: String,
+ val trollingSpeedKt: Double,
+ val approachNote: String
+)
+
+data class FishingTarget(
+ val bearingDeg: Double,
+ val distanceNm: Double,
+ val zoneDescription: String,
+ val rig: RigRecommendation
+)
diff --git a/android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/RigAdvisor.kt b/android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/RigAdvisor.kt
new file mode 100644
index 0000000..629725c
--- /dev/null
+++ b/android-app/app/src/main/kotlin/org/terst/nav/ui/fishing/RigAdvisor.kt
@@ -0,0 +1,32 @@
+package org.terst.nav.ui.fishing
+
+object RigAdvisor {
+ fun recommend(tempC: Double, currentKt: Double, windKt: Double): RigRecommendation {
+ val tempF = tempC * 9.0 / 5.0 + 32.0
+ val species = when {
+ tempF >= 75.0 && currentKt >= 1.0 -> FishingSpecies.ONO
+ tempF in 70.0..78.0 -> FishingSpecies.MAHI
+ else -> FishingSpecies.BOTH
+ }
+ return when (species) {
+ FishingSpecies.ONO -> RigRecommendation(
+ primarySpecies = FishingSpecies.ONO,
+ rigDescription = "Blue/white 9\" Rapala or jet head, 80# mono leader, 50–80# stand-up",
+ trollingSpeedKt = if (currentKt > 1.0) 9.0 else 8.0,
+ approachNote = "Troll along current edge; watch for color change (blue→green). Ono hit fast."
+ )
+ FishingSpecies.MAHI -> RigRecommendation(
+ primarySpecies = FishingSpecies.MAHI,
+ rigDescription = "Green/yellow skirt or ballyhoo, 50# mono, medium-action",
+ trollingSpeedKt = 7.0,
+ approachNote = "Look for floating debris or weed lines. Mahi school; keep one hooked in water."
+ )
+ FishingSpecies.BOTH -> RigRecommendation(
+ primarySpecies = FishingSpecies.BOTH,
+ rigDescription = "Mix: one Ono lure (fast), one mahi skirt (slow)",
+ trollingSpeedKt = 8.0,
+ approachNote = "Spread lures at different depths. Watch for birds and color changes."
+ )
+ }
+ }
+}