1. -- 
  2. -- Jan & Uwe R. Zimmer, Australia, September 2019 
  3. -- 
  4.  
  5. with Ada.Real_Time;         use Ada.Real_Time; 
  6.  
  7. with Real_Type;             use Real_Type; 
  8. with Swarm_Structures_Base; use Swarm_Structures_Base; 
  9.  
  10. package Swarm_Configurations is 
  11.  
  12.    type Configurations is (Single_Globe_In_Orbit, Dual_Globes_In_Orbit, Dual_Globes_In_Orbit_Fast, Random_Globes_In_Orbits, Globe_Grid_In_Centre, Globe_Grid_Drifting); 
  13.  
  14.    type Charging_Setups_R is record 
  15.       Constant_Discharge_Rate_Per_Sec,           -- Constant rate: independent of motion 
  16.       Propulsion_Discharge_Rate_Per_Sec : Real;  -- Manoeuvring dependent rate: linearly dependent on accelaration 
  17.       Max_Globe_Interval                : Time_Span; 
  18.       Globes_Required                   : Positive; 
  19.    end record; 
  20.  
  21.    Charging_Setups : array (Configurations) of Charging_Setups_R := 
  22.      (Single_Globe_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.       Dual_Globes_In_Orbit       => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  27.                                      Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  28.                                      Max_Globe_Interval                => Milliseconds (0), 
  29.                                      Globes_Required                   => 1), 
  30.       Dual_Globes_In_Orbit_Fast  => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  31.                                      Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  32.                                      Max_Globe_Interval                => Milliseconds (0), 
  33.                                      Globes_Required                   => 1), 
  34.       Random_Globes_In_Orbits    => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  35.                                      Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  36.                                      Max_Globe_Interval                => Milliseconds (0), 
  37.                                      Globes_Required                   => 1), 
  38.       Globe_Grid_In_Centre       => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  39.                                      Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  40.                                      Max_Globe_Interval                => Milliseconds (500), 
  41.                                      Globes_Required                   => 3), 
  42.       Globe_Grid_Drifting        => (Constant_Discharge_Rate_Per_Sec   => 0.01, 
  43.                                      Propulsion_Discharge_Rate_Per_Sec => 0.04, 
  44.                                      Max_Globe_Interval                => Seconds (1), 
  45.                                      Globes_Required                   => 3)); 
  46.  
  47.    Energy_Globe_Detections : constant array (Configurations) of Real := (Single_Globe_In_Orbit     => 0.07, 
  48.                                                                          Dual_Globes_In_Orbit      => 0.07, 
  49.                                                                          Dual_Globes_In_Orbit_Fast => 0.07, 
  50.                                                                          Random_Globes_In_Orbits   => 0.07, 
  51.                                                                          Globe_Grid_In_Centre      => 0.02, 
  52.                                                                          Globe_Grid_Drifting       => 0.06); 
  53.  
  54.    function Default_Globes           (Configuration : Configurations) return Energy_Globes; 
  55.    function Default_Protected_Globes (Configuration : Configurations) return Energy_Globes_Protected; 
  56.  
  57. end Swarm_Configurations;