From b81fe009e1d2f6f93980593eb7fe00dd83145162 Mon Sep 17 00:00:00 2001 From: Zack3D Date: Sun, 21 Sep 2025 22:28:17 -0700 Subject: [PATCH] bf --- src/patient.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/patient.rs b/src/patient.rs index 87dfdd5..8d4c58e 100644 --- a/src/patient.rs +++ b/src/patient.rs @@ -100,19 +100,18 @@ impl Patient { pub fn update(&mut self, dt_seconds: f32) { for organ in &mut self.organs { organ.update(dt_seconds); } // Simple inter-organ signaling: low SpO2 nudges heart rate higher. - if let Some(lungs) = self.find_organ_typed::() { + if let Some(spo2) = self.find_organ_typed::().map(|l| l.spo2_pct) { if let Some(heart) = self.find_organ_typed_mut::() { - let target = if lungs.spo2_pct < 92.0 { 90.0 } else { 70.0 }; + let target = if spo2 < 92.0 { 90.0 } else { 70.0 }; let diff = target - heart.heart_rate_bpm; heart.heart_rate_bpm += 0.05 * diff; } } // Kidneys produce urine into bladder - if let (Some(kidneys), Some(bladder)) = ( - self.find_organ_typed::(), - self.find_organ_typed_mut::(), - ) { - let produced = (kidneys.gfr * (dt_seconds / 60.0)).max(0.0) * 0.5; // ml + let produced_opt = self + .find_organ_typed::() + .map(|kidneys| (kidneys.gfr * (dt_seconds / 60.0)).max(0.0) * 0.5); // ml + if let (Some(produced), Some(bladder)) = (produced_opt, self.find_organ_typed_mut::()) { bladder.volume_ml += produced; } }