diff --git a/lib/models/cylinder_viewmodel.dart b/lib/models/cylinder_viewmodel.dart index fd93953..7e0a732 100644 --- a/lib/models/cylinder_viewmodel.dart +++ b/lib/models/cylinder_viewmodel.dart @@ -46,7 +46,7 @@ class CylinderViewModel { ]); String get rbPressure => - sprintf("%d", [metric! ? rockBottom!.rockBottomPressure(cylinder!).bar.roundUp(5) : rockBottom!.rockBottomPressure(cylinder!).psi.roundUp(100)]); + sprintf("%d", [metric! ? rockBottom!.rockBottomPressure(cylinder!).bar.roundUp(10) : rockBottom!.rockBottomPressure(cylinder!).psi.roundUp(100)]); String get buoyancyAtPressure => metric! ? sprintf("%+.01f", [ @@ -83,6 +83,6 @@ class CylinderViewModel { ]); String get turnPressure => sprintf("%d", [ - metric! ? rockBottom!.turnPressure(cylinder!).bar.roundUp(5) : rockBottom!.turnPressure(cylinder!).psi.roundUp(100), + metric! ? rockBottom!.turnPressure(cylinder!).bar.roundUp(10) : rockBottom!.turnPressure(cylinder!).psi.roundUp(100), ]); } diff --git a/lib/models/rockbottom_model.dart b/lib/models/rockbottom_model.dart index dea5ba5..25a2088 100644 --- a/lib/models/rockbottom_model.dart +++ b/lib/models/rockbottom_model.dart @@ -35,9 +35,15 @@ class RockBottomModel { double get depthAtm => (10 + depth.m) / 10; double get safetyStopAtm => (10 + settings.safetyStopDepth.m) / 10; - Volume get troubleSolvingVolume => VolumeL(settings.troubleSolvingDuration * settings.sacRate.l * settings.troubleSolvingSacMultiplier * depthAtm); + Volume get troubleSolvingVolume { + // Min gas trouble solving is calculated at the average depth for simplicity. + if (settings.principles == Principles.MINGAS) { + return VolumeL(settings.troubleSolvingDuration * settings.sacRate.l * settings.troubleSolvingSacMultiplier * avgAtm); + } + return VolumeL(settings.troubleSolvingDuration * settings.sacRate.l * settings.troubleSolvingSacMultiplier * depthAtm); + } - double get ascentDuration => (depth.m / settings.ascentRate.m).roundToDouble(); + double get ascentDuration => (depth.m / settings.ascentRate.m).ceilToDouble(); Volume get ascentVolume => VolumeL(ascentDuration * settings.sacRate.l * settings.ascentSacMultiplier * avgAtm); diff --git a/lib/settings/settings_bloc.dart b/lib/settings/settings_bloc.dart index b6225ec..08906d8 100644 --- a/lib/settings/settings_bloc.dart +++ b/lib/settings/settings_bloc.dart @@ -71,8 +71,9 @@ class SettingsBloc extends Bloc { if (event.principles == Principles.MINGAS) { if (newSettings.isMetric && newSettings.sacRate.l < 15) newSettings.sacRate = VolumeL(15); if (!newSettings.isMetric && newSettings.sacRate.cuft < 0.5) newSettings.sacRate = VolumeL(0.5); - if (newSettings.troubleSolvingSacMultiplier < 2) newSettings.troubleSolvingSacMultiplier = 2; - if (newSettings.ascentSacMultiplier < 2) newSettings.ascentSacMultiplier = 2; + newSettings.troubleSolvingSacMultiplier = 2; + newSettings.ascentSacMultiplier = 2; + newSettings.troubleSolvingDuration = 1; newSettings.safetyStopDuration = 0; newSettings.safetyStopSacMultiplier = 0; newSettings.hideNdlNotice = true; diff --git a/lib/settings/settings_view.dart b/lib/settings/settings_view.dart index ff90b51..a7cabe1 100644 --- a/lib/settings/settings_view.dart +++ b/lib/settings/settings_view.dart @@ -38,8 +38,8 @@ class _SettingsViewState extends State { delegate: SliverChildListDelegate( [ generalTable(context, state.settings), - troubleSolvingTable(context, state.settings), - ascentTable(context, state.settings), + if (state.settings.principles == Principles.ROCKBOTTOM) troubleSolvingTable(context, state.settings), + if (state.settings.principles == Principles.ROCKBOTTOM) ascentTable(context, state.settings), if (state.settings.principles == Principles.ROCKBOTTOM) safetyStopTable(context, state.settings), visualTable(context, state.settings), Divider(