1. with Ada.Real_Time;         use Ada.Real_Time; 
  2.  
  3. with Real_Type;            use Real_Type; 
  4. with Swarm_Structures_Base; use Swarm_Structures_Base; 
  5.  
  6. package Swarm_Configurations is 
  7.  
  8.    type Configurations is (Single_Globe_In_Orbit, Dual_Globes_In_Orbit, Globe_Grid_In_Centre, Globe_Grid_Drifting); 
  9.  
  10.    type Charging_Setups_R is record 
  11.       Constant_Discharge_Rate_Per_Sec,           -- Constant rate: independent of motion 
  12.       Propulsion_Discharge_Rate_Per_Sec : Real;  -- Manoeuvring dependent rate: linearly dependent on accelaration 
  13.       Max_Globe_Interval                : Time_Span; 
  14.       Globes_Required                   : Positive; 
  15.    end record; 
  16.  
  17.    Charging_Setups : array (Configurations) of Charging_Setups_R := 
  18.      (Single_Globe_In_Orbit => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  19.                                 Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  20.                                 Max_Globe_Interval                => Milliseconds (0), 
  21.                                 Globes_Required                   => 1), 
  22.       Dual_Globes_In_Orbit  => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  23.                                 Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  24.                                 Max_Globe_Interval                => Milliseconds (0), 
  25.                                 Globes_Required                   => 1), 
  26.       Globe_Grid_In_Centre  => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  27.                                 Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  28.                                 Max_Globe_Interval                => Milliseconds (500), 
  29.                                 Globes_Required                   => 3), 
  30.       Globe_Grid_Drifting   => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  31.                                 Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  32.                                 Max_Globe_Interval                => Seconds (1), 
  33.                                 Globes_Required                   => 3)); 
  34.  
  35.    Energy_Globe_Detections : constant array (Configurations) of Real := (Single_Globe_In_Orbit => 0.07, 
  36.                                                                          Dual_Globes_In_Orbit  => 0.07, 
  37.                                                                          Globe_Grid_In_Centre  => 0.02, 
  38.                                                                          Globe_Grid_Drifting   => 0.06); 
  39.  
  40.    function Default_Globes           (Configuration : Configurations) return Energy_Globes; 
  41.    function Default_Protected_Globes (Configuration : Configurations) return Energy_Globes_Protected; 
  42.  
  43. end Swarm_Configurations;