use bevy::prelude::*; #[derive(Component)] struct Environment { humidity: f32, // 0.0 - 1.0 temperature: f32, // °C } #[derive(Component)] struct Harvester { efficiency: f32, // 0.0 - 1.0 max_power_uw: f32, // microwatts } #[derive(Component)] struct Storage { energy_uj: f32, // microjoules capacity_uj: f32, } #[derive(Component)] struct Load { active: bool, draw_uw: f32, } fn harvest_power(env: &Environment, harvester: &Harvester) -> f32 { let gradient = env.humidity * (1.0 - env.humidity); let noise = rand::random::() * 0.2 + 0.9; harvester.max_power_uw * gradient * harvester.efficiency * noise } fn environment_system(mut env: Query<&mut Environment>, time: Res