with Ada.Strings.Wide_Wide_Unbounded; use Ada.Strings.Wide_Wide_Unbounded;

with StadtDatentypen;
with EinheitenDatentypen;
with ForschungenDatentypen;
with ProduktionDatentypen;
with ZahlenDatentypen;
with SpeziesDatentypen;
with SpielDatentypen;
with DiplomatieDatentypen;

package SpielRecords is
   pragma Preelaborate;
   
   type InvestierteForschungArray is array (ForschungenDatentypen.ErforschtArray'Range) of ProduktionDatentypen.Produktion;
   
   type ForschungRecord is record -- XXX
      
      TechnologieErforscht : ForschungenDatentypen.ErforschtArray;
      InvestierteForschung : InvestierteForschungArray;
      
   end record;
   
   

   type WichtigesRecord is record
      
      Geldmenge : ZahlenDatentypen.EigenerInteger;
      GeldZugewinnProRunde : ProduktionDatentypen.Produktion;

      GesamteForschungsrate : ProduktionDatentypen.Lagermenge;
      Forschungsmenge : ProduktionDatentypen.Lagermenge;
      VerbleibendeForschungszeit : ProduktionDatentypen.Lagermenge;
      Forschungsprojekt : ForschungenDatentypen.ForschungID;
      
      -- Wenn ich ein Record für diese Variable hier anlege, dann könnten man die bereits investierte Forschung behalten. XXX
      Erforscht : ForschungenDatentypen.ErforschtArray;
      
      AnzahlStädte : StadtDatentypen.Städtebereich;
      AnzahlArbeiter : EinheitenDatentypen.Einheitenbereich;
      AnzahlKämpfer : EinheitenDatentypen.Einheitenbereich;
      AnzahlSonstiges : EinheitenDatentypen.Einheitenbereich;
      
      -- Einbau sinnvoll?
      -- GesamterAngriff : ProduktionDatentypen.Produktion;
      -- GesamteVerteidigung : ProduktionDatentypen.Produktion;
      
   end record;
   
   
   
   type DiplomatieRecord is record
      
      AktuellerZustand : DiplomatieDatentypen.Status_Untereinander_Enum;
      AktuelleSympathieBewertung : DiplomatieDatentypen.Meinung;
      ZeitSeitLetzterÄnderung : ZahlenDatentypen.EigenesNatural;
      
   end record;
   
   
   
   type GrenzenRecord is record
      
      Städtegrenze : StadtDatentypen.Städtebereich;
      Einheitengrenze : EinheitenDatentypen.EinheitenbereichVorhanden;
      Geldgrenze : ZahlenDatentypen.EigenesNatural;
      Forschungsgrenze : ProduktionDatentypen.Lagermenge;
      Geldgewinngrenze : ProduktionDatentypen.Lagermenge;
      ForschungGewinngrenze : ProduktionDatentypen.Lagermenge;
      SpeziesRundengrenze : ZahlenDatentypen.EigenesNatural;
      
   end record;
   
   
   
   type AllgemeinesRecord is record
      
      Gewonnen : Boolean;
      Weiterspielen : Boolean;
      SpeziesAmZugNachLaden : SpeziesDatentypen.Spezies_Enum;
      Schwierigkeitsgrad : SpielDatentypen.Schwierigkeitsgrad_Enum;
      Rundenanzahl : ZahlenDatentypen.EigenesPositive;
      Rundengrenze : ZahlenDatentypen.EigenesNatural;   
      IronmanName : Unbounded_Wide_Wide_String;
      PlanetVernichtet : SpeziesDatentypen.Spezies_Enum;
      Zusammenbruchszeit : ZahlenDatentypen.EigenerInteger;
      AnzahlEingesetzterPZB : ZahlenDatentypen.EigenesNatural;
      
   end record;
   
   
   
   type SpeziesRecords is record
      
      Belegung : SpeziesDatentypen.Spieler_Enum;
      Besiegt : Boolean;
      
   end record;
   
   type SpeziesbelegungArray is array (SpeziesDatentypen.Spezies_Vorhanden_Enum'Range) of SpeziesRecords;

end SpielRecords;
