diff --git a/README.md b/README.md index 8026233ed..4bd4ec1ec 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,4 @@ Außerdem wird SDLAda (https://github.com/Lucretia/sdlada) für zukünftige Funk limited with "SDL/share/gpr/sdlada.gpr"; aus der stream.gpr entfernen, da die SDL noch nicht genutzt wird. -Aktuelle Version: 0.00.6140 \ No newline at end of file +Aktuelle Version: 0.00.6150 \ No newline at end of file diff --git a/src/BewegungSystem/BewegungssystemCursor.adb b/src/BewegungSystem/BewegungssystemCursor.adb index 42ca9c580..9c07ca681 100644 --- a/src/BewegungSystem/BewegungssystemCursor.adb +++ b/src/BewegungSystem/BewegungssystemCursor.adb @@ -1,6 +1,6 @@ package body BewegungssystemCursor is - procedure BewegungCursorRichtung (Karte : in Boolean; Richtung : in Wide_Wide_Character; RasseExtern : in Integer) is -- Hier noch Bewegung für Stadt einbauen + procedure BewegungCursorRichtung (Karte : in Boolean; Richtung : in Wide_Wide_Character; RasseExtern : in GlobaleDatentypen.Rassen) is -- Hier noch Bewegung für Stadt einbauen begin YÄnderung := 0; @@ -59,7 +59,7 @@ package body BewegungssystemCursor is - procedure GeheZuCursor (RasseExtern : in Integer) is + procedure GeheZuCursor (RasseExtern : in GlobaleDatentypen.Rassen) is begin Put (Item => To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (19, 30))); @@ -102,7 +102,7 @@ package body BewegungssystemCursor is - procedure BewegungCursorBerechnen (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in Integer) is + procedure BewegungCursorBerechnen (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in GlobaleDatentypen.Rassen) is begin KartenWert := SchleifenPruefungen.KartenUmgebung (YKoordinate => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.YAchse, @@ -124,7 +124,7 @@ package body BewegungssystemCursor is - procedure BewegungCursorBerechnenStadt (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in Integer) is + procedure BewegungCursorBerechnenStadt (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in GlobaleDatentypen.Rassen) is begin if GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse + YÄnderung < Karten.Stadtkarte'First (1) then diff --git a/src/BewegungSystem/BewegungssystemCursor.ads b/src/BewegungSystem/BewegungssystemCursor.ads index 3d73044b5..c10b3b179 100644 --- a/src/BewegungSystem/BewegungssystemCursor.ads +++ b/src/BewegungSystem/BewegungssystemCursor.ads @@ -1,15 +1,16 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; -with Anzeige, GlobaleDatentypen, GlobaleVariablen, KartenDatenbank, Karten, Eingabe, SchleifenPruefungen; +with Anzeige, GlobaleDatentypen, GlobaleVariablen, KartenDatenbank, Karten, Eingabe, SchleifenPruefungen, GlobaleRecords; use GlobaleDatentypen; package BewegungssystemCursor is - procedure BewegungCursorRichtung (Karte : in Boolean; Richtung : in Wide_Wide_Character; RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure GeheZuCursor (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BewegungCursorRichtung (Karte : in Boolean; Richtung : in Wide_Wide_Character; RasseExtern : in GlobaleDatentypen.Rassen) with + Pre => Richtung = 'w' or Richtung = 'a' or Richtung = 's' or Richtung = 'd' or Richtung = '1' or Richtung = '2' or Richtung = '3' or Richtung = '4' or Richtung = '6' or Richtung = '7' or Richtung = '8' or Richtung = '9'; + -- Post => BewegungCursorRichtung'Result is YÄnderung /= 0; + + procedure GeheZuCursor (RasseExtern : in GlobaleDatentypen.Rassen); private @@ -22,11 +23,12 @@ private Wert : Integer; Stellenanzahl : Integer; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; - procedure BewegungCursorBerechnen (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BewegungCursorBerechnenStadt (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BewegungCursorBerechnen (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in GlobaleDatentypen.Rassen) with + Pre => (YÄnderung /= 0 or XÄnderung /= 0); + + procedure BewegungCursorBerechnenStadt (YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins; RasseExtern : in GlobaleDatentypen.Rassen) with + Pre => (YÄnderung /= 0 or XÄnderung /= 0); end BewegungssystemCursor; diff --git a/src/BewegungSystem/BewegungssystemEinheiten.adb b/src/BewegungSystem/BewegungssystemEinheiten.adb index e6f05f53c..8d9466b9f 100644 --- a/src/BewegungSystem/BewegungssystemEinheiten.adb +++ b/src/BewegungSystem/BewegungssystemEinheiten.adb @@ -1,6 +1,6 @@ package body BewegungssystemEinheiten is - procedure BewegungEinheitenRichtung (RasseExtern, EinheitNummer : in Integer) is + procedure BewegungEinheitenRichtung (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer) is begin Karte.AnzeigeKarte (RasseExtern => RasseExtern); @@ -70,7 +70,7 @@ package body BewegungssystemEinheiten is - procedure BewegungEinheitenBerechnung (RasseExtern, EinheitNummer : in Integer; YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins) is + procedure BewegungEinheitenBerechnung (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer; YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins) is begin Gewonnen := True; @@ -135,7 +135,7 @@ package body BewegungssystemEinheiten is null; end if; - case GegnerEinheitWert.Rasse is + case GegnerEinheitWert.Platznummer is when SchleifenPruefungen.RückgabeWert | 0 => null; diff --git a/src/BewegungSystem/BewegungssystemEinheiten.ads b/src/BewegungSystem/BewegungssystemEinheiten.ads index 9ba7cfac6..64d106f77 100644 --- a/src/BewegungSystem/BewegungssystemEinheiten.ads +++ b/src/BewegungSystem/BewegungssystemEinheiten.ads @@ -1,13 +1,13 @@ with Ada.Wide_Wide_Text_IO, Ada.Wide_Wide_Characters.Handling; use Ada.Wide_Wide_Text_IO, Ada.Wide_Wide_Characters.Handling; -with SchleifenPruefungen, GlobaleDatentypen, GlobaleVariablen, KartenDatenbank, Karten, Karte, EinheitenDatenbank, Kampfsystem, Diplomatie, Auswahl, Sichtbarkeit; +with SchleifenPruefungen, GlobaleDatentypen, GlobaleVariablen, KartenDatenbank, Karten, Karte, EinheitenDatenbank, Kampfsystem, Diplomatie, Auswahl, Sichtbarkeit, GlobaleRecords; use GlobaleDatentypen; package BewegungssystemEinheiten is - procedure BewegungEinheitenRichtung (RasseExtern, EinheitNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BewegungEinheitenRichtung (RasseExtern : GlobaleDatentypen.Rassen; EinheitNummer : in Integer) with + Pre => EinheitNummer > 0; private @@ -24,11 +24,11 @@ private Stadtnummer : Integer; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; - GegnerEinheitWert : GlobaleDatentypen.RasseUndPlatznummerRecord; - GegnerStadtWert : GlobaleDatentypen.RasseUndPlatznummerRecord; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; + GegnerEinheitWert : GlobaleRecords.RasseUndPlatznummerRecord; + GegnerStadtWert : GlobaleRecords.RasseUndPlatznummerRecord; - procedure BewegungEinheitenBerechnung (RasseExtern, EinheitNummer : in Integer; YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BewegungEinheitenBerechnung (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer; YÄnderung, XÄnderung : in GlobaleDatentypen.LoopRangeMinusEinsZuEins) with + Pre => (YÄnderung /= 0 or XÄnderung /= 0) and EinheitNummer > 0; end BewegungssystemEinheiten; diff --git a/src/BewegungSystem/NaechstesObjekt.adb b/src/BewegungSystem/NaechstesObjekt.adb index 99f576242..476ed962e 100644 --- a/src/BewegungSystem/NaechstesObjekt.adb +++ b/src/BewegungSystem/NaechstesObjekt.adb @@ -1,6 +1,6 @@ package body NaechstesObjekt is - procedure NächsteEinheitMitBewegungspunkten (RasseExtern : in Integer) is -- Nochmal über die loops schauen, möglicherweise wird eine Einheit ausgelassen + procedure NächsteEinheitMitBewegungspunkten (RasseExtern : in GlobaleDatentypen.Rassen) is -- Nochmal über die loops schauen, möglicherweise wird eine Einheit ausgelassen begin case GlobaleVariablen.EinheitenGebaut (RasseExtern, 1).ID is @@ -52,7 +52,7 @@ package body NaechstesObjekt is - procedure NächsteEinheit (RasseExtern : in Integer) is + procedure NächsteEinheit (RasseExtern : in GlobaleDatentypen.Rassen) is begin if GlobaleVariablen.EinheitenGebaut (RasseExtern, 1).ID = 0 then @@ -74,7 +74,7 @@ package body NaechstesObjekt is - procedure NächsteEinheitOhneBewegungspunkte (RasseExtern : in Integer) is + procedure NächsteEinheitOhneBewegungspunkte (RasseExtern : in GlobaleDatentypen.Rassen) is begin case GlobaleVariablen.EinheitenGebaut (RasseExtern, 1).ID is @@ -125,7 +125,7 @@ package body NaechstesObjekt is - procedure NächsteStadt (RasseExtern : in Integer) is + procedure NächsteStadt (RasseExtern : in GlobaleDatentypen.Rassen) is begin if GlobaleVariablen.StadtGebaut (RasseExtern, 1).ID = 0 then diff --git a/src/BewegungSystem/NaechstesObjekt.ads b/src/BewegungSystem/NaechstesObjekt.ads index 0da52f193..6eee502d8 100644 --- a/src/BewegungSystem/NaechstesObjekt.ads +++ b/src/BewegungSystem/NaechstesObjekt.ads @@ -3,14 +3,10 @@ use GlobaleDatentypen; package NaechstesObjekt is - procedure NächsteEinheitMitBewegungspunkten (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure NächsteEinheit (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure NächsteEinheitOhneBewegungspunkte (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure NächsteStadt (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure NächsteEinheitMitBewegungspunkten (RasseExtern : in GlobaleDatentypen.Rassen); + procedure NächsteEinheit (RasseExtern : in GlobaleDatentypen.Rassen); + procedure NächsteEinheitOhneBewegungspunkte (RasseExtern : in GlobaleDatentypen.Rassen); + procedure NächsteStadt (RasseExtern : in GlobaleDatentypen.Rassen); private diff --git a/src/Cheat/Cheat.adb b/src/Cheat/Cheat.adb index 17bafd032..695989505 100644 --- a/src/Cheat/Cheat.adb +++ b/src/Cheat/Cheat.adb @@ -1,6 +1,6 @@ package body Cheat is - procedure Menü (RasseExtern : in Integer) is + procedure Menü (RasseExtern : in GlobaleDatentypen.Rassen) is begin AktuelleEinheit := 1; @@ -38,7 +38,7 @@ package body Cheat is end Menü; - procedure BeliebigeNächsteEinheit (RasseExtern : in Integer) is -- Funktioniert nicht 100%, nochmal drüber schauen wenn Zeit und Lust, da Cheatmenü nicht so wichtig + procedure BeliebigeNächsteEinheit (RasseExtern : in GlobaleDatentypen.Rassen) is -- Funktioniert nicht 100%, nochmal drüber schauen wenn Zeit und Lust, da Cheatmenü nicht so wichtig begin if GlobaleVariablen.EinheitenGebaut (AktuelleRasse, AktuelleEinheit).ID = 0 then @@ -127,7 +127,7 @@ package body Cheat is - procedure Sichtbarkeit (RasseExtern : in Integer) is + procedure Sichtbarkeit (RasseExtern : in GlobaleDatentypen.Rassen) is begin EbeneSchleife: @@ -159,7 +159,7 @@ package body Cheat is procedure EinheitFestlegen is begin - RasseZahl := Eingabe.GanzeZahl (Zahlengröße => 2); + RasseZahl := GlobaleDatentypen.Rassen (Eingabe.GanzeZahl (Zahlengröße => 2)); Stadt := Eingabe.GanzeZahl (Zahlengröße => 2); ID := Eingabe.GanzeZahl (Zahlengröße => 2); diff --git a/src/Cheat/Cheat.ads b/src/Cheat/Cheat.ads index 49abd1fb8..916d12bd2 100644 --- a/src/Cheat/Cheat.ads +++ b/src/Cheat/Cheat.ads @@ -6,25 +6,22 @@ use GlobaleDatentypen; package Cheat is - procedure Menü (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Menü (RasseExtern : in GlobaleDatentypen.Rassen); private Taste : Wide_Wide_Character; AktuelleEinheit : Integer; - AktuelleRasse : Integer; + AktuelleRasse : GlobaleDatentypen.Rassen; - RasseZahl : Integer; + RasseZahl : GlobaleDatentypen.Rassen; Stadt : Integer; ID : Integer; - procedure BeliebigeNächsteEinheit (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BeliebigeNächsteEinheit (RasseExtern : in GlobaleDatentypen.Rassen); procedure Informationen; - procedure Sichtbarkeit (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Sichtbarkeit (RasseExtern : in GlobaleDatentypen.Rassen); procedure GrundFestlegen; procedure EinheitFestlegen; procedure Geld; diff --git a/src/Datenbanken/EinheitenDatenbank.adb b/src/Datenbanken/EinheitenDatenbank.adb index 950f3552b..89db5cde4 100644 --- a/src/Datenbanken/EinheitenDatenbank.adb +++ b/src/Datenbanken/EinheitenDatenbank.adb @@ -9,7 +9,7 @@ package body EinheitenDatenbank is - procedure LebenspunkteBewegungspunkteAufMaximumSetzen (RasseExtern, EinheitNummer : in Integer) is + procedure LebenspunkteBewegungspunkteAufMaximumSetzen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer) is begin GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitNummer).AktuelleLebenspunkte := EinheitenListe (RasseExtern, GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitNummer).ID).MaximaleLebenspunkte; @@ -64,7 +64,7 @@ package body EinheitenDatenbank is - procedure EinheitErzeugen (RasseExtern, StadtNummer, ID : in Integer) is -- Kann Einheiten nur in Städten erzeugen und funktioniert nicht richtig + procedure EinheitErzeugen (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer, ID : in Integer) is -- Kann Einheiten nur in Städten erzeugen und funktioniert nicht richtig begin Position := (GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AchsenPosition.EAchse, GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AchsenPosition.YAchse, @@ -107,10 +107,10 @@ package body EinheitenDatenbank is - procedure EinheitEntfernen (RasseExtern, EinheitNummer : in Integer) is + procedure EinheitEntfernen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer) is begin - GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitNummer) := (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0); + GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitNummer) := (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0); EinheitGebautSortieren (RasseExtern => RasseExtern); if GlobaleVariablen.EinheitenGebaut (RasseExtern, 1).ID = 0 and GlobaleVariablen.StadtGebaut (RasseExtern, 1).ID = 0 then @@ -124,14 +124,14 @@ package body EinheitenDatenbank is - procedure EinheitGebautSortieren (RasseExtern : in Integer) is + procedure EinheitGebautSortieren (RasseExtern : in GlobaleDatentypen.Rassen) is begin TauschSchleife: for Tauschen in GlobaleVariablen.EinheitenGebautArray'Range (2) loop Sortieren (Tauschen) := GlobaleVariablen.EinheitenGebaut (RasseExtern, Tauschen); - GlobaleVariablen.EinheitenGebaut (RasseExtern, Tauschen) := (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0); + GlobaleVariablen.EinheitenGebaut (RasseExtern, Tauschen) := (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0); end loop TauschSchleife; @@ -142,7 +142,7 @@ package body EinheitenDatenbank is if Sortieren (Auswahl).ID /= 0 then GlobaleVariablen.EinheitenGebaut (RasseExtern, Einsortieren) := Sortieren (Auswahl); - Sortieren (Auswahl) := (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0); + Sortieren (Auswahl) := (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0); exit SortierenInnenSchleife; elsif Auswahl = Sortieren'Last then diff --git a/src/Datenbanken/EinheitenDatenbank.ads b/src/Datenbanken/EinheitenDatenbank.ads index eda60ef65..313a15518 100644 --- a/src/Datenbanken/EinheitenDatenbank.ads +++ b/src/Datenbanken/EinheitenDatenbank.ads @@ -1,8 +1,8 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; -with GlobaleVariablen, Auswahl, Karten, SchleifenPruefungen, GlobaleDatentypen; -use GlobaleDatentypen; +with GlobaleVariablen, Auswahl, Karten, SchleifenPruefungen, GlobaleDatentypen, GlobaleRecords; +use GlobaleDatentypen, GlobaleRecords; package EinheitenDatenbank is @@ -30,7 +30,7 @@ package EinheitenDatenbank is end record; - type EinheitenListeArry is array (GlobaleDatentypen.RassenImSpielArray'Range, 1 .. GlobaleDatentypen.EinheitenID'Last) of Einheiten; + type EinheitenListeArry is array (GlobaleDatentypen.Rassen'Range, 1 .. GlobaleDatentypen.EinheitenID'Last) of Einheiten; EinheitenListe : constant EinheitenListeArry := (others => (('S', 1, 10, 10, 0, 1, 3, 1.00, 30, 3, 1, 1, 1), -- Siedler ('L', 2, 25, 20, 0, 1, 5, 3.00, 30, 3, 1, 3, 1), -- Steinbeilkämpfer @@ -47,14 +47,14 @@ package EinheitenDatenbank is others => ('@', 0, 0, 0, 0, 1, 0, 0.00, 1, 1, 0, 0, 1))); procedure Beschreibung (ID : in GlobaleDatentypen.EinheitenID); - procedure LebenspunkteBewegungspunkteAufMaximumSetzen (RasseExtern, EinheitNummer : in Integer) + procedure LebenspunkteBewegungspunkteAufMaximumSetzen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer) with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; procedure HeilungBewegungspunkteFürNeueRundeSetzen; - procedure EinheitErzeugen (RasseExtern, StadtNummer, ID : in Integer) + procedure EinheitErzeugen (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer, ID : in Integer) with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure EinheitEntfernen (RasseExtern, EinheitNummer : in Integer) + procedure EinheitEntfernen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Integer) with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure EinheitGebautSortieren (RasseExtern : in Integer) + procedure EinheitGebautSortieren (RasseExtern : in GlobaleDatentypen.Rassen) with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; procedure Beschäftigung (Arbeit : in Integer); diff --git a/src/Datenbanken/ForschungsDatenbank.adb b/src/Datenbanken/ForschungsDatenbank.adb index bffc5aec9..b46f6c9de 100644 --- a/src/Datenbanken/ForschungsDatenbank.adb +++ b/src/Datenbanken/ForschungsDatenbank.adb @@ -15,7 +15,7 @@ package body ForschungsDatenbank is - procedure Forschung (RasseExtern : in Integer) is -- Hier noch mehr Optionen einbauen, z. B. Informationen über bereits erforschte Technologien + procedure Forschung (RasseExtern : in GlobaleDatentypen.Rassen) is -- Hier noch mehr Optionen einbauen, z. B. Informationen über bereits erforschte Technologien begin ForschungSchleife: @@ -43,7 +43,7 @@ package body ForschungsDatenbank is - procedure ForschungZeit (RasseExtern : in Integer) is + procedure ForschungZeit (RasseExtern : in GlobaleDatentypen.Rassen) is begin if GlobaleVariablen.Wichtiges (RasseExtern).AktuellesForschungsprojekt = 0 then @@ -65,7 +65,7 @@ package body ForschungsDatenbank is - function AuswahlForschung (RasseExtern : in Integer) return Integer is + function AuswahlForschung (RasseExtern : in GlobaleDatentypen.Rassen) return Integer is begin Anzeige.TextForschung := (others => (To_Unbounded_Wide_Wide_String (Source => "|"), 0)); @@ -80,7 +80,7 @@ package body ForschungsDatenbank is if To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (16, F)) = "|" then exit ForschungSchleife; - elsif F > ForschungListe'Last then + elsif F > Integer (ForschungListe'Last) then exit ForschungSchleife; elsif GlobaleVariablen.Wichtiges (RasseExtern).Erforscht (F) /= 0 then diff --git a/src/Datenbanken/ForschungsDatenbank.ads b/src/Datenbanken/ForschungsDatenbank.ads index 4ce6be265..ed29d67a4 100644 --- a/src/Datenbanken/ForschungsDatenbank.ads +++ b/src/Datenbanken/ForschungsDatenbank.ads @@ -15,7 +15,7 @@ package ForschungsDatenbank is end record; - type ForschungListeArray is Array (GlobaleDatentypen.RassenImSpielArray'Range, GlobaleVariablen.Wichtiges (1).Erforscht'Range) of ForschungRecord; + type ForschungListeArray is Array (GlobaleDatentypen.Rassen'Range, GlobaleVariablen.Wichtiges (1).Erforscht'Range) of ForschungRecord; ForschungListe : ForschungListeArray := (others => (1 => (100, (others => 0)), 2 => (100, (others => 0)), 3 => (100, (others => 0)), @@ -26,12 +26,12 @@ package ForschungsDatenbank is others => (0, (others => 0)))); - procedure Beschreibung (ID : in Integer); - procedure Forschung (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Beschreibung (ID : in Integer) with + Pre => ID >= 0; + + procedure Forschung (RasseExtern : in GlobaleDatentypen.Rassen); procedure ForschungFortschritt; - procedure ForschungZeit (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure ForschungZeit (RasseExtern : in GlobaleDatentypen.Rassen); private @@ -43,7 +43,6 @@ private AktuelleAuswahl : Integer; Ende : Integer; - function AuswahlForschung (RasseExtern : in Integer) return Integer - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + function AuswahlForschung (RasseExtern : in GlobaleDatentypen.Rassen) return Integer; end ForschungsDatenbank; diff --git a/src/Datenbanken/GebaeudeDatenbank.adb b/src/Datenbanken/GebaeudeDatenbank.adb index e566d70db..b68d2baf7 100644 --- a/src/Datenbanken/GebaeudeDatenbank.adb +++ b/src/Datenbanken/GebaeudeDatenbank.adb @@ -11,7 +11,7 @@ package body GebaeudeDatenbank is - procedure GebäudeProduktionBeenden (RasseExtern, StadtNummer, ID : in Integer) is + procedure GebäudeProduktionBeenden (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer, ID : in Integer) is begin GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).GebäudeVorhanden (ID) := GebaeudeDatenbank.GebäudeListe (RasseExtern, ID).Anzeige; diff --git a/src/Datenbanken/GebaeudeDatenbank.ads b/src/Datenbanken/GebaeudeDatenbank.ads index f2d94a406..66a873ed2 100644 --- a/src/Datenbanken/GebaeudeDatenbank.ads +++ b/src/Datenbanken/GebaeudeDatenbank.ads @@ -24,17 +24,18 @@ package GebaeudeDatenbank is end record; - type GebäudeListeArray is array (GlobaleDatentypen.RassenImSpielArray'Range, GlobaleVariablen.StadtGebaut (1, 1).GebäudeVorhanden'Range) of Gebäude; + type GebäudeListeArray is array (GlobaleDatentypen.Rassen'Range, GlobaleVariablen.StadtGebaut (1, 1).GebäudeVorhanden'Range) of Gebäude; GebäudeListe : constant GebäudeListeArray := (others => (('B', 100, 100, 0, 0, 0, 0, 0, 0, 0, False), -- 1 ('K', 100, 100, 1, 0, 0, 0, 0, 0, 0, False), -- 2 ('F', 150, 50, 2, 0, 0, 0, 0, 0, 0, False), -- 3 others => (' ', 0, 0, 0, 0, 0, 0, 0, 0, 0, False))); - procedure Beschreibung (ID : in Integer); - procedure GebäudeProduktionBeenden (RasseExtern, StadtNummer, ID : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - --procedure InformationenGebäude + procedure Beschreibung (ID : in Integer) with + Pre => ID > 0; + + procedure GebäudeProduktionBeenden (RasseExtern : GlobaleDatentypen.Rassen; StadtNummer, ID : in Integer) with + Pre => StadtNummer > 0 and ID > 0; private diff --git a/src/Datenbanken/KartenDatenbank.ads b/src/Datenbanken/KartenDatenbank.ads index 92abc0c6f..5455db47c 100644 --- a/src/Datenbanken/KartenDatenbank.ads +++ b/src/Datenbanken/KartenDatenbank.ads @@ -2,6 +2,7 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; with GlobaleVariablen, GlobaleDatentypen; +use GlobaleDatentypen; package KartenDatenbank is @@ -69,6 +70,7 @@ package KartenDatenbank is (' ', 1, 0, 0, 0, 0, 0), -- 39 Erde (' ', 1, 0, 0, 0, 0, 0)); -- 40 Gestein - procedure Beschreibung (ID : in GlobaleDatentypen.KartenGrund); + procedure Beschreibung (ID : in GlobaleDatentypen.KartenGrund) with + Pre => ID > 0; end KartenDatenbank; diff --git a/src/Datenbanken/VerbesserungenDatenbank.ads b/src/Datenbanken/VerbesserungenDatenbank.ads index bcfe3d533..bae38d858 100644 --- a/src/Datenbanken/VerbesserungenDatenbank.ads +++ b/src/Datenbanken/VerbesserungenDatenbank.ads @@ -2,6 +2,7 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; with GlobaleVariablen, GlobaleDatentypen; +use GlobaleDatentypen; package VerbesserungenDatenbank is @@ -49,6 +50,7 @@ package VerbesserungenDatenbank is ('M', 13, 0, 2, 1, 0, 1), -- 21 Mine ('B', 13, 0, 0, 0, 0, 2)); -- 22 Festung - procedure Beschreibung (ID : in GlobaleDatentypen.KartenVerbesserung); + procedure Beschreibung (ID : in GlobaleDatentypen.KartenVerbesserung) with + Pre => ID > 0; end VerbesserungenDatenbank; diff --git a/src/DiplomatieSystem/Diplomatie.adb b/src/DiplomatieSystem/Diplomatie.adb index ae5e5dc8c..a68342831 100644 --- a/src/DiplomatieSystem/Diplomatie.adb +++ b/src/DiplomatieSystem/Diplomatie.adb @@ -9,7 +9,7 @@ package body Diplomatie is - procedure KriegDurchDirektenAngriff (AngreifendeRasse, VerteidigendeRasse : in Integer) is + procedure KriegDurchDirektenAngriff (AngreifendeRasse, VerteidigendeRasse : in GlobaleDatentypen.Rassen) is begin GlobaleVariablen.Diplomatie (AngreifendeRasse, VerteidigendeRasse) := -1; @@ -19,7 +19,7 @@ package body Diplomatie is - function DiplomatischenStatusPrüfen (AngreifendeRasse, VerteidigendeRasse : in Integer) return Integer is + function DiplomatischenStatusPrüfen (AngreifendeRasse, VerteidigendeRasse : in GlobaleDatentypen.Rassen) return Integer is begin return GlobaleVariablen.Diplomatie (AngreifendeRasse, VerteidigendeRasse); diff --git a/src/DiplomatieSystem/Diplomatie.ads b/src/DiplomatieSystem/Diplomatie.ads index 759eac316..6b0c89b78 100644 --- a/src/DiplomatieSystem/Diplomatie.ads +++ b/src/DiplomatieSystem/Diplomatie.ads @@ -2,15 +2,16 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; with GlobaleVariablen, GlobaleDatentypen; +use GlobaleDatentypen; package Diplomatie is procedure DiplomatieAuswählen; - procedure KriegDurchDirektenAngriff (AngreifendeRasse, VerteidigendeRasse : in Integer) - with Pre => AngreifendeRasse in GlobaleDatentypen.RassenImSpielArray'Range and VerteidigendeRasse in GlobaleDatentypen.RassenImSpielArray'Range; + procedure KriegDurchDirektenAngriff (AngreifendeRasse, VerteidigendeRasse : in GlobaleDatentypen.Rassen) with + Pre => AngreifendeRasse /= VerteidigendeRasse; - function DiplomatischenStatusPrüfen (AngreifendeRasse, VerteidigendeRasse : in Integer) return Integer - with Pre => AngreifendeRasse in GlobaleDatentypen.RassenImSpielArray'Range and VerteidigendeRasse in GlobaleDatentypen.RassenImSpielArray'Range; + function DiplomatischenStatusPrüfen (AngreifendeRasse, VerteidigendeRasse : in GlobaleDatentypen.Rassen) return Integer with + Pre => AngreifendeRasse /= VerteidigendeRasse; private diff --git a/src/DiplomatieSystem/Kampfsystem.adb b/src/DiplomatieSystem/Kampfsystem.adb index a11cfa6da..f5c96c8cb 100644 --- a/src/DiplomatieSystem/Kampfsystem.adb +++ b/src/DiplomatieSystem/Kampfsystem.adb @@ -1,6 +1,6 @@ package body Kampfsystem is - function KampfsystemNahkampf (GegnerStadtnummer, RasseAngriff, EinheitenPositionAngriff, RasseVerteidigung, EinheitenPositionVerteidigung : in Integer) return Boolean is + function KampfsystemNahkampf (RasseAngriff, RasseVerteidigung : in GlobaleDatentypen.Rassen; GegnerStadtnummer, EinheitenPositionAngriff, EinheitenPositionVerteidigung : in Integer) return Boolean is begin VerteidigungBonusDurchStadt := 1.00; @@ -37,7 +37,7 @@ package body Kampfsystem is - function Kampf (RasseAngriff, EinheitenPositionAngriff, RasseVerteidigung, EinheitenPositionVerteidigung : in Integer; VerteidigungBonus : in Float) return Boolean is + function Kampf (RasseAngriff, RasseVerteidigung : in GlobaleDatentypen.Rassen; EinheitenPositionAngriff, EinheitenPositionVerteidigung : in Integer; VerteidigungBonus : in Float) return Boolean is begin AngriffAngriffWert := Float (EinheitenDatenbank.EinheitenListe (RasseAngriff, GlobaleVariablen.EinheitenGebaut (RasseAngriff, EinheitenPositionAngriff).ID).Angriff); @@ -114,7 +114,7 @@ package body Kampfsystem is - procedure KampfBerechnung (RasseVerteidigung, EinheitNummerVerteidigung : in Integer; AngriffWert, VerteidigungWert : in Float) is + procedure KampfBerechnung (RasseVerteidigung : in GlobaleDatentypen.Rassen; EinheitNummerVerteidigung : in Integer; AngriffWert, VerteidigungWert : in Float) is begin Wert := Random (Gewählt); diff --git a/src/DiplomatieSystem/Kampfsystem.ads b/src/DiplomatieSystem/Kampfsystem.ads index 475817952..86a937f74 100644 --- a/src/DiplomatieSystem/Kampfsystem.ads +++ b/src/DiplomatieSystem/Kampfsystem.ads @@ -6,8 +6,8 @@ use GlobaleDatentypen; package Kampfsystem is - function KampfsystemNahkampf (GegnerStadtnummer, RasseAngriff, EinheitenPositionAngriff, RasseVerteidigung, EinheitenPositionVerteidigung : in Integer) return Boolean - with Pre => RasseAngriff in GlobaleDatentypen.RassenImSpielArray'Range and RasseVerteidigung in GlobaleDatentypen.RassenImSpielArray'Range; + function KampfsystemNahkampf (RasseAngriff, RasseVerteidigung : in GlobaleDatentypen.Rassen; GegnerStadtnummer, EinheitenPositionAngriff, EinheitenPositionVerteidigung : in Integer) return Boolean with + Pre => RasseAngriff /= RasseVerteidigung; private @@ -23,11 +23,10 @@ private AngriffVerteidigungWert : Float; Wert : Float; - procedure KampfBerechnung (RasseVerteidigung, EinheitNummerVerteidigung : in Integer; AngriffWert, VerteidigungWert : in Float) - with Pre => RasseVerteidigung in GlobaleDatentypen.RassenImSpielArray'Range; + procedure KampfBerechnung (RasseVerteidigung : in GlobaleDatentypen.Rassen; EinheitNummerVerteidigung : in Integer; AngriffWert, VerteidigungWert : in Float); - function Kampf (RasseAngriff, EinheitenPositionAngriff, RasseVerteidigung, EinheitenPositionVerteidigung : in Integer; VerteidigungBonus : in Float) return Boolean - with Pre => RasseAngriff in GlobaleDatentypen.RassenImSpielArray'Range and RasseVerteidigung in GlobaleDatentypen.RassenImSpielArray'Range; + function Kampf (RasseAngriff, RasseVerteidigung : in GlobaleDatentypen.Rassen; EinheitenPositionAngriff, EinheitenPositionVerteidigung : in Integer; VerteidigungBonus : in Float) return Boolean with + Pre => RasseAngriff /= RasseVerteidigung; function Prüfen return Boolean; end Kampfsystem; diff --git a/src/EingabeAusgabeSystem/Anzeige.adb b/src/EingabeAusgabeSystem/Anzeige.adb index 28a2e053e..4c3e21019 100644 --- a/src/EingabeAusgabeSystem/Anzeige.adb +++ b/src/EingabeAusgabeSystem/Anzeige.adb @@ -78,7 +78,7 @@ package body Anzeige is - procedure AnzeigeStadt (AktuelleAuswahl : in Integer) is + procedure AnzeigeStadt (AktuelleAuswahl : in Positive) is begin LängsterText := 1; @@ -156,7 +156,7 @@ package body Anzeige is - procedure AnzeigeForschung (AktuelleAuswahl : in Integer) is + procedure AnzeigeForschung (AktuelleAuswahl : in Positive) is begin LängsterText := 1; @@ -234,7 +234,7 @@ package body Anzeige is - procedure AnzeigeLangerText (WelcherText, WelcheZeile : in Integer) is + procedure AnzeigeLangerText (WelcherText, WelcheZeile : in Positive) is begin Text := (others => ('|')); @@ -286,7 +286,7 @@ package body Anzeige is - procedure RassenBeschreibung (WelcheRasse : in Integer) is + procedure RassenBeschreibung (WelcheRasse : in GlobaleDatentypen.Rassen) is begin null; -- Hier kann der Standardansatz nicht verwendet werden, den einfügen den ich habe, ist in Anzeige @@ -295,7 +295,7 @@ package body Anzeige is - procedure Zeug (WelchesZeug : in Integer) is + procedure Zeug (WelchesZeug : in Positive) is begin Put_Line (Item => To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (19, WelchesZeug))); @@ -304,7 +304,7 @@ package body Anzeige is - procedure Fehlermeldungen (WelcheFehlermeldung : in Integer) is + procedure Fehlermeldungen (WelcheFehlermeldung : in Positive) is begin Put_Line (Item => To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (20, WelcheFehlermeldung))); @@ -314,7 +314,7 @@ package body Anzeige is - procedure WelcheAuswahl (WasWurdeGewählt : in Integer) is + procedure WelcheAuswahl (WasWurdeGewählt : in Positive) is begin Put_Line (Item => To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (21, WasWurdeGewählt))); @@ -323,7 +323,7 @@ package body Anzeige is - procedure TexteEinlesenAusgabe (WelcheDatei, WelcherText : in Integer) is + procedure TexteEinlesenAusgabe (WelcheDatei, WelcherText : in Positive) is begin Put_Line (Item => To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (WelcheDatei, WelcherText))); diff --git a/src/EingabeAusgabeSystem/Anzeige.ads b/src/EingabeAusgabeSystem/Anzeige.ads index fda1b6e7e..aefd57912 100644 --- a/src/EingabeAusgabeSystem/Anzeige.ads +++ b/src/EingabeAusgabeSystem/Anzeige.ads @@ -1,23 +1,10 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; -with GlobaleVariablen; +with GlobaleVariablen, GlobaleDatentypen; package Anzeige is - - procedure Anzeige (WelcherText, AktuelleAuswahl : in Integer); - procedure AnzeigeStadt (AktuelleAuswahl : in Integer); - procedure AnzeigeLangerText (WelcherText, WelcheZeile : in Integer); - procedure AnzeigeForschung (AktuelleAuswahl : in Integer); - procedure RassenBeschreibung (WelcheRasse : in Integer); - procedure Zeug (WelchesZeug : in Integer); - procedure Fehlermeldungen (WelcheFehlermeldung : in Integer); - procedure WelcheAuswahl (WasWurdeGewählt : in Integer); - procedure TexteEinlesenAusgabe (WelcheDatei, WelcherText : in Integer); - - procedure AnzeigeNeu (AuswahlOderAnzeige : in Boolean; FrageDatei, FrageZeile, TextDatei, ErsteZeile, LetzteZeile : in Integer) - with Pre => FrageDatei >= 0 and FrageZeile >= 0 and TextDatei >= 0 and ErsteZeile >= 0 and LetzteZeile >= 0 and ErsteZeile <= LetzteZeile; - + type TextBauenRecord is record Text : Unbounded_Wide_Wide_String; @@ -38,6 +25,19 @@ package Anzeige is type TextForschungArray is array (GlobaleVariablen.Wichtiges (1).Erforscht'Range) of TextForschungRecord; TextForschung : TextForschungArray; + procedure Anzeige (WelcherText, AktuelleAuswahl : in Integer); + procedure AnzeigeStadt (AktuelleAuswahl : in Positive); + procedure AnzeigeLangerText (WelcherText, WelcheZeile : in Positive); + procedure AnzeigeForschung (AktuelleAuswahl : in Positive); + procedure RassenBeschreibung (WelcheRasse : in GlobaleDatentypen.Rassen); + procedure Zeug (WelchesZeug : in Positive); + procedure Fehlermeldungen (WelcheFehlermeldung : in Positive); + procedure WelcheAuswahl (WasWurdeGewählt : in Positive); + procedure TexteEinlesenAusgabe (WelcheDatei, WelcherText : in Positive); + + procedure AnzeigeNeu (AuswahlOderAnzeige : in Boolean; FrageDatei, FrageZeile, TextDatei, ErsteZeile, LetzteZeile : in Integer) + with Pre => FrageDatei >= 0 and FrageZeile >= 0 and TextDatei >= 0 and ErsteZeile >= 0 and LetzteZeile >= 0 and ErsteZeile <= LetzteZeile; + private Taste : Wide_Wide_Character; @@ -48,6 +48,6 @@ private Teilung : Float; - Text : Wide_Wide_String (1 .. 1000); + Text : Wide_Wide_String (1 .. 1_000); end Anzeige; diff --git a/src/EingabeAusgabeSystem/Eingabe.adb b/src/EingabeAusgabeSystem/Eingabe.adb index c227e1fd5..4958780aa 100644 --- a/src/EingabeAusgabeSystem/Eingabe.adb +++ b/src/EingabeAusgabeSystem/Eingabe.adb @@ -1,6 +1,6 @@ package body Eingabe is - function GanzeZahl (Zahlengröße : Integer) return Integer is + function GanzeZahl (Zahlengröße : Positive) return Integer is begin EingabeSchleife: diff --git a/src/EingabeAusgabeSystem/Eingabe.ads b/src/EingabeAusgabeSystem/Eingabe.ads index 5100bdeca..904cb702b 100644 --- a/src/EingabeAusgabeSystem/Eingabe.ads +++ b/src/EingabeAusgabeSystem/Eingabe.ads @@ -5,9 +5,11 @@ with GlobaleVariablen, Anzeige; package Eingabe is - function GanzeZahl (Zahlengröße : Integer) return Integer; + function GanzeZahl (Zahlengröße : Positive) return Integer; + function GanzeZahlNeu (WelcheDatei, WelcherText, ZahlenMinimum, ZahlenMaximum : Integer) return Integer with Pre => WelcheDatei >= 0 and WelcherText >= 0 and ZahlenMinimum >= 0 and ZahlenMaximum <= 999_999_999 and ZahlenMinimum <= ZahlenMaximum; + function StadtName return Unbounded_Wide_Wide_String; function SpielstandName return Unbounded_Wide_Wide_String; diff --git a/src/EingabeAusgabeSystem/SpielEinstellungen.adb b/src/EingabeAusgabeSystem/SpielEinstellungen.adb index 632701c92..1b9dc47ec 100644 --- a/src/EingabeAusgabeSystem/SpielEinstellungen.adb +++ b/src/EingabeAusgabeSystem/SpielEinstellungen.adb @@ -239,14 +239,14 @@ package body SpielEinstellungen is null; end case; - case GlobaleVariablen.RassenImSpiel (Wert)is + case GlobaleVariablen.RassenImSpiel (GlobaleDatentypen.Rassen (Wert))is when 0 => Wahl := Auswahl.Auswahl (WelcheAuswahl => 21, WelcherText => 25); case Wahl is when 1 .. 2 => - GlobaleVariablen.RassenImSpiel (Wert) := Wahl; + GlobaleVariablen.RassenImSpiel (GlobaleDatentypen.RassenMitNullwert (Wert)) := GlobaleDatentypen.Rassen (Wahl); Spieler := Spieler + 1; when others => @@ -363,7 +363,7 @@ package body SpielEinstellungen is - function UmgebungPrüfen (YPosition, XPosition : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in Integer) return Boolean is + function UmgebungPrüfen (YPosition, XPosition : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in GlobaleDatentypen.Rassen) return Boolean is begin PrüfungGrund := SchleifenPruefungen.KartenGrund (Ebene => 0, @@ -379,7 +379,7 @@ package body SpielEinstellungen is XAchse => XPosition); end case; - case PositionWert.Rasse is + case PositionWert.Platznummer is when SchleifenPruefungen.RückgabeWert => Koordinaten (1) := (0, YPosition, XPosition); YAchseSchleife: @@ -411,7 +411,7 @@ package body SpielEinstellungen is XAchse => KartenWert.XAchse); end case; - case PlatzBelegt.Rasse is + case PlatzBelegt.Platznummer is when SchleifenPruefungen.RückgabeWert => Koordinaten (2) := (0, KartenWert.YAchse, KartenWert.XAchse); StartpunktFestlegen (RasseExtern => RasseExtern); @@ -439,7 +439,7 @@ package body SpielEinstellungen is - procedure StartpunktFestlegen (RasseExtern : in Integer) is + procedure StartpunktFestlegen (RasseExtern : in GlobaleDatentypen.Rassen) is begin GlobaleVariablen.EinheitenGebaut (RasseExtern, 1).ID := 1; diff --git a/src/EingabeAusgabeSystem/SpielEinstellungen.ads b/src/EingabeAusgabeSystem/SpielEinstellungen.ads index 6e50127e7..9c4c7db1b 100644 --- a/src/EingabeAusgabeSystem/SpielEinstellungen.ads +++ b/src/EingabeAusgabeSystem/SpielEinstellungen.ads @@ -1,7 +1,7 @@ with Ada.Wide_Wide_Text_IO, Ada.Characters.Wide_Wide_Latin_9, Ada.Numerics.Discrete_Random, Ada.Calendar, Ladezeiten; use Ada.Wide_Wide_Text_IO, Ada.Characters.Wide_Wide_Latin_9, Ada.Calendar; -with GlobaleDatentypen, SchleifenPruefungen, GlobaleVariablen, ImSpiel, KartenGenerator, Eingabe, Karten, Auswahl, EinheitenDatenbank, Anzeige, ZufallsGeneratoren; +with GlobaleDatentypen, SchleifenPruefungen, GlobaleVariablen, ImSpiel, KartenGenerator, Eingabe, Karten, Auswahl, EinheitenDatenbank, Anzeige, ZufallsGeneratoren, GlobaleRecords; use GlobaleDatentypen; package SpielEinstellungen is @@ -26,21 +26,21 @@ private Spieler : Integer; Zufallswahl : Integer; - PositionWert : GlobaleDatentypen.RasseUndPlatznummerRecord; - GezogeneWerte : GlobaleDatentypen.AchsenAusKartenfeldPositiv; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; - PlatzBelegt : GlobaleDatentypen.RasseUndPlatznummerRecord; + PositionWert : GlobaleRecords.RasseUndPlatznummerRecord; + GezogeneWerte : GlobaleRecords.AchsenAusKartenfeldPositiv; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; + PlatzBelegt : GlobaleRecords.RasseUndPlatznummerRecord; - type KoordinatenArray is array (1 .. 2) of GlobaleDatentypen.AchsenAusKartenfeld; + type KoordinatenArray is array (1 .. 2) of GlobaleRecords.AchsenAusKartenfeld; Koordinaten : KoordinatenArray; subtype ZufälligeKartengröße is Integer range 1 .. 9; subtype ZufälligeKartenart is Integer range 1 .. 3; subtype ZufälligeKartentemperatur is Integer range 1 .. 3; - subtype ZufälligeSpieleranzahl is Integer range GlobaleVariablen.RassenImSpiel'Range; - subtype ZufälligeRasse is Integer range GlobaleVariablen.RassenImSpiel'Range; + subtype ZufälligeSpieleranzahl is Integer range Integer (GlobaleDatentypen.Rassen'First) .. Integer (GlobaleDatentypen.Rassen'Last); + subtype ZufälligeRasse is Integer range Integer (GlobaleDatentypen.Rassen'First) .. Integer (GlobaleDatentypen.Rassen'Last); - subtype Rassen is Integer range GlobaleVariablen.RassenImSpiel'Range; + subtype Rassen is Integer range Integer (GlobaleDatentypen.Rassen'First) .. Integer (GlobaleDatentypen.Rassen'Last); package ZufälligeKartengrößeWählen is new Ada.Numerics.Discrete_Random (ZufälligeKartengröße); package ZufälligeKartenartWählen is new Ada.Numerics.Discrete_Random (ZufälligeKartenart); @@ -59,16 +59,26 @@ private RassenGewählt : RassenWählen.Generator; procedure StartwerteErmitteln; - procedure StartpunktFestlegen (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - - function KartengrößeWählen return Integer; - function KartenartWählen return Integer; - function KartentemperaturWählen return Integer; - function SpieleranzahlWählen return Integer; - function MenschlicheSpieleranzahl return Integer; - function RasseWählen return Integer; - function UmgebungPrüfen (YPosition, XPosition : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in Integer) return Boolean - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure StartpunktFestlegen (RasseExtern : in GlobaleDatentypen.Rassen); + + function KartengrößeWählen return Integer with + Post => KartengrößeWählen'Result >= -2; + + function KartenartWählen return Integer with + Post => KartenartWählen'Result >= -2; + + function KartentemperaturWählen return Integer with + Post => KartentemperaturWählen'Result >= -2; + + function SpieleranzahlWählen return Integer with + Post => SpieleranzahlWählen'Result >= -2; + + function MenschlicheSpieleranzahl return Integer with + Post => MenschlicheSpieleranzahl'Result >= -2; + + function RasseWählen return Integer with + Post => RasseWählen'Result >= -2; + + function UmgebungPrüfen (YPosition, XPosition : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in GlobaleDatentypen.Rassen) return Boolean; end SpielEinstellungen; diff --git a/src/GlobaleDatentypen.ads b/src/GlobaleDatentypen.ads index c4c3a7a44..976fad398 100644 --- a/src/GlobaleDatentypen.ads +++ b/src/GlobaleDatentypen.ads @@ -28,48 +28,8 @@ package GlobaleDatentypen is subtype GrundwerteNRGWVA is GesamtproduktionStadt range -100 .. 100; -- NRGWVA = Grundwert für Nahrung, Ressourcen, Geld, Wissenschaft, Verteidigung, Angriff type KostenLager is range 0 .. 10_000; - type RassenImSpielArray is array (1 .. 18) of Integer; - - type AchsenAusStadtfeld is record - - YAchse : Stadtfeld; - XAchse : Stadtfeld; - - end record; - - type AchsenAusKartenfeldPositiv is record - - EAchse : Ebene; - YAchse : KartenfeldPositiv; - XAchse : KartenfeldPositiv; - - end record; - - type AchsenAusKartenfeld is record - - EAchse : Ebene; - YAchse : Kartenfeld; - XAchse : Kartenfeld; - - end record; - - type RasseUndPlatznummerRecord is record - - Rasse : Integer; - Platznummer : Integer; - - end record; - - - - -- Für die KI gedacht: - type EinheitStatusRecord is record - - EinheitNummer : Integer; - BewegungspunkteBeschäftigung : Integer; -- 0 = Keine Bewegungspunkte/Beschäftigung, 1 = Bewegungspunkte ohne Beschäftigung, 2 = Beschäftigung ohne Bewegungspunkte, 3 = Beschäftigung/Bewegungspunkte - EinheitTyp : Integer; - - end record; - -- Für die KI gedacht: + type RassenMitNullwert is range 0 .. 18; -- Unbelegt, Rasse 1 bis 18 + subtype Rassen is RassenMitNullwert range 1 .. 18; + type RassenImSpielArray is array (Rassen'Range) of RassenMitNullwert; end GlobaleDatentypen; diff --git a/src/GlobaleRecords.ads b/src/GlobaleRecords.ads new file mode 100644 index 000000000..0abfb20fb --- /dev/null +++ b/src/GlobaleRecords.ads @@ -0,0 +1,35 @@ +with GlobaleDatentypen; + +package GlobaleRecords is + + type AchsenAusStadtfeld is record + + YAchse : GlobaleDatentypen.Stadtfeld; + XAchse : GlobaleDatentypen.Stadtfeld; + + end record; + + type AchsenAusKartenfeldPositiv is record + + EAchse : GlobaleDatentypen.Ebene; + YAchse : GlobaleDatentypen.KartenfeldPositiv; + XAchse : GlobaleDatentypen.KartenfeldPositiv; + + end record; + + type AchsenAusKartenfeld is record + + EAchse : GlobaleDatentypen.Ebene; + YAchse : GlobaleDatentypen.Kartenfeld; + XAchse : GlobaleDatentypen.Kartenfeld; + + end record; + + type RasseUndPlatznummerRecord is record + + Rasse : GlobaleDatentypen.RassenMitNullwert; + Platznummer : Integer; + + end record; + +end GlobaleRecords; diff --git a/src/GlobaleVariablen.ads b/src/GlobaleVariablen.ads index 6ec29a2e0..558a47b38 100644 --- a/src/GlobaleVariablen.ads +++ b/src/GlobaleVariablen.ads @@ -1,12 +1,12 @@ with Ada.Strings.Wide_Wide_Unbounded, Ada.Strings.Unbounded; use Ada.Strings.Wide_Wide_Unbounded; -with Karten, GlobaleDatentypen; +with Karten, GlobaleDatentypen, GlobaleRecords; package GlobaleVariablen is -- Schreiben - WelcheSprache : Integer; + WelcheSprache : Positive; -- AktuelleEbene : GlobaleDatentypen.Ebene := 0; type TexteEinlesenArray is array (0 .. 25, 1 .. 50) of Unbounded_Wide_Wide_String; @@ -21,21 +21,21 @@ package GlobaleVariablen is type CursorRecord is record CursorGrafik : Wide_Wide_Character; - AchsenPosition : GlobaleDatentypen.AchsenAusKartenfeldPositiv; - AchsenPositionAlt : GlobaleDatentypen.AchsenAusKartenfeldPositiv; - AchsenPositionStadt : GlobaleDatentypen.AchsenAusStadtfeld; + AchsenPosition : GlobaleRecords.AchsenAusKartenfeldPositiv; + AchsenPositionAlt : GlobaleRecords.AchsenAusKartenfeldPositiv; + AchsenPositionStadt : GlobaleRecords.AchsenAusStadtfeld; end record; - type CursorImSpielArray is array (1 .. 18) of CursorRecord; + type CursorImSpielArray is array (GlobaleDatentypen.Rassen) of CursorRecord; CursorImSpiel : CursorImSpielArray := (others => ('©', (0, 1, 1), (0, 1, 1), (1, 1))); -- Cursor - SpielerAnzahl : Integer := 1; -- 1 .. 18 - RundenAnzahl : Integer := 1; - RundenBisAutosave : Integer := 10; + SpielerAnzahl : Positive := 1; -- 1 .. 18 + RundenAnzahl : Positive := 1; + RundenBisAutosave : Positive := 10; RassenImSpiel : GlobaleDatentypen.RassenImSpielarray; -- 0 = Nicht belegt, 1 = Menschlicher Spieler, 2 = KI -- Ändern das alle RassenBereiche hierauf gehen? @@ -47,8 +47,8 @@ package GlobaleVariablen is AktuelleBeschäftigung2 : Integer; ID : GlobaleDatentypen.EinheitenID; - AchsenPosition : GlobaleDatentypen.AchsenAusKartenfeldPositiv; - --AchsenPositionAlt : GlobaleDatentypen.YAchseXAchseAusKartenfeldPositiv; + AchsenPosition : GlobaleRecords.AchsenAusKartenfeldPositiv; + --AchsenPositionAlt : GlobaleRecords.YAchseXAchseAusKartenfeldPositiv; AktuelleLebenspunkte : Integer; AktuelleBewegungspunkte : Float; @@ -60,7 +60,7 @@ package GlobaleVariablen is end record; - type EinheitenGebautArray is array (RassenImSpiel'Range, 1 .. 1_000) of EinheitenGebautRecord; + type EinheitenGebautArray is array (GlobaleDatentypen.Rassen'Range, 1 .. 1_000) of EinheitenGebautRecord; EinheitenGebaut : EinheitenGebautArray := (others => (others => (0, 0, 0, (0, 1, 1), 0, 0.00, 0, 0, 0, 0))); -- Einheiten @@ -72,7 +72,7 @@ package GlobaleVariablen is type StadtGebautRecord is record ID : Integer; - AchsenPosition : GlobaleDatentypen.AchsenAusKartenfeldPositiv; + AchsenPosition : GlobaleRecords.AchsenAusKartenfeldPositiv; AmWasser : Boolean; @@ -96,7 +96,7 @@ package GlobaleVariablen is end record; - type StadtGebautArray is array (RassenImSpiel'Range, 1 .. 100) of StadtGebautRecord; + type StadtGebautArray is array (GlobaleDatentypen.Rassen'Range, 1 .. 100) of StadtGebautRecord; StadtGebaut : StadtGebautArray := (others => (others => ((0, (0, 1, 1), False, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "000000000000000000000000", To_Unbounded_Wide_Wide_String (Source => ""), (others => (others => False)), 0, 1)))); @@ -119,10 +119,10 @@ package GlobaleVariablen is end record; - type WichtigesArray is array (RassenImSpiel'Range) of WichtigesRecord; + type WichtigesArray is array (GlobaleDatentypen.Rassen'Range) of WichtigesRecord; Wichtiges : WichtigesArray := (others => (0, 0, 0, 0, 10_000, 0, (others => 0))); - type DiplomatieArray is array (RassenImSpiel'Range, RassenImSpiel'Range) of Integer; -- 0 = Kein Kontakt, -1 = Krieg, 1 = Neutral, 2 = Offene Grenzen, 3 = Nichtangriffspakt, 4 = Defensivbündnis, 5 = Offensivbündnis + type DiplomatieArray is array (GlobaleDatentypen.Rassen'Range, GlobaleDatentypen.Rassen'Range) of Integer; -- 0 = Kein Kontakt, -1 = Krieg, 1 = Neutral, 2 = Offene Grenzen, 3 = Nichtangriffspakt, 4 = Defensivbündnis, 5 = Offensivbündnis Diplomatie : DiplomatieArray := (others => (others => 1)); -- Wichtiges Zeug diff --git a/src/KI/KI.adb b/src/KI/KI.adb index 52d5384b1..6b995f519 100644 --- a/src/KI/KI.adb +++ b/src/KI/KI.adb @@ -1,6 +1,6 @@ package body KI is - procedure KI (RasseExtern : in Integer) is + procedure KI (RasseExtern : in GlobaleDatentypen.Rassen) is begin if GlobaleVariablen.EinheitenGebaut (RasseExtern, 1).ID = 0 and GlobaleVariablen.StadtGebaut (RasseExtern, 1).ID = 0 then @@ -14,7 +14,7 @@ package body KI is - procedure KIAktivität (RasseExtern : in Integer) is -- Von hier aus dann die einzelnen Tätigkeiten aufrufen + procedure KIAktivität (RasseExtern : in GlobaleDatentypen.Rassen) is -- Von hier aus dann die einzelnen Tätigkeiten aufrufen begin GesamteAktivitätSchleife: @@ -70,7 +70,7 @@ package body KI is - procedure KIStadtBauen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure KIStadtBauen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin if Karten.Karten (0, GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitStatus.EinheitNummer).AchsenPosition.YAchse, @@ -97,7 +97,7 @@ package body KI is - procedure KIVerbesserungAnlegen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure KIVerbesserungAnlegen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; @@ -106,7 +106,7 @@ package body KI is - procedure KIGebäudeBauen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure KIGebäudeBauen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; @@ -115,7 +115,7 @@ package body KI is - procedure KIBefestigen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure KIBefestigen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin KIBewegung.KIBewegung (RasseExtern => RasseExtern, @@ -125,7 +125,7 @@ package body KI is - procedure KIAngreifen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure KIAngreifen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; diff --git a/src/KI/KI.ads b/src/KI/KI.ads index 8ea15f8ed..a3e470487 100644 --- a/src/KI/KI.ads +++ b/src/KI/KI.ads @@ -1,29 +1,23 @@ -with GlobaleVariablen, EinheitenDatenbank, ForschungsDatenbank, KartenDatenbank, VerbesserungenDatenbank, GebaeudeDatenbank, InDerStadt, SchleifenPruefungen, KIPruefungen, InDerStadt, GlobaleDatentypen, Karten, KIBewegung; +with GlobaleVariablen, EinheitenDatenbank, ForschungsDatenbank, KartenDatenbank, VerbesserungenDatenbank, GebaeudeDatenbank, InDerStadt, SchleifenPruefungen, KIPruefungen, InDerStadt, GlobaleDatentypen, Karten, KIBewegung, + KIRecords; use GlobaleDatentypen; package KI is - procedure KI (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure KI (RasseExtern : in GlobaleDatentypen.Rassen); private EinheitExistiertNoch : Boolean; StadtErfolgreichGebaut : Boolean; - EinheitStatus : GlobaleDatentypen.EinheitStatusRecord; + EinheitStatus : KIRecords.EinheitStatusRecord; - procedure KIAktivität (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure KIStadtBauen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure KIVerbesserungAnlegen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure KIGebäudeBauen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure KIBefestigen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure KIAngreifen (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure KIAktivität (RasseExtern : in GlobaleDatentypen.Rassen); + procedure KIStadtBauen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure KIVerbesserungAnlegen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure KIGebäudeBauen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure KIBefestigen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure KIAngreifen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); end KI; diff --git a/src/KI/KIBewegung.adb b/src/KI/KIBewegung.adb index 20dbdf71d..fd539ec4c 100644 --- a/src/KI/KIBewegung.adb +++ b/src/KI/KIBewegung.adb @@ -1,6 +1,6 @@ package body KIBewegung is - procedure KIBewegung (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure KIBewegung (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin case EinheitStatus.EinheitTyp is @@ -16,7 +16,7 @@ package body KIBewegung is - procedure BewegungSiedler (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure BewegungSiedler (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin Bewegungsziel := (0, GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitStatus.EinheitNummer).AchsenPosition.YAchse, GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitStatus.EinheitNummer).AchsenPosition.XAchse); @@ -79,7 +79,7 @@ package body KIBewegung is - procedure BewegungBauarbeiter (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure BewegungBauarbeiter (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; @@ -88,7 +88,7 @@ package body KIBewegung is - procedure BewegungBodenEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure BewegungBodenEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; @@ -97,7 +97,7 @@ package body KIBewegung is - procedure BewegungLuftEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure BewegungLuftEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; @@ -106,7 +106,7 @@ package body KIBewegung is - procedure BewegungWasserEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure BewegungWasserEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; @@ -115,7 +115,7 @@ package body KIBewegung is - procedure BewegungUnterwasserEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) is + procedure BewegungUnterwasserEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord) is begin null; diff --git a/src/KI/KIBewegung.ads b/src/KI/KIBewegung.ads index 7c9bb2eea..ef33e70ca 100644 --- a/src/KI/KIBewegung.ads +++ b/src/KI/KIBewegung.ads @@ -1,27 +1,20 @@ -with BewegungssystemEinheiten, GlobaleVariablen, GlobaleDatentypen, Karten, SchleifenPruefungen; +with BewegungssystemEinheiten, GlobaleVariablen, GlobaleDatentypen, Karten, SchleifenPruefungen, KIRecords, GlobaleRecords; use GlobaleDatentypen; package KIBewegung is - procedure KIBewegung (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure KIBewegung (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); private - Kartenwert : GlobaleDatentypen.AchsenAusKartenfeld; - Bewegungsziel : GlobaleDatentypen.AchsenAusKartenfeldPositiv; + Kartenwert : GlobaleRecords.AchsenAusKartenfeld; + Bewegungsziel : GlobaleRecords.AchsenAusKartenfeldPositiv; - procedure BewegungSiedler (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BewegungBauarbeiter (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BewegungBodenEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BewegungLuftEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BewegungWasserEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BewegungUnterwasserEinheit (RasseExtern : in Integer; EinheitStatus : GlobaleDatentypen.EinheitStatusRecord) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BewegungSiedler (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure BewegungBauarbeiter (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure BewegungBodenEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure BewegungLuftEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure BewegungWasserEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); + procedure BewegungUnterwasserEinheit (RasseExtern : in GlobaleDatentypen.Rassen; EinheitStatus : KIRecords.EinheitStatusRecord); end KIBewegung; diff --git a/src/KI/KIRecords.ads b/src/KI/KIRecords.ads new file mode 100644 index 000000000..a65f1d567 --- /dev/null +++ b/src/KI/KIRecords.ads @@ -0,0 +1,13 @@ +with GlobaleDatentypen; + +package KIRecords is + + type EinheitStatusRecord is record + + EinheitNummer : Integer; + BewegungspunkteBeschäftigung : Integer; -- 0 = Keine Bewegungspunkte/Beschäftigung, 1 = Bewegungspunkte ohne Beschäftigung, 2 = Beschäftigung ohne Bewegungspunkte, 3 = Beschäftigung/Bewegungspunkte + EinheitTyp : Integer; + + end record; + +end KIRecords; diff --git a/src/Karten/Karte.adb b/src/Karten/Karte.adb index f24b8540e..2aca83fe6 100644 --- a/src/Karten/Karte.adb +++ b/src/Karten/Karte.adb @@ -1,6 +1,6 @@ package body Karte is - procedure AnzeigeKarte (RasseExtern : in Positive) is + procedure AnzeigeKarte (RasseExtern : in GlobaleDatentypen.Rassen) is begin case Karten.Kartengröße is @@ -110,7 +110,7 @@ package body Karte is - procedure Information (RasseExtern : in Positive) is + procedure Information (RasseExtern : in GlobaleDatentypen.Rassen) is begin Verteidigungsbonus := 0; @@ -139,7 +139,7 @@ package body Karte is RasseUndPlatznummer := SchleifenPruefungen.KoordinatenEinheitOhneRasseSuchen (YAchse => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.YAchse, XAchse => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.XAchse); - case RasseUndPlatznummer.Rasse is + case RasseUndPlatznummer.Platznummer is when SchleifenPruefungen.RückgabeWert => null; @@ -198,7 +198,7 @@ package body Karte is RasseUndPlatznummer := SchleifenPruefungen.KoordinatenStadtOhneRasseSuchen (YAchse => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.YAchse, XAchse => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.XAchse); - case RasseUndPlatznummer.Rasse is + case RasseUndPlatznummer.Platznummer is when SchleifenPruefungen.RückgabeWert => null; diff --git a/src/Karten/Karte.ads b/src/Karten/Karte.ads index a407a68ba..0695a2155 100644 --- a/src/Karten/Karte.ads +++ b/src/Karten/Karte.ads @@ -1,13 +1,12 @@ with Ada.Wide_Wide_Text_IO, Ada.Float_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Characters.Wide_Wide_Latin_9; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Characters.Wide_Wide_Latin_9; -with GlobaleDatentypen, KarteStadt, KartenDatenbank, Karten, GlobaleVariablen, EinheitenDatenbank, VerbesserungenDatenbank, ForschungsDatenbank, Sichtbarkeit, SchleifenPruefungen; -use GlobaleDatentypen; +with GlobaleDatentypen, KarteStadt, KartenDatenbank, Karten, GlobaleVariablen, EinheitenDatenbank, VerbesserungenDatenbank, ForschungsDatenbank, Sichtbarkeit, SchleifenPruefungen, GlobaleRecords; +use GlobaleDatentypen, GlobaleRecords; package Karte is - procedure AnzeigeKarte (RasseExtern : in Positive) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure AnzeigeKarte (RasseExtern : in GlobaleDatentypen.Rassen); private @@ -22,11 +21,11 @@ private SichtweiteFestlegen : Integer; BewegungsfeldFestlegen : Integer; - Kartenwert : GlobaleDatentypen.AchsenAusKartenfeld; + Kartenwert : GlobaleRecords.AchsenAusKartenfeld; - RasseUndPlatznummer : GlobaleDatentypen.RasseUndPlatznummerRecord; + RasseUndPlatznummer : GlobaleRecords.RasseUndPlatznummerRecord; - type SichtweiteArray is array (1 .. 3) of GlobaleDatentypen.AchsenAusKartenfeldPositiv; + type SichtweiteArray is array (1 .. 3) of GlobaleRecords.AchsenAusKartenfeldPositiv; Sichtweite : constant SichtweiteArray := (1 => (0, 6, 10), 2 => (0, 6, 22), @@ -36,7 +35,6 @@ private 2 => (0, 5, 21), 3 => (0, 5, 34)); - procedure Information (RasseExtern : in Positive) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Information (RasseExtern : in GlobaleDatentypen.Rassen); end Karte; diff --git a/src/Karten/KarteStadt.adb b/src/Karten/KarteStadt.adb index 9fb129f26..cdd7c852c 100644 --- a/src/Karten/KarteStadt.adb +++ b/src/Karten/KarteStadt.adb @@ -1,6 +1,6 @@ package body KarteStadt is - procedure AnzeigeStadt (StadtNummer, RasseExtern : in Integer) is + procedure AnzeigeStadt (StadtNummer : in Positive; RasseExtern : in GlobaleDatentypen.Rassen) is begin Put (Item => CSI & "2J" & CSI & "3J" & CSI & "H"); @@ -12,15 +12,16 @@ package body KarteStadt is CursorXAchsePlus := -10; YAchseSchleife: - for Y in Karten.Stadtkarte'Range (1) loop + for YAchse in Karten.Stadtkarte'Range (1) loop XAchseSchleife: - for X in Karten.Stadtkarte'Range (2) loop + for XAchse in Karten.Stadtkarte'Range (2) loop - if Y < Karten.Stadtkarte'First (1) + 7 and X > Karten.Stadtkarte'Last (2) - 7 then + if YAchse < Karten.Stadtkarte'First (1) + 7 and XAchse > Karten.Stadtkarte'Last (2) - 7 then if YAchsenabstraktion > Stadtumgebungsgröße then for A in 0 .. 6 loop - if Y = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and X + GlobaleDatentypen.Kartenfeld (A) = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then + if YAchse = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse + and XAchse + GlobaleDatentypen.Kartenfeld (A) = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then Put (Item => CSI & "5m" & GlobaleVariablen.CursorImSpiel (RasseExtern).CursorGrafik & CSI & "0m"); else @@ -32,10 +33,11 @@ package body KarteStadt is New_Line; exit XAchseSchleife; - elsif Stadtumgebungsgröße = 1 and Y < 3 then + elsif Stadtumgebungsgröße = 1 and YAchse < 3 then for A in 0 .. 6 loop - if Y = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and X + GlobaleDatentypen.Kartenfeld (A) = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then + if YAchse = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse + and XAchse + GlobaleDatentypen.Kartenfeld (A) = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then Put (Item => CSI & "5m" & GlobaleVariablen.CursorImSpiel (RasseExtern).CursorGrafik & CSI & "0m"); else @@ -47,10 +49,11 @@ package body KarteStadt is New_Line; exit XAchseSchleife; - elsif Stadtumgebungsgröße = 2 and Y < 2 then + elsif Stadtumgebungsgröße = 2 and YAchse < 2 then for A in 0 .. 6 loop - if Y = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and X + GlobaleDatentypen.Kartenfeld (A) = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then + if YAchse = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse + and XAchse + GlobaleDatentypen.Kartenfeld (A) = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then Put (Item => CSI & "5m" & GlobaleVariablen.CursorImSpiel (RasseExtern).CursorGrafik & CSI & "0m"); else @@ -67,9 +70,9 @@ package body KarteStadt is for A in GlobaleDatentypen.LoopRangeMinusDreiZuDrei'Range loop Cursor := CursorKonstant + A; - if Y = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and X + Cursor = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then + if YAchse = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and XAchse + Cursor = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then Put (Item => CSI & "5m" & GlobaleVariablen.CursorImSpiel (RasseExtern).CursorGrafik & CSI & "0m"); - CursorYAchsePlus := Y - 4; + CursorYAchsePlus := YAchse - 4; if A < -Stadtumgebungsgröße or A > Stadtumgebungsgröße then null; @@ -111,18 +114,18 @@ package body KarteStadt is exit XAchseSchleife; end if; - elsif Y = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and X = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then + elsif YAchse = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.YAchse and XAchse = GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPositionStadt.XAchse then Put (Item => CSI & "5m" & GlobaleVariablen.CursorImSpiel (RasseExtern).CursorGrafik & CSI & "0m"); - elsif Y < Karten.Stadtkarte'First (1) + 7 and X = Karten.Stadtkarte'Last (2) - 7 then + elsif YAchse < Karten.Stadtkarte'First (1) + 7 and XAchse = Karten.Stadtkarte'Last (2) - 7 then Put (Item => " "); - elsif Y = Karten.Stadtkarte'First (1) + 7 and X >= Karten.Stadtkarte'Last (2) - 7 then + elsif YAchse = Karten.Stadtkarte'First (1) + 7 and XAchse >= Karten.Stadtkarte'Last (2) - 7 then Put (Item => " "); - elsif Y = 1 and X < 13 then - if GlobaleVariablen.StadtGebaut (RasseExtern, Stadtnummer).GebäudeVorhanden (Integer (X)) /= '0' then - Put (Item => GebaeudeDatenbank.GebäudeListe (RasseExtern, Integer (X)).Anzeige); + elsif YAchse = 1 and XAchse < 13 then + if GlobaleVariablen.StadtGebaut (RasseExtern, Stadtnummer).GebäudeVorhanden (Integer (XAchse)) /= '0' then + Put (Item => GebaeudeDatenbank.GebäudeListe (RasseExtern, Integer (XAchse)).Anzeige); else Sichtbarkeit.Farben (Einheit => 0, @@ -134,9 +137,9 @@ package body KarteStadt is RasseIntern => 0); end if; - elsif Y = 2 and X < 13 then - if GlobaleVariablen.StadtGebaut (RasseExtern, Stadtnummer).GebäudeVorhanden (Integer (X) + 12) /= '0' then - Put (Item => GebaeudeDatenbank.GebäudeListe (RasseExtern, Integer (X) + 12).Anzeige); + elsif YAchse = 2 and XAchse < 13 then + if GlobaleVariablen.StadtGebaut (RasseExtern, Stadtnummer).GebäudeVorhanden (Integer (XAchse) + 12) /= '0' then + Put (Item => GebaeudeDatenbank.GebäudeListe (RasseExtern, Integer (XAchse) + 12).Anzeige); else Sichtbarkeit.Farben (Einheit => 0, @@ -158,7 +161,7 @@ package body KarteStadt is RasseIntern => 0); end if; - case X is + case XAchse is when Karten.Stadtkarte'Last (2) => New_Line; @@ -208,7 +211,7 @@ package body KarteStadt is - procedure InformationenStadt (YAufschlag, XAufschlag : in GlobaleDatentypen.Kartenfeld; RasseExtern : Integer) is + procedure InformationenStadt (YAufschlag, XAufschlag : in GlobaleDatentypen.Kartenfeld; RasseExtern : GlobaleDatentypen.Rassen) is begin Nahrungsgewinnung := 0; @@ -330,13 +333,13 @@ package body KarteStadt is - procedure Beschreibung (RasseExtern : in Integer) is + procedure Beschreibung (RasseExtern : in GlobaleDatentypen.Rassen) is begin RasseUndPlatznummer := SchleifenPruefungen.KoordinatenStadtOhneRasseSuchen (YAchse => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.YAchse, XAchse => GlobaleVariablen.CursorImSpiel (RasseExtern).AchsenPosition.XAchse); - case RasseUndPlatznummer.Rasse is + case RasseUndPlatznummer.Platznummer is when SchleifenPruefungen.RückgabeWert => null; -- Sollte nie eintreten, da entweder aus der Stadt aufgerufen oder nur wenn die Kartenprüfung bereits eine Stadt gefunden hat diff --git a/src/Karten/KarteStadt.ads b/src/Karten/KarteStadt.ads index 96b72098d..8e3de84de 100644 --- a/src/Karten/KarteStadt.ads +++ b/src/Karten/KarteStadt.ads @@ -1,15 +1,13 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Characters.Wide_Wide_Latin_9; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Characters.Wide_Wide_Latin_9; -with SchleifenPruefungen, GlobaleDatentypen, GebaeudeDatenbank, StadtWerteFestlegen, KartenDatenbank, Karten, GlobaleVariablen, EinheitenDatenbank, VerbesserungenDatenbank, ForschungsDatenbank, Sichtbarkeit; +with SchleifenPruefungen, GlobaleDatentypen, GebaeudeDatenbank, StadtWerteFestlegen, KartenDatenbank, Karten, GlobaleVariablen, EinheitenDatenbank, VerbesserungenDatenbank, ForschungsDatenbank, Sichtbarkeit, GlobaleRecords; use GlobaleDatentypen; package KarteStadt is - procedure AnzeigeStadt (StadtNummer, RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure Beschreibung (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure AnzeigeStadt (StadtNummer : in Positive; RasseExtern : in GlobaleDatentypen.Rassen); + procedure Beschreibung (RasseExtern : in GlobaleDatentypen.Rassen); private @@ -29,12 +27,11 @@ private Wert : Integer; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; - RasseUndPlatznummer : GlobaleDatentypen.RasseUndPlatznummerRecord; + RasseUndPlatznummer : GlobaleRecords.RasseUndPlatznummerRecord; procedure FarbenStadt; - procedure InformationenStadt (YAufschlag, XAufschlag : in GlobaleDatentypen.Kartenfeld; RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure InformationenStadt (YAufschlag, XAufschlag : in GlobaleDatentypen.Kartenfeld; RasseExtern : in GlobaleDatentypen.Rassen); end KarteStadt; diff --git a/src/Karten/KartenGenerator.adb b/src/Karten/KartenGenerator.adb index f51e64034..aedfdd65c 100644 --- a/src/Karten/KartenGenerator.adb +++ b/src/Karten/KartenGenerator.adb @@ -409,7 +409,7 @@ package body KartenGenerator is else Wert := Random (Gewählt); - if Wert > 0.33 and GeneratorGrund (KartenWert.YAchse, KartenWert.XAchse) = False then + if Wert > 0.50 and GeneratorGrund (KartenWert.YAchse, KartenWert.XAchse) = False then if Grund = 4 and GeneratorKarte (KartenWert.YAchse, KartenWert.XAchse) = 5 then null; @@ -429,81 +429,11 @@ package body KartenGenerator is case Grund is when 6 | 7 => -- Hügel - Gebirge - HügelGebirgeUmgebung := -1; - - when others => - HügelGebirgeUmgebung := 0; - YAchseHügelSchleife: - for YÄnderungHügel in GlobaleDatentypen.LoopRangeMinusEinsZuEins'Range loop - XAchseHügelSchleife: - for XÄnderungHügel in GlobaleDatentypen.LoopRangeMinusEinsZuEins'Range loop - - KartenWertHügel := SchleifenPruefungen.KartenUmgebung (YKoordinate => YAchse, - XKoordinate => XAchse, - YÄnderung => YÄnderungHügel, - XÄnderung => XÄnderungHügel, - ZusatzYAbstand => 0); - - case KartenWertHügel.YAchse is - when GlobaleDatentypen.Kartenfeld'First => - exit XAchseHügelSchleife; - - when others => - if YÄnderungHügel = 0 and XÄnderungHügel = 0 then - null; - - elsif Karten.Karten (0, KartenWertHügel.YAchse, KartenWertHügel.XAchse).Grund /= 6 and Karten.Karten (0, KartenWertHügel.YAchse, KartenWertHügel.XAchse).Grund /= 7 - and Karten.Karten (0, KartenWertHügel.YAchse, KartenWertHügel.XAchse).Hügel = False then - null; - - else - HügelGebirgeUmgebung := HügelGebirgeUmgebung + 1; - end if; - end case; - - end loop XAchseHügelSchleife; - end loop YAchseHügelSchleife; - end case; - - case HügelGebirgeUmgebung is - when -1 => null; - when 1 .. 3 => - Wert := Random (Gewählt); - if Wert >= 0.85 then - Karten.Karten (0, YAchse, XAchse).Hügel := True; - - else - null; - end if; - - when 4 .. 7 => - Wert := Random (Gewählt); - if Wert >= 0.66 then - Karten.Karten (0, YAchse, XAchse).Hügel := True; - - else - null; - end if; - - when 8 => - Wert := Random (Gewählt); - if Wert >= 0.33 then - Karten.Karten (0, YAchse, XAchse).Hügel := True; - - else - null; - end if; - - when others => - Wert := Random (Gewählt); - if Wert >= 0.95 then - Karten.Karten (0, YAchse, XAchse).Hügel := True; - - else - null; - end if; + when others => + GenerierungLandschaftHügel (YAchse => KartenWert.YAchse, + XAchse => KartenWert.XAchse); end case; end loop XAchseSchleife; @@ -543,6 +473,84 @@ package body KartenGenerator is end case; end GenerierungLandschaftFelder; + + + + procedure GenerierungLandschaftHügel (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) is + begin + + HügelGebirgeUmgebung := 0; + YAchseHügelSchleife: + for YÄnderungHügel in GlobaleDatentypen.LoopRangeMinusEinsZuEins'Range loop + XAchseHügelSchleife: + for XÄnderungHügel in GlobaleDatentypen.LoopRangeMinusEinsZuEins'Range loop + + KartenWertHügel := SchleifenPruefungen.KartenUmgebung (YKoordinate => YAchse, + XKoordinate => XAchse, + YÄnderung => YÄnderungHügel, + XÄnderung => XÄnderungHügel, + ZusatzYAbstand => 0); + + case KartenWertHügel.YAchse is + when GlobaleDatentypen.Kartenfeld'First => + exit XAchseHügelSchleife; + + when others => + if YÄnderungHügel = 0 and XÄnderungHügel = 0 then + null; + + elsif Karten.Karten (0, KartenWertHügel.YAchse, KartenWertHügel.XAchse).Grund = 6 or Karten.Karten (0, KartenWertHügel.YAchse, KartenWertHügel.XAchse).Grund = 7 + or Karten.Karten (0, KartenWertHügel.YAchse, KartenWertHügel.XAchse).Hügel = True then + HügelGebirgeUmgebung := HügelGebirgeUmgebung + 1; + + else + null; + end if; + end case; + + end loop XAchseHügelSchleife; + end loop YAchseHügelSchleife; + + case HügelGebirgeUmgebung is + + when 1 .. 3 => + Wert := Random (Gewählt); + if Wert >= 0.85 then + Karten.Karten (0, YAchse, XAchse).Hügel := True; + + else + null; + end if; + + when 4 .. 7 => + Wert := Random (Gewählt); + if Wert >= 0.66 then + Karten.Karten (0, YAchse, XAchse).Hügel := True; + + else + null; + end if; + + when 8 => + Wert := Random (Gewählt); + if Wert >= 0.33 then + Karten.Karten (0, YAchse, XAchse).Hügel := True; + + else + null; + end if; + + when others => + Wert := Random (Gewählt); + if Wert >= 0.95 then + Karten.Karten (0, YAchse, XAchse).Hügel := True; + + else + null; + end if; + end case; + + end GenerierungLandschaftHügel; @@ -605,10 +613,10 @@ package body KartenGenerator is - procedure FlussBerechnung (YKoordinate, XKoordinate : in GlobaleDatentypen.Kartenfeld) is -- Außerdem scheint hier noch etwas nicht zu stimmen, nochmal drüber schauen oder gleich was besseres zusammenbasteln. + procedure FlussBerechnung (YKoordinate, XKoordinate : in GlobaleDatentypen.KartenfeldPositiv) is -- Außerdem scheint hier noch etwas nicht zu stimmen, nochmal drüber schauen oder gleich was besseres zusammenbasteln. begin - Flusswert := 10000; + Flusswert := 10_000; YAchseSchleife: for YÄnderung in GlobaleDatentypen.LoopRangeMinusEinsZuEins'Range loop XAchseSchleife: @@ -628,7 +636,7 @@ package body KartenGenerator is if XÄnderung = -1 and YÄnderung = 0 then case Karten.Karten (0, KartenWert.YAchse, KartenWert.XAchse).Fluss is when 0 => - Flusswert := Flusswert - 1000; + Flusswert := Flusswert - 1_000; when 16 => Karten.Karten (0, KartenWert.YAchse, KartenWert.XAchse).Fluss := 23; @@ -654,7 +662,7 @@ package body KartenGenerator is when others => null; end case; - Flusswert := Flusswert + 1000; + Flusswert := Flusswert + 1_000; elsif XÄnderung = 1 and YÄnderung = 0 then case Karten.Karten (0, KartenWert.YAchse, KartenWert.XAchse).Fluss is @@ -758,43 +766,43 @@ package body KartenGenerator is end loop YAchseSchleife; case Flusswert is - when 11000 => + when 11_000 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 26; - when 10100 => + when 10_100 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 25; - when 10010 => + when 10_010 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 27; - when 10001 => + when 10_001 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 28; - when 11010 => + when 11_010 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 20; - when 11001 => + when 11_001 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 18; - when 11110 => + when 11_110 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 21; - when 11101 => + when 11_101 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 22; - when 11111 => + when 11_111 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 14; - when 10110 => + when 10_110 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 19; - when 10101 => + when 10_101 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 17; - when 10111 => + when 10_111 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 23; - when 10011 => + when 10_011 => Karten.Karten (0, YKoordinate, XKoordinate).Fluss := 16; when others => diff --git a/src/Karten/KartenGenerator.ads b/src/Karten/KartenGenerator.ads index 943d0be22..10d8bc73f 100644 --- a/src/Karten/KartenGenerator.ads +++ b/src/Karten/KartenGenerator.ads @@ -1,7 +1,7 @@ with Ada.Numerics.Float_Random, Ada.Calendar; use Ada.Numerics.Float_Random, Ada.Calendar; -with Karten, KartenDatenbank, GlobaleDatentypen, SchleifenPruefungen, Ladezeiten, WerteFestlegen, ZufallsGeneratoren; +with Karten, KartenDatenbank, GlobaleDatentypen, SchleifenPruefungen, Ladezeiten, WerteFestlegen, ZufallsGeneratoren, GlobaleRecords; use GlobaleDatentypen; package KartenGenerator is -- Klein = 40x40, Mittel = 80x80, Groß = 160x160, Riesig = 240x240, Gigantisch = 320x320, Absurd = 1000x1000 @@ -26,8 +26,8 @@ private Wert : Float; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; - KartenWertHügel : GlobaleDatentypen.AchsenAusKartenfeld; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; + KartenWertHügel : GlobaleRecords.AchsenAusKartenfeld; type GrößeLandartArray is array (1 .. 3) of GlobaleDatentypen.KartenfeldPositiv; GrößeLandart : GrößeLandartArray; @@ -60,17 +60,31 @@ private type WahrscheinlichkeitFürLandschaftArray is array (6 .. 10) of Float; WahrscheinlichkeitFürLandschaft : constant WahrscheinlichkeitFürLandschaftArray := (0.85, 0.75, 0.50, 0.30, 0.20); - procedure GenerierungKartenart (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv); - procedure GenerierungLandmasse (YPositionLandmasse, XPositionLandmasse : in GlobaleDatentypen.KartenfeldPositiv); - procedure GenerierungLandmasseÜberhang (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv; Gezogen : in Float); - procedure Generierungpangäa (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv); + procedure GenerierungKartenart (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + procedure GenerierungLandmasse (YPositionLandmasse, XPositionLandmasse : in GlobaleDatentypen.KartenfeldPositiv) with + Pre => YPositionLandmasse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XPositionLandmasse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + procedure GenerierungLandmasseÜberhang (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv; Gezogen : in Float) with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + procedure Generierungpangäa (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + procedure GenerierungKüstenSeeGewässer; procedure GenerierungLandschaft; - procedure GenerierungLandschaftFelder (Grund : in GlobaleDatentypen.KartenGrund; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv); + procedure GenerierungLandschaftFelder (Grund : in GlobaleDatentypen.KartenGrund; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) with + Pre => Grund > 0 and YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + procedure GenerierungLandschaftHügel (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; procedure GenerierungFlüsse; - procedure FlussBerechnung (YKoordinate, XKoordinate : in GlobaleDatentypen.Kartenfeld); + procedure FlussBerechnung (YKoordinate, XKoordinate : in GlobaleDatentypen.KartenfeldPositiv) with + Pre => YKoordinate <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XKoordinate <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + procedure GenerierungRessourcen; procedure AndereEbenen; diff --git a/src/Karten/Sichtbarkeit.adb b/src/Karten/Sichtbarkeit.adb index 0a947e5ed..86db561af 100644 --- a/src/Karten/Sichtbarkeit.adb +++ b/src/Karten/Sichtbarkeit.adb @@ -1,6 +1,6 @@ package body Sichtbarkeit is - procedure Sichtbarkeitsprüfung (RasseExtern : in Integer) is + procedure Sichtbarkeitsprüfung (RasseExtern : in GlobaleDatentypen.Rassen) is begin EinheitenPlätzeSchleife: @@ -90,7 +90,7 @@ package body Sichtbarkeit is - procedure Sichtbarkeit (InDerStadt : Boolean; EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in Integer) is + procedure Sichtbarkeit (InDerStadt : Boolean; EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in GlobaleDatentypen.Rassen) is begin -- Über den Kartenfeldern kommen die Kartenressourcen @@ -234,7 +234,8 @@ package body Sichtbarkeit is - procedure Farben (Einheit : GlobaleDatentypen.EinheitenID; Verbesserung : GlobaleDatentypen.KartenVerbesserung; Ressource, Grund : in GlobaleDatentypen.KartenGrund; Cursor : in Boolean; RasseExtern, RasseIntern : in Integer) is + procedure Farben (Einheit : GlobaleDatentypen.EinheitenID; Verbesserung : GlobaleDatentypen.KartenVerbesserung; Ressource, Grund : in GlobaleDatentypen.KartenGrund; Cursor : in Boolean; + RasseExtern, RasseIntern : in GlobaleDatentypen.RassenMitNullwert) is begin case Cursor is diff --git a/src/Karten/Sichtbarkeit.ads b/src/Karten/Sichtbarkeit.ads index 47e929bc4..0b45f15b1 100644 --- a/src/Karten/Sichtbarkeit.ads +++ b/src/Karten/Sichtbarkeit.ads @@ -1,17 +1,18 @@ with Ada.Wide_Wide_Text_IO, Ada.Characters.Wide_Wide_Latin_9; use Ada.Wide_Wide_Text_IO, Ada.Characters.Wide_Wide_Latin_9; -with GlobaleVariablen, Karten, KartenDatenbank, EinheitenDatenbank, VerbesserungenDatenbank, SchleifenPruefungen, GlobaleDatentypen; +with GlobaleVariablen, Karten, KartenDatenbank, EinheitenDatenbank, VerbesserungenDatenbank, SchleifenPruefungen, GlobaleDatentypen, GlobaleRecords; use GlobaleDatentypen; package Sichtbarkeit is - procedure Sichtbarkeitsprüfung (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure Sichtbarkeit (InDerStadt : Boolean; EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure Farben (Einheit : GlobaleDatentypen.EinheitenID; Verbesserung : GlobaleDatentypen.KartenVerbesserung; Ressource, Grund : in GlobaleDatentypen.KartenGrund; Cursor : in Boolean; RasseExtern, RasseIntern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Sichtbarkeitsprüfung (RasseExtern : in GlobaleDatentypen.Rassen); + procedure Sichtbarkeit (InDerStadt : Boolean; EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv; RasseExtern : in GlobaleDatentypen.Rassen) with + Pre => EAchse /= -3 and YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + procedure Farben (Einheit : GlobaleDatentypen.EinheitenID; Verbesserung : GlobaleDatentypen.KartenVerbesserung; Ressource, Grund : in GlobaleDatentypen.KartenGrund; + Cursor : in Boolean; RasseExtern, RasseIntern : in GlobaleDatentypen.RassenMitNullwert) with + Pre => Grund >= 0 and Ressource >= 0; private @@ -20,6 +21,6 @@ private Sichtweite : GlobaleDatentypen.Sichtweite := 2; Wert : Integer; - Kartenwert : GlobaleDatentypen.AchsenAusKartenfeld; + Kartenwert : GlobaleRecords.AchsenAusKartenfeld; end Sichtbarkeit; diff --git a/src/Karten/Verbesserungen.adb b/src/Karten/Verbesserungen.adb index 8cbcde971..d590a5160 100644 --- a/src/Karten/Verbesserungen.adb +++ b/src/Karten/Verbesserungen.adb @@ -1,6 +1,6 @@ package body Verbesserungen is - procedure Verbesserung (Befehl, RasseExtern, EinheitNummer : in Integer) is + procedure Verbesserung (RasseExtern : in GlobaleDatentypen.Rassen; Befehl, EinheitNummer : in Integer) is begin case GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitNummer).AktuelleBeschäftigung is @@ -26,7 +26,7 @@ package body Verbesserungen is - procedure VerbesserungeFestgelegt (Befehl, RasseExtern, EinheitNummer : in Integer) is -- l/1 = Straße, t/2 = Mine, f/3 = Farm, u/4 = Festung, z/5 = Wald aufforsten, p/6 = /Roden-Trockenlegen, + procedure VerbesserungeFestgelegt (RasseExtern : in GlobaleDatentypen.Rassen; Befehl, EinheitNummer : in Integer) is -- l/1 = Straße, t/2 = Mine, f/3 = Farm, u/4 = Festung, z/5 = Wald aufforsten, p/6 = /Roden-Trockenlegen, -- h/7 = Heilen, v/8 = Verschanzen Space/9 = Runde aussetzen, DEL/10 = Einheit auflösen, j/11 = Plündern begin @@ -340,7 +340,7 @@ package body Verbesserungen is - procedure VerbesserungAngelegt (RasseExtern, EinheitNummer : in Integer) is + procedure VerbesserungAngelegt (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Positive) is begin case GlobaleVariablen.EinheitenGebaut (RasseExtern, EinheitNummer).AktuelleBeschäftigung is -- Landstraße/Tiefengrabung/Farm/Festung/Wald aufforsten/Roden-Trockenlegen @@ -397,10 +397,10 @@ package body Verbesserungen is - procedure StraßeBerechnung (AchsenKoordinaten : in GlobaleDatentypen.AchsenAusKartenfeldPositiv) is + procedure StraßeBerechnung (AchsenKoordinaten : in GlobaleRecords.AchsenAusKartenfeldPositiv) is begin - Straßenwert := 10000; + Straßenwert := 10_000; YAchseSchleife: for YÄnderung in GlobaleDatentypen.LoopRangeMinusEinsZuEins'Range loop @@ -421,7 +421,7 @@ package body Verbesserungen is if XÄnderung = -1 and YÄnderung = 0 then case Karten.Karten (AchsenKoordinaten.EAchse, KartenWert.YAchse, KartenWert.XAchse).VerbesserungStraße is when 0 => - Straßenwert := Straßenwert - 1000; + Straßenwert := Straßenwert - 1_000; when 7 => Karten.Karten (AchsenKoordinaten.EAchse, KartenWert.YAchse, KartenWert.XAchse).VerbesserungStraße := 14; @@ -447,7 +447,7 @@ package body Verbesserungen is when others => null; end case; - Straßenwert := Straßenwert + 1000; + Straßenwert := Straßenwert + 1_000; elsif XÄnderung = 1 and YÄnderung = 0 then case Karten.Karten (AchsenKoordinaten.EAchse, KartenWert.YAchse, KartenWert.XAchse).VerbesserungStraße is @@ -551,43 +551,43 @@ package body Verbesserungen is end loop YAchseSchleife; case Straßenwert is - when 11000 => + when 11_000 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 17; - when 10100 => + when 10_100 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 16; - when 10010 => + when 10_010 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 18; - when 10001 => + when 10_001 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 19; - when 11010 => + when 11_010 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 11; - when 11001 => + when 11_001 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 9; - when 11110 => + when 11_110 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 12; - when 11101 => + when 11_101 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 13; - when 11111 => + when 11_111 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 5; - when 10110 => + when 10_110 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 10; - when 10101 => + when 10_101 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 8; - when 10111 => + when 10_111 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 14; - when 10011 => + when 10_011 => Karten.Karten (AchsenKoordinaten.EAchse, AchsenKoordinaten.YAchse, AchsenKoordinaten.XAchse).VerbesserungStraße := 7; when others => diff --git a/src/Karten/Verbesserungen.ads b/src/Karten/Verbesserungen.ads index 6ef5135e7..7a77d4500 100644 --- a/src/Karten/Verbesserungen.ads +++ b/src/Karten/Verbesserungen.ads @@ -1,13 +1,14 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded; -with SchleifenPruefungen, GlobaleVariablen, GlobaleDatentypen, EinheitenDatenbank, Karten, Anzeige, WerteFestlegen; +with SchleifenPruefungen, GlobaleVariablen, GlobaleDatentypen, EinheitenDatenbank, Karten, Anzeige, WerteFestlegen, GlobaleRecords; use GlobaleDatentypen; package Verbesserungen is - procedure Verbesserung (Befehl, RasseExtern, EinheitNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Verbesserung (RasseExtern : in GlobaleDatentypen.Rassen; Befehl, EinheitNummer : in Integer) with + Pre => Befehl > 0 and EinheitNummer > 0; + procedure VerbesserungFertiggestellt; private @@ -16,12 +17,11 @@ private Straßenwert : Integer; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; - procedure VerbesserungeFestgelegt (Befehl, RasseExtern, EinheitNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure VerbesserungAngelegt (RasseExtern, EinheitNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure StraßeBerechnung (AchsenKoordinaten : in GlobaleDatentypen.AchsenAusKartenfeldPositiv); + procedure VerbesserungeFestgelegt (RasseExtern : in GlobaleDatentypen.Rassen; Befehl, EinheitNummer : in Integer); + procedure VerbesserungAngelegt (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Positive); + + procedure StraßeBerechnung (AchsenKoordinaten : in GlobaleRecords.AchsenAusKartenfeldPositiv); end Verbesserungen; diff --git a/src/Ladezeiten.adb b/src/Ladezeiten.adb index a869a72db..bbdf67594 100644 --- a/src/Ladezeiten.adb +++ b/src/Ladezeiten.adb @@ -1,6 +1,6 @@ package body Ladezeiten is - procedure LadezeitenSpielweltErstellen (WelcheZeit : Integer) is + procedure LadezeitenSpielweltErstellen (WelcheZeit : in Positive) is begin Gesamtzeit := 0.00; @@ -43,7 +43,7 @@ package body Ladezeiten is - procedure Speichern (WelcheZeit : Integer) is + procedure Speichern (WelcheZeit : in Positive) is begin Gesamtzeit := 0.00; @@ -63,7 +63,7 @@ package body Ladezeiten is - procedure Laden (WelcheZeit : Integer) is + procedure Laden (WelcheZeit : in Positive) is begin Gesamtzeit := 0.00; @@ -83,7 +83,7 @@ package body Ladezeiten is - procedure SpielStart (WelcheZeit : Integer) is + procedure SpielStart (WelcheZeit : in Positive) is begin Gesamtzeit := 0.00; @@ -101,4 +101,34 @@ package body Ladezeiten is end SpielStart; + + + procedure BerechnungenNachZugendeAllerSpieler (WelcheZeit : in Positive) is + begin + + Gesamtzeit := 0.00; + + Put (Item => "Zwischen den Zügen: "); + + case WelcheZeit is + when others => + Ada.Float_Text_IO.Put (Item => Float (SpielStartzeiten (2, WelcheZeit) - SpielStartzeiten (1, WelcheZeit)), + Fore => 1, + Aft => 6, + Exp => 0); + Get_Immediate (Item => Warten); + end case; + + + end BerechnungenNachZugendeAllerSpieler; + + + + procedure KIZeit (WelcheZeit : in Positive) is + begin + + null; + + end KIZeit; + end Ladezeiten; diff --git a/src/Ladezeiten.ads b/src/Ladezeiten.ads index c6942630c..f4016cc47 100644 --- a/src/Ladezeiten.ads +++ b/src/Ladezeiten.ads @@ -3,30 +3,36 @@ use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Calendar; with GlobaleVariablen; -package Ladezeiten is - - procedure LadezeitenSpielweltErstellen (WelcheZeit : Integer) - with Pre => WelcheZeit >= 1; - procedure Speichern (WelcheZeit : Integer) - with Pre => WelcheZeit >= 1; - procedure Laden (WelcheZeit : Integer) - with Pre => WelcheZeit >= 1; - procedure SpielStart (WelcheZeit : Integer) - with Pre => WelcheZeit >= 1; +package Ladezeiten is type LadezeitenSpielweltErstellenZeitArray is array (Positive range <>, Positive range <>) of Time; LadezeitenSpielweltErstellenZeit : LadezeitenSpielweltErstellenZeitArray (1 .. 2, 2 .. 12); Speicherzeiten : LadezeitenSpielweltErstellenZeitArray (1 .. 2, 1 .. 1); LadenLadezeiten : LadezeitenSpielweltErstellenZeitArray (1 .. 2, 1 .. 1); SpielStartzeiten : LadezeitenSpielweltErstellenZeitArray (1 .. 2, 1 .. 1); + BerechnungenNachZugendeAllerSpielerZeiten : LadezeitenSpielweltErstellenZeitArray (1 .. 2, 1 .. 1); + KIZeiten : LadezeitenSpielweltErstellenZeitArray (1 .. 2, 1 .. 18); + + procedure LadezeitenSpielweltErstellen (WelcheZeit : Positive) with + Pre => WelcheZeit in LadezeitenSpielweltErstellenZeit'Range (2); + procedure Speichern (WelcheZeit : in Positive) with + Pre => WelcheZeit in Speicherzeiten'Range (2); + procedure Laden (WelcheZeit : in Positive) with + Pre => WelcheZeit in LadenLadezeiten'Range (2); + procedure SpielStart (WelcheZeit : in Positive) with + Pre => WelcheZeit in SpielStartzeiten'Range (2); + procedure BerechnungenNachZugendeAllerSpieler (WelcheZeit : in Positive) with + Pre => WelcheZeit in BerechnungenNachZugendeAllerSpielerZeiten'Range (2); + procedure KIZeit (WelcheZeit : in Positive) with + Pre => WelcheZeit in KIZeiten'Range (2); private Warten : Wide_Wide_Character; - AufschlagSpielstart : constant Integer := 19; - AufschlagSpeichern : constant Integer := 29; - AufschlagLaden : constant Integer := 39; + AufschlagSpielstart : constant Positive := 19; -- Für die Textausgabe + AufschlagSpeichern : constant Positive := 29; + AufschlagLaden : constant Positive := 39; Gesamtzeit : Float; diff --git a/src/Sonstiges/Informationen.ads b/src/Sonstiges/Informationen.ads index 44e6bdd12..ac7a71e0c 100644 --- a/src/Sonstiges/Informationen.ads +++ b/src/Sonstiges/Informationen.ads @@ -8,6 +8,6 @@ package Informationen is private Taste : Wide_Wide_Character; - Versionsnummer : Wide_Wide_String (1 .. 9) := "0.00.6140"; + Versionsnummer : Wide_Wide_String (1 .. 9) := "0.00.6150"; end Informationen; diff --git a/src/StadtSystem/Bauen.adb b/src/StadtSystem/Bauen.adb index 92a58b271..c6fb2e29b 100644 --- a/src/StadtSystem/Bauen.adb +++ b/src/StadtSystem/Bauen.adb @@ -1,6 +1,6 @@ package body Bauen is - procedure Bauen (RasseExtern, StadtNummer : in Integer) is + procedure Bauen (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AktuellesBauprojekt := 0; @@ -33,7 +33,7 @@ package body Bauen is - procedure BauzeitEinzeln (RasseExtern, StadtNummer : in Integer) is + procedure BauzeitEinzeln (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin if GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AktuelleProduktionrate = 0 then @@ -89,7 +89,7 @@ package body Bauen is - function AuswahlStadt (RasseExtern, StadtNummer : in Integer) return Integer is + function AuswahlStadt (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) return Integer is begin Ende := 1; @@ -133,7 +133,7 @@ package body Bauen is if To_Wide_Wide_String (Source => GlobaleVariablen.TexteEinlesen (10, E)) = "|" then exit EinheitenSchleife; - elsif E > EinheitenDatenbank.EinheitenListe'Last then + elsif E > Integer (EinheitenDatenbank.EinheitenListe'Last) then exit EinheitenSchleife; elsif GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AmWasser = False and EinheitenDatenbank.EinheitenListe (RasseExtern, GlobaleDatentypen.EinheitenID (E)).Passierbarkeit = 2 then diff --git a/src/StadtSystem/Bauen.ads b/src/StadtSystem/Bauen.ads index f47ca3a67..821db5d2e 100644 --- a/src/StadtSystem/Bauen.ads +++ b/src/StadtSystem/Bauen.ads @@ -6,10 +6,8 @@ use GlobaleDatentypen; package Bauen is - procedure Bauen (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BauzeitEinzeln (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure Bauen (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); + procedure BauzeitEinzeln (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); procedure BauzeitAlle; private @@ -20,7 +18,6 @@ private Ende : Integer; AktuelleAuswahl : Integer := 1; - function AuswahlStadt (RasseExtern, StadtNummer : in Integer) return Integer - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + function AuswahlStadt (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) return Integer; end Bauen; diff --git a/src/StadtSystem/InDerStadt.adb b/src/StadtSystem/InDerStadt.adb index 2739e2a8a..e705f4013 100644 --- a/src/StadtSystem/InDerStadt.adb +++ b/src/StadtSystem/InDerStadt.adb @@ -1,6 +1,6 @@ package body InDerStadt is - procedure InDerStadt (RasseExtern, StadtNummer : in Integer) is + procedure InDerStadt (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin StadtSchleife: @@ -126,7 +126,7 @@ package body InDerStadt is - function StadtBauen (RasseExtern, EinheitNummer : in Integer) return Boolean is + function StadtBauen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Positive) return Boolean is begin BauMöglich := StadtBauenPrüfen (RasseExtern => RasseExtern, @@ -227,7 +227,7 @@ package body InDerStadt is - procedure StadtProduktionPrüfen (RasseExtern, StadtNummer : in Integer) is + procedure StadtProduktionPrüfen (RasseExtern : in GlobaleDatentypen.RassenMitNullwert; StadtNummer : in Integer) is begin case RasseExtern is @@ -259,7 +259,7 @@ package body InDerStadt is - procedure StadtProduktionPrüfenBerechnung (RasseExtern, StadtNummer : in Integer) is -- Legt erst eine Runde später die neuen Werte fest, prüfen warum. + procedure StadtProduktionPrüfenBerechnung (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is -- Legt erst eine Runde später die neuen Werte fest, prüfen warum. begin GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AktuelleNahrungsproduktion := 0; @@ -335,7 +335,7 @@ package body InDerStadt is - function StadtBauenPrüfen (RasseExtern, EinheitNummer : in Integer) return Boolean is + function StadtBauenPrüfen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Positive) return Boolean is begin YAchseSchleife: @@ -372,7 +372,7 @@ package body InDerStadt is - procedure BelegteStadtfelderFreigeben (RasseExtern, StadtNummer : in Integer) is + procedure BelegteStadtfelderFreigeben (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin YAchseSchleife: diff --git a/src/StadtSystem/InDerStadt.ads b/src/StadtSystem/InDerStadt.ads index ad0371083..d4d040150 100644 --- a/src/StadtSystem/InDerStadt.ads +++ b/src/StadtSystem/InDerStadt.ads @@ -2,22 +2,17 @@ with Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Characters.Wide use Ada.Wide_Wide_Text_IO, Ada.Strings.Wide_Wide_Unbounded, Ada.Characters.Wide_Wide_Latin_9, Ada.Wide_Wide_Characters.Handling; with Wachstum, ForschungsDatenbank, StadtWerteFestlegen, GlobaleDatentypen, VerbesserungenDatenbank, SchleifenPruefungen, KartenDatenbank, Auswahl, Bauen, GebaeudeDatenbank, KarteStadt, GlobaleVariablen, Einlesen, - Eingabe, EinheitenDatenbank, BewegungssystemCursor, Anzeige, Karten; + Eingabe, EinheitenDatenbank, BewegungssystemCursor, Anzeige, Karten, GlobaleRecords; use GlobaleDatentypen; package InDerStadt is - procedure InDerStadt (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure StadtProduktionPrüfen (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure BelegteStadtfelderFreigeben (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure InDerStadt (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); + procedure StadtProduktionPrüfen (RasseExtern : in GlobaleDatentypen.RassenMitNullwert; StadtNummer : in Integer); + procedure BelegteStadtfelderFreigeben (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); - function StadtBauen (RasseExtern, EinheitNummer : in Integer) return Boolean - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - function StadtBauenPrüfen (RasseExtern, EinheitNummer : in Integer) return Boolean - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + function StadtBauen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Positive) return Boolean; + function StadtBauenPrüfen (RasseExtern : in GlobaleDatentypen.Rassen; EinheitNummer : in Positive) return Boolean; private @@ -33,9 +28,8 @@ private RelativeCursorPositionY : GlobaleDatentypen.Kartenfeld; RelativeCursorPositionX : GlobaleDatentypen.Kartenfeld; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; - procedure StadtProduktionPrüfenBerechnung (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure StadtProduktionPrüfenBerechnung (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); end InDerStadt; diff --git a/src/StadtSystem/StadtWerteFestlegen.adb b/src/StadtSystem/StadtWerteFestlegen.adb index dfbaf8565..8999d9074 100644 --- a/src/StadtSystem/StadtWerteFestlegen.adb +++ b/src/StadtSystem/StadtWerteFestlegen.adb @@ -1,6 +1,6 @@ package body StadtWerteFestlegen is - procedure StadtUmgebungGrößeFestlegen (RasseExtern, StadtNummer : in Integer) is + procedure StadtUmgebungGrößeFestlegen (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin if GlobaleVariablen.Wichtiges (RasseExtern).Erforscht (2) /= 0 and GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).Einwohner >= 10 then @@ -55,7 +55,7 @@ package body StadtWerteFestlegen is - procedure BewirtschaftbareFelderBelegen (ZuwachsOderSchwund : Boolean; RasseExtern, StadtNummer : in Integer) is + procedure BewirtschaftbareFelderBelegen (ZuwachsOderSchwund : Boolean; RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin NutzbarerBereich := GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).StadtUmgebungGröße; diff --git a/src/StadtSystem/StadtWerteFestlegen.ads b/src/StadtSystem/StadtWerteFestlegen.ads index 2d5297210..2d6fe9f94 100644 --- a/src/StadtSystem/StadtWerteFestlegen.ads +++ b/src/StadtSystem/StadtWerteFestlegen.ads @@ -1,18 +1,16 @@ -with GlobaleVariablen, SchleifenPruefungen, GlobaleDatentypen, Karten; +with GlobaleVariablen, SchleifenPruefungen, GlobaleDatentypen, Karten, GlobaleRecords; use GlobaleDatentypen; package StadtWerteFestlegen is RassenMulitplikationWert : constant GlobaleDatentypen.BelegterGrund := 1_000; - procedure BewirtschaftbareFelderBelegen (ZuwachsOderSchwund : Boolean; RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure StadtUmgebungGrößeFestlegen (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure BewirtschaftbareFelderBelegen (ZuwachsOderSchwund : Boolean; RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); + procedure StadtUmgebungGrößeFestlegen (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); private NutzbarerBereich : GlobaleDatentypen.Kartenfeld; - KartenWert : GlobaleDatentypen.AchsenAusKartenfeld; + KartenWert : GlobaleRecords.AchsenAusKartenfeld; end StadtWerteFestlegen; diff --git a/src/StadtSystem/Wachstum.adb b/src/StadtSystem/Wachstum.adb index 71a4e2b75..f050d7dee 100644 --- a/src/StadtSystem/Wachstum.adb +++ b/src/StadtSystem/Wachstum.adb @@ -54,7 +54,7 @@ package body Wachstum is - procedure WachstumBeiStadtGründung (RasseExtern : in Integer) is + procedure WachstumBeiStadtGründung (RasseExtern : in GlobaleDatentypen.Rassen) is begin StadtSchleife: @@ -80,7 +80,7 @@ package body Wachstum is - procedure WachstumEinwohner (RasseExtern, StadtNummer : in Integer) is + procedure WachstumEinwohner (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin GlobaleVariablen.StadtGebaut (RasseExtern, StadtNummer).AktuelleNahrungsmittel @@ -117,7 +117,7 @@ package body Wachstum is - procedure WachstumProduktion (RasseExtern, StadtNummer : in Integer) is + procedure WachstumProduktion (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive) is begin if GlobaleVariablen.StadtGebaut (RasseExtern, Stadtnummer).AktuellesBauprojekt = 0 then diff --git a/src/StadtSystem/Wachstum.ads b/src/StadtSystem/Wachstum.ads index 7d8b7a151..0af4dad79 100644 --- a/src/StadtSystem/Wachstum.ads +++ b/src/StadtSystem/Wachstum.ads @@ -7,14 +7,11 @@ use GlobaleDatentypen; package Wachstum is procedure Wachstum; - procedure WachstumBeiStadtGründung (RasseExtern : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure WachstumBeiStadtGründung (RasseExtern : in GlobaleDatentypen.Rassen); private - procedure WachstumEinwohner (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - procedure WachstumProduktion (RasseExtern, StadtNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure WachstumEinwohner (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); + procedure WachstumProduktion (RasseExtern : in GlobaleDatentypen.Rassen; StadtNummer : in Positive); end Wachstum; diff --git a/src/Start.adb b/src/Start.adb index fa9289a95..3184c9511 100644 --- a/src/Start.adb +++ b/src/Start.adb @@ -1,5 +1,5 @@ -with Ada.Wide_Wide_Text_IO, Ada.Directories; -use Ada.Wide_Wide_Text_IO, Ada.Directories; +with Ada.Wide_Wide_Text_IO; +use Ada.Wide_Wide_Text_IO; with Auswahl, Einlesen, Optionen, SpielEinstellungen, AllesAufAnfangSetzen, Informationen, ImSpiel, GlobaleVariablen; diff --git a/src/SystemeImSpiel/BefehleImSpiel.adb b/src/SystemeImSpiel/BefehleImSpiel.adb index 79e0a465b..d77b2ea66 100644 --- a/src/SystemeImSpiel/BefehleImSpiel.adb +++ b/src/SystemeImSpiel/BefehleImSpiel.adb @@ -1,6 +1,6 @@ package body BefehleImSpiel is - function Befehle (RasseExtern : in Integer) return Integer is + function Befehle (RasseExtern : in GlobaleDatentypen.Rassen) return Integer is begin Get_Immediate (Item => Taste); @@ -216,7 +216,7 @@ package body BefehleImSpiel is - procedure EinheitOderStadt (RasseExtern, Auswahl, StadtNummer, EinheitNummer : in Integer) is + procedure EinheitOderStadt (RasseExtern : in GlobaleDatentypen.Rassen; Auswahl, StadtNummer, EinheitNummer : in Integer) is begin case Auswahl is diff --git a/src/SystemeImSpiel/BefehleImSpiel.ads b/src/SystemeImSpiel/BefehleImSpiel.ads index 774307d7b..0155091bf 100644 --- a/src/SystemeImSpiel/BefehleImSpiel.ads +++ b/src/SystemeImSpiel/BefehleImSpiel.ads @@ -7,8 +7,7 @@ use GlobaleDatentypen; package BefehleImSpiel is - function Befehle (RasseExtern : in Integer) return Integer - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + function Befehle (RasseExtern : in GlobaleDatentypen.Rassen) return Integer; private @@ -23,7 +22,6 @@ private StadtOderEinheit : Integer; WahlForschung : Integer; - procedure EinheitOderStadt (RasseExtern, Auswahl, StadtNummer, EinheitNummer : in Integer) - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + procedure EinheitOderStadt (RasseExtern : GlobaleDatentypen.Rassen; Auswahl, StadtNummer, EinheitNummer : in Integer); end BefehleImSpiel; diff --git a/src/SystemeImSpiel/ImSpiel.adb b/src/SystemeImSpiel/ImSpiel.adb index 8069e5aa8..abcc0597f 100644 --- a/src/SystemeImSpiel/ImSpiel.adb +++ b/src/SystemeImSpiel/ImSpiel.adb @@ -66,9 +66,10 @@ package body ImSpiel is end case; end loop RassenSchleife; - + ErsteRunde := False; - + + Ladezeiten.BerechnungenNachZugendeAllerSpielerZeiten (1, 1) := Clock; EinheitenDatenbank.HeilungBewegungspunkteFürNeueRundeSetzen; Verbesserungen.VerbesserungFertiggestellt; Wachstum.Wachstum; @@ -76,7 +77,9 @@ package body ImSpiel is InDerStadt.StadtProduktionPrüfen (0, 0); ForschungsDatenbank.ForschungFortschritt; GlobaleVariablen.RundenAnzahl := GlobaleVariablen.RundenAnzahl + 1; - -- Speichern.AutoSpeichern; + -- Speichern.AutoSpeichern; + Ladezeiten.BerechnungenNachZugendeAllerSpielerZeiten (2, 1) := Clock; + Ladezeiten.BerechnungenNachZugendeAllerSpieler (WelcheZeit => 1); end loop SpielSchleife; diff --git a/src/SystemeImSpiel/ImSpiel.ads b/src/SystemeImSpiel/ImSpiel.ads index e1ba50584..f543a82df 100644 --- a/src/SystemeImSpiel/ImSpiel.ads +++ b/src/SystemeImSpiel/ImSpiel.ads @@ -1,4 +1,7 @@ -with InDerStadt, Wachstum, Bauen, Karte, BefehleImSpiel, Optionen, Sichtbarkeit, EinheitenDatenbank, Verbesserungen, ForschungsDatenbank, GebaeudeDatenbank, GlobaleVariablen, Anzeige, KI; +with Ada.Calendar; +use Ada.Calendar; + +with InDerStadt, Wachstum, Bauen, Karte, BefehleImSpiel, Optionen, Sichtbarkeit, EinheitenDatenbank, Verbesserungen, ForschungsDatenbank, GebaeudeDatenbank, GlobaleVariablen, Anzeige, KI, Ladezeiten; package ImSpiel is diff --git a/src/SystemeImSpiel/KIPruefungen.adb b/src/SystemeImSpiel/KIPruefungen.adb index 75163db85..2823bc9b7 100644 --- a/src/SystemeImSpiel/KIPruefungen.adb +++ b/src/SystemeImSpiel/KIPruefungen.adb @@ -1,6 +1,6 @@ package body KIPruefungen is - function SpezielleEinheitArtSuchen (RasseExtern, WelcheEinheitArt : in Integer) return Integer is + function SpezielleEinheitArtSuchen (RasseExtern : in GlobaleDatentypen.Rassen; WelcheEinheitArt : in Positive) return Integer is begin EinheitSchleife: @@ -25,7 +25,7 @@ package body KIPruefungen is -- 0 = Keine Bewegungspunkte/Beschäftigung, 1 = Bewegungspunkte ohne Beschäftigung, 2 = Beschäftigung ohne Bewegungspunkte, 3 = Beschäftigung/Bewegungspunkte - function EinheitMitBewegungspunktenSuchen (RasseExtern : in Integer) return GlobaleDatentypen.EinheitStatusRecord is + function EinheitMitBewegungspunktenSuchen (RasseExtern : in GlobaleDatentypen.Rassen) return KIRecords.EinheitStatusRecord is begin EinheitSchleife: diff --git a/src/SystemeImSpiel/KIPruefungen.ads b/src/SystemeImSpiel/KIPruefungen.ads index 9b6498a07..20cd46041 100644 --- a/src/SystemeImSpiel/KIPruefungen.ads +++ b/src/SystemeImSpiel/KIPruefungen.ads @@ -1,12 +1,10 @@ -with GlobaleVariablen, GlobaleDatentypen, EinheitenDatenbank, SchleifenPruefungen; +with GlobaleVariablen, GlobaleDatentypen, EinheitenDatenbank, SchleifenPruefungen, KIRecords; use GlobaleDatentypen; package KIPruefungen is - function SpezielleEinheitArtSuchen (RasseExtern, WelcheEinheitArt : in Integer) return Integer - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - function EinheitMitBewegungspunktenSuchen (RasseExtern : in Integer) return GlobaleDatentypen.EinheitStatusRecord - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; + function SpezielleEinheitArtSuchen (RasseExtern : in GlobaleDatentypen.Rassen; WelcheEinheitArt : in Positive) return Integer; + function EinheitMitBewegungspunktenSuchen (RasseExtern : in GlobaleDatentypen.Rassen) return KIRecords.EinheitStatusRecord; private diff --git a/src/SystemeImSpiel/SchleifenPruefungen.adb b/src/SystemeImSpiel/SchleifenPruefungen.adb index 92fa93b7c..d98c8f088 100644 --- a/src/SystemeImSpiel/SchleifenPruefungen.adb +++ b/src/SystemeImSpiel/SchleifenPruefungen.adb @@ -1,6 +1,6 @@ package body SchleifenPruefungen is - function KartenUmgebung (YKoordinate, XKoordinate, YÄnderung, XÄnderung, ZusatzYAbstand : in GlobaleDatentypen.Kartenfeld) return GlobaleDatentypen.AchsenAusKartenfeld is + function KartenUmgebung (YKoordinate, XKoordinate, YÄnderung, XÄnderung, ZusatzYAbstand : in GlobaleDatentypen.Kartenfeld) return GlobaleRecords.AchsenAusKartenfeld is begin -- Der ZusatzYAbstand ist für <=, also z. B. 1 für <= oder 4 für <= Karten.Karten'First (2) + 3 @@ -35,7 +35,7 @@ package body SchleifenPruefungen is - function KoordinatenStadtMitRasseSuchen (RasseExtern : in Integer; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer is + function KoordinatenStadtMitRasseSuchen (RasseExtern : in GlobaleDatentypen.Rassen; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer is begin StadtSchleife: @@ -59,7 +59,7 @@ package body SchleifenPruefungen is - function KoordinatenEinheitMitRasseSuchen (RasseExtern : in Integer; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer is + function KoordinatenEinheitMitRasseSuchen (RasseExtern : in GlobaleDatentypen.Rassen; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer is begin EinheitSchleife: @@ -83,7 +83,7 @@ package body SchleifenPruefungen is - function KoordinatenStadtOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleDatentypen.RasseUndPlatznummerRecord is + function KoordinatenStadtOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleRecords.RasseUndPlatznummerRecord is begin RasseSchleife: @@ -104,13 +104,13 @@ package body SchleifenPruefungen is end loop StadtSchleife; end loop RasseSchleife; - return (RückgabeWert, RückgabeWert); + return (GlobaleDatentypen.RassenMitNullwert'First, RückgabeWert); end KoordinatenStadtOhneRasseSuchen; - function KoordinatenEinheitOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleDatentypen.RasseUndPlatznummerRecord is + function KoordinatenEinheitOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleRecords.RasseUndPlatznummerRecord is begin RasseSchleife: @@ -131,7 +131,7 @@ package body SchleifenPruefungen is end loop EinheitSchleife; end loop RasseSchleife; - return (RückgabeWert, RückgabeWert); + return (GlobaleDatentypen.RassenMitNullwert'First, RückgabeWert); end KoordinatenEinheitOhneRasseSuchen; diff --git a/src/SystemeImSpiel/SchleifenPruefungen.ads b/src/SystemeImSpiel/SchleifenPruefungen.ads index e18763f96..ff9f7eb46 100644 --- a/src/SystemeImSpiel/SchleifenPruefungen.ads +++ b/src/SystemeImSpiel/SchleifenPruefungen.ads @@ -1,23 +1,32 @@ -with GlobaleVariablen, Karten, GlobaleDatentypen; +with GlobaleVariablen, Karten, GlobaleDatentypen, GlobaleRecords; use GlobaleDatentypen; package SchleifenPruefungen is RückgabeWert : constant Integer := -1_000_000; - function KartenUmgebung (YKoordinate, XKoordinate, YÄnderung, XÄnderung, ZusatzYAbstand : in GlobaleDatentypen.Kartenfeld) return GlobaleDatentypen.AchsenAusKartenfeld; - function KoordinatenStadtMitRasseSuchen (RasseExtern : in Integer; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - function KoordinatenEinheitMitRasseSuchen (RasseExtern : in Integer; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer - with Pre => RasseExtern in GlobaleDatentypen.RassenImSpielArray'Range; - function KoordinatenStadtOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleDatentypen.RasseUndPlatznummerRecord; - function KoordinatenEinheitOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleDatentypen.RasseUndPlatznummerRecord; - function KartenGrund (Ebene : in GlobaleDatentypen.Ebene; YKoordinate, XKoordinate : in GlobaleDatentypen.KartenfeldPositiv) return Boolean; + function KartenUmgebung (YKoordinate, XKoordinate, YÄnderung, XÄnderung, ZusatzYAbstand : in GlobaleDatentypen.Kartenfeld) return GlobaleRecords.AchsenAusKartenfeld with + Pre => YKoordinate <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XKoordinate <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + function KoordinatenStadtMitRasseSuchen (RasseExtern : in GlobaleDatentypen.Rassen; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + function KoordinatenEinheitMitRasseSuchen (RasseExtern : in GlobaleDatentypen.Rassen; YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return Integer with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + function KoordinatenStadtOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleRecords.RasseUndPlatznummerRecord with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + function KoordinatenEinheitOhneRasseSuchen (YAchse, XAchse : in GlobaleDatentypen.KartenfeldPositiv) return GlobaleRecords.RasseUndPlatznummerRecord with + Pre => YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + function KartenGrund (Ebene : in GlobaleDatentypen.Ebene; YKoordinate, XKoordinate : in GlobaleDatentypen.KartenfeldPositiv) return Boolean with + Pre => Ebene > -3 and YKoordinate <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XKoordinate <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; private Überhang : Integer; - Kartenwert : GlobaleDatentypen.AchsenAusKartenfeld; + Kartenwert : GlobaleRecords.AchsenAusKartenfeld; end SchleifenPruefungen; diff --git a/src/SystemeImSpiel/WerteFestlegen.ads b/src/SystemeImSpiel/WerteFestlegen.ads index 46f414170..610183454 100644 --- a/src/SystemeImSpiel/WerteFestlegen.ads +++ b/src/SystemeImSpiel/WerteFestlegen.ads @@ -1,19 +1,23 @@ with Ada.Wide_Wide_Text_IO; use Ada.Wide_Wide_Text_IO; -with GlobaleDatentypen, SchleifenPruefungen, KartenDatenbank, VerbesserungenDatenbank, Karten; +with GlobaleDatentypen, SchleifenPruefungen, KartenDatenbank, VerbesserungenDatenbank, Karten, GlobaleRecords; use GlobaleDatentypen; package WerteFestlegen is - procedure KartenfelderBewerten (Generierung : Boolean; EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : GlobaleDatentypen.KartenfeldPositiv); + procedure KartenfelderBewerten (Generierung : Boolean; EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : GlobaleDatentypen.KartenfeldPositiv) with + Pre => EAchse > -3 and YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; private - type KartenwertArray is array (-2 .. 2) of GlobaleDatentypen.AchsenAusKartenfeld; + type KartenwertArray is array (-2 .. 2) of GlobaleRecords.AchsenAusKartenfeld; Kartenwert : KartenwertArray; - procedure KartenfelderBewertenKleineSchleife (EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : GlobaleDatentypen.KartenfeldPositiv); - procedure BewertungSelbst (EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse, YAchseFeldAufschlag, XAchseFeldAufschlag : GlobaleDatentypen.KartenfeldPositiv; Teiler : GlobaleDatentypen.LoopRangeMinusDreiZuDrei); + procedure KartenfelderBewertenKleineSchleife (EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse : GlobaleDatentypen.KartenfeldPositiv) with + Pre => EAchse > -3 and YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; + + procedure BewertungSelbst (EAchse : GlobaleDatentypen.Ebene; YAchse, XAchse, YAchseFeldAufschlag, XAchseFeldAufschlag : GlobaleDatentypen.KartenfeldPositiv; Teiler : GlobaleDatentypen.LoopRangeMinusDreiZuDrei) with + Pre => EAchse > -3 and YAchse <= Karten.Kartengrößen (Karten.Kartengröße).YAchsenGröße and XAchse <= Karten.Kartengrößen (Karten.Kartengröße).XAchsenGröße; end WerteFestlegen; diff --git a/src/SystemeImSpiel/ZufallsGeneratoren.adb b/src/SystemeImSpiel/ZufallsGeneratoren.adb index 57a4a47c7..c3c0a0e3c 100644 --- a/src/SystemeImSpiel/ZufallsGeneratoren.adb +++ b/src/SystemeImSpiel/ZufallsGeneratoren.adb @@ -1,6 +1,6 @@ package body ZufallsGeneratoren is - function YXPosition return GlobaleDatentypen.AchsenAusKartenfeldPositiv is + function YXPosition return GlobaleRecords.AchsenAusKartenfeldPositiv is begin case Karten.Kartengröße is diff --git a/src/SystemeImSpiel/ZufallsGeneratoren.ads b/src/SystemeImSpiel/ZufallsGeneratoren.ads index 5fd42586e..82dafa15c 100644 --- a/src/SystemeImSpiel/ZufallsGeneratoren.ads +++ b/src/SystemeImSpiel/ZufallsGeneratoren.ads @@ -1,11 +1,11 @@ with Ada.Numerics.Discrete_Random; -with GlobaleDatentypen, Karten; +with GlobaleDatentypen, Karten, GlobaleRecords; use GlobaleDatentypen; package ZufallsGeneratoren is - function YXPosition return GlobaleDatentypen.AchsenAusKartenfeldPositiv; + function YXPosition return GlobaleRecords.AchsenAusKartenfeldPositiv; function Chaoskarte return GlobaleDatentypen.KartenGrund; private