diff --git a/1869_Remake.sln b/1869_Remake.sln
new file mode 100644
index 0000000..673abc3
--- /dev/null
+++ b/1869_Remake.sln
@@ -0,0 +1,46 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.25420.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "1869_Remake", "1869_Remake\1869_Remake.csproj", "{7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Otter", "..\..\OtterBasicData\Otter\Otter.csproj", "{236485C2-A7BA-4DCD-808A-B3A634764402}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x86 = Debug|x86
+ NuGet|Any CPU = NuGet|Any CPU
+ NuGet|x86 = NuGet|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Debug|x86.Build.0 = Debug|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.NuGet|Any CPU.ActiveCfg = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.NuGet|Any CPU.Build.0 = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.NuGet|x86.ActiveCfg = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.NuGet|x86.Build.0 = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Release|x86.ActiveCfg = Release|Any CPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}.Release|x86.Build.0 = Release|Any CPU
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Debug|Any CPU.ActiveCfg = Debug|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Debug|x86.ActiveCfg = Debug|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Debug|x86.Build.0 = Debug|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.NuGet|Any CPU.ActiveCfg = NuGet|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.NuGet|x86.ActiveCfg = NuGet|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.NuGet|x86.Build.0 = NuGet|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Release|Any CPU.ActiveCfg = Release|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Release|Any CPU.Build.0 = Release|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Release|x86.ActiveCfg = Release|x86
+ {236485C2-A7BA-4DCD-808A-B3A634764402}.Release|x86.Build.0 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/1869_Remake/1869_Remake.csproj b/1869_Remake/1869_Remake.csproj
new file mode 100644
index 0000000..b8e0f1d
--- /dev/null
+++ b/1869_Remake/1869_Remake.csproj
@@ -0,0 +1,367 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {7FBB14B6-14B4-43DE-AA70-844B2A9E1FF4}
+ Exe
+ Properties
+ _1869_Remake
+ 1869_Remake
+ v4.5.2
+ 512
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ {236485c2-a7ba-4dcd-808a-b3a634764402}
+ Otter
+
+
+
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
\ No newline at end of file
diff --git a/1869_Remake/App.config b/1869_Remake/App.config
new file mode 100644
index 0000000..d740e88
--- /dev/null
+++ b/1869_Remake/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1869_Remake/Assets.cs b/1869_Remake/Assets.cs
new file mode 100644
index 0000000..974600b
--- /dev/null
+++ b/1869_Remake/Assets.cs
@@ -0,0 +1,119 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+
+namespace _1869_Remake
+{
+ public class Assets
+ {
+ //Ansammlung aller Asset-Locations
+ //Bilder
+ public const string TITLE_IMG = "../../Assets/Graphics/TitleScreen.png";
+ public const string INTRO_IMG_Company = "../../Assets/Graphics/Max Design Introscreen.png";
+ public const string INTRO_IMG_ART = "../../Assets/Graphics/Introscreen_Artwork.png";
+ public const string INTRO_IMG_MUSIK = "../../Assets/Graphics/Introscreen_Musik.png";
+ public const string INTRO_IMG_PROGRAMMING = "../../Assets/Graphics/Introscreen_Programmers.png";
+ public const string BLACKSCREEN = "../../Assets/Graphics/Blackscreen.png";
+ public const string CONFIGSCREEN = "../../Assets/Graphics/Configscreen.png";
+ public const string HOFSCREEN = "../../Assets/Graphics/HallOfFameScreen.png";
+ public const string MAINSCREEN_FRAME = "../../Assets/Graphics/MainScreen_Frame.png";
+ public const string BANKSCREEN = "../../Assets/Graphics/BankScreen_Basis.png";
+ public const string BANKSCREEN_AUGEN = "../../Assets/Graphics/BankScreen_Basis_2_Augen.png";
+ public const string STATISTIKSCREEN = "../../Assets/Graphics/StatistikenScreen_Basis.png";
+ public const string OPTIONSCREEN = "../../Assets/Graphics/OptionenScreen_Basis.png";
+ public const string WELT_EUROPA = "../../Assets/Graphics/worldmap_europa.png";
+ public const string HANDELSCREEN = "../../Assets/Graphics/Handel_LIVERPOOL_BG.png";
+ public const string MAINSCREEN_INFO_SCHABLONE = "../../Assets/Graphics/InfoScreen_Liverpool_Beispiel.png";
+ public const string BARSCREEN = "../../Assets/Graphics/BarScreen_BG.png";
+ public const string SPRITESHEET_MEER = "../../Assets/Anims/SeeAnimBG_full_640x480.png";
+ public const string SCHIFFSCONTROLLER = "../../Assets/Graphics/SchiffControllerIcon_Basis.png";
+
+
+ //ZeitradBilder
+ public const string BG_ZEITDISPLAY = "../../Assets/Graphics/BG_Zeitdisplay.png";
+ public const string BG_ZEIT_MONAT = "../../Assets/Graphics/BG_ZeitDisplay_Monat.png";
+ public const string ZEITDISPLAY_0 = "../../Assets/Graphics/Zahl_0.png";
+ public const string ZEITDISPLAY_1 = "../../Assets/Graphics/Zahl_1.png";
+ public const string ZEITDISPLAY_2 = "../../Assets/Graphics/Zahl_2.png";
+ public const string ZEITDISPLAY_3 = "../../Assets/Graphics/Zahl_3.png";
+ public const string ZEITDISPLAY_4 = "../../Assets/Graphics/Zahl_4.png";
+ public const string ZEITDISPLAY_5 = "../../Assets/Graphics/Zahl_5.png";
+ public const string ZEITDISPLAY_6 = "../../Assets/Graphics/Zahl_6.png";
+ public const string ZEITDISPLAY_7 = "../../Assets/Graphics/Zahl_7.png";
+ public const string ZEITDISPLAY_8 = "../../Assets/Graphics/Zahl_8.png";
+ public const string ZEITDISPLAY_9 = "../../Assets/Graphics/Zahl_9.png";
+ public const string ZEITDISPLAY_JAN = "../../Assets/Graphics/Monat_Jan.png";
+ public const string ZEITDISPLAY_FEB = "../../Assets/Graphics/Monat_Feb.png";
+ public const string ZEITDISPLAY_MAR = "../../Assets/Graphics/Monat_Mar.png";
+ public const string ZEITDISPLAY_APR = "../../Assets/Graphics/Monat_Apr.png";
+ public const string ZEITDISPLAY_MAY = "../../Assets/Graphics/Monat_May.png";
+ public const string ZEITDISPLAY_JUN = "../../Assets/Graphics/Monat_Jun.png";
+ public const string ZEITDISPLAY_JUL = "../../Assets/Graphics/Monat_Jul.png";
+ public const string ZEITDISPLAY_AUG = "../../Assets/Graphics/Monat_Aug.png";
+ public const string ZEITDISPLAY_SEP = "../../Assets/Graphics/Monat_Sep.png";
+ public const string ZEITDISPLAY_OCT = "../../Assets/Graphics/Monat_Oct.png";
+ public const string ZEITDISPLAY_NOV = "../../Assets/Graphics/Monat_Nov.png";
+ public const string ZEITDISPLAY_DEZ = "../../Assets/Graphics/Monat_Dez.png";
+
+ //Handelsbildschirm Sprites
+ public const string HANDEL_RAUM_HOLZ = "../../Assets/Graphics/Holzraum_Basis.png";
+ public const string HANDEL_GESICHT_1 = "../../Assets/Graphics/Gesicht_1.png";
+ public const string HANDEL_OKÖRPER_1 = "../../Assets/Graphics/OberKörper_1_Weste.png";
+ public const string HANDEL_ARME_1 = "../../Assets/Graphics/Arme_1.png";
+ public const string HANDEL_DEKOTÜR_LINKS_1 = "../../Assets/Graphics/Deko_Tür_Links_1_Ofen.png";
+ public const string HANDEL_TÜR_1 = "../../Assets/Graphics/Fenster-Tür_1.png";
+ public const string HANDEL_TAFEL_HINTERGRUND_HOLZ = "../../Assets/Graphics/Tafel_BG_Holz.png";
+ public const string HANDEL_TAFEL_BASIC = "../../Assets/Graphics/Tafel_basic.png";
+ public const string HANDEL_TAFEL_VORDERGRUND_1 = "../../Assets/Graphics/Tafel_Vordergrund_1_FassSchwamm.png";
+ public const string HANDEL_TISCH_1 = "../../Assets/Graphics/Tisch_1.png";
+ public const string HANDEL_TISCH_2 = "../../Assets/Graphics/Tisch_2_Holz_Basic.png";
+
+ //Werftbildschirm Sprites
+ public const string WERFTBÜROSCREEN = "../../Assets/Graphics/Werft_Main_BG.png";
+ public const string WERFTREPERATURSCREEN = "../../Assets/Graphics/Werft_Reparatur_BG.png";
+ public const string WERFTSCHIFFSAUSWAHLSCREEN = "../../Assets/Graphics/Werft_SchiffstypAuswahl_BG.png";
+ public const string WERFT_SCHIFF_SCHONER = "../../Assets/Graphics/Schoner.png";
+ public const string WERFT_SCHIFF_BARK = "../../Assets/Graphics/Bark.png";
+ public const string WERFT_SCHIFF_FREGATTE = "../../Assets/Graphics/Fregatte.png";
+ public const string WERFT_SCHIFF_BRIGG = "../../Assets/Graphics/Brigg.png";
+ public const string WERFT_SCHIFF_HOLZDAMPFSCHIFF = "../../Assets/Graphics/Holzdampfschiff.png";
+ public const string WERFT_SCHIFF_EISENDAMPFSCHIFF = "../../Assets/Graphics/Eisendampfschiff.png";
+ public const string WERFT_SCHIFF_KLIPPER = "../../Assets/Graphics/Klipper.png";
+ public const string WERFT_SCHIFF_BAU_NAME = "../../Assets/Graphics/Werft_Bau_Schiffsnamen.png";
+
+ //Icons
+ public const string PFEILHOCH = "../../Assets/Graphics/Pfeil_hoch.png";
+ public const string PFEILRUNTER = "../../Assets/Graphics/Pfeil_runter.png";
+ public const string PFEILHOCHMARKIERT = "../../Assets/Graphics/Pfeil_hoch_rot.png";
+ public const string PFEILRUNTERMARKIERT = "../../Assets/Graphics/Pfeil_runter_rot.png";
+ public const string ICON_COIN = "../Assets/Graphics/MainScreen_MünzeIcon_1.png";
+ public const string ICON_COIN_CLICKED = "../Assets/Graphics/MainScreen_MünzeIcon_2.png";
+ public const string ICON_ANKER = "../Assets/Graphics/MainScreen_AnkerIcon_1.png";
+ public const string ICON_ANKER_CLICKED = "../Assets/Graphics/MainScreen_AnkerIcon_2.png";
+ public const string ICON_BUCH = "../Assets/Graphics/MainScreen_BuchIcon_1.png";
+ public const string ICON_BUCH_CLICKED = "../Assets/Graphics/MainScreen_BuchIcon_2.png";
+ public const string ICON_GELDSACK = "../Assets/Graphics/MainScreen_GeldSackIcon_1.png";
+ public const string ICON_GELDSACK_CLICKED = "../Assets/Graphics/MainScreen_GeldSackIcon_2.png";
+ public const string ICON_MEERESKNOTEN = "../Assets/Graphics/MeeresKnoten.png";
+ public const string ICON_AUSWAHL = "../Assets/Graphics/AuswahlKnoten.png";
+
+
+ //HafenIcons
+ public const string HAFENINFO = "../../Assets/Graphics/HafenIcon_Info.png";
+ public const string HAFENBAR = "../../Assets/Graphics/HafenIcon_Pub.png";
+ public const string HAFENWERFT = "../../Assets/Graphics/HafenIcon_Werft.png";
+ public const string HAFENFILIALE = "../../Assets/Graphics/HafenIcon_Filiale.png";
+ public const string HAFENFAHNE = "../../Assets/Graphics/Fahne.png";
+ public const string HAFENSCHIFF = "../../Assets/Graphics/Schiffchen.png";
+
+ //Fonts
+ public const string FONT_AMIGA4EVER2 = "../../Assets/Fonts/amiga_forever_pro2_regular.ttf";
+
+ //Musik
+ public const string MUSIC_TITLE = "../../Assets/Music/Title.ogg";
+
+ }
+}
diff --git a/1869_Remake/Assets/Anims/SeeAnimBG_full_640x480.png b/1869_Remake/Assets/Anims/SeeAnimBG_full_640x480.png
new file mode 100644
index 0000000..3787311
Binary files /dev/null and b/1869_Remake/Assets/Anims/SeeAnimBG_full_640x480.png differ
diff --git a/1869_Remake/Assets/Fonts/amiga4ever.ttf b/1869_Remake/Assets/Fonts/amiga4ever.ttf
new file mode 100644
index 0000000..ada736f
Binary files /dev/null and b/1869_Remake/Assets/Fonts/amiga4ever.ttf differ
diff --git a/1869_Remake/Assets/Fonts/amiga_forever_pro2_regular.ttf b/1869_Remake/Assets/Fonts/amiga_forever_pro2_regular.ttf
new file mode 100644
index 0000000..6a9b293
Binary files /dev/null and b/1869_Remake/Assets/Fonts/amiga_forever_pro2_regular.ttf differ
diff --git a/1869_Remake/Assets/Graphics/Arme_1.png b/1869_Remake/Assets/Graphics/Arme_1.png
new file mode 100644
index 0000000..0fe6cb0
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Arme_1.png differ
diff --git a/1869_Remake/Assets/Graphics/AuswahlKnoten.png b/1869_Remake/Assets/Graphics/AuswahlKnoten.png
new file mode 100644
index 0000000..19093f4
Binary files /dev/null and b/1869_Remake/Assets/Graphics/AuswahlKnoten.png differ
diff --git a/1869_Remake/Assets/Graphics/BG_ZeitDisplay.png b/1869_Remake/Assets/Graphics/BG_ZeitDisplay.png
new file mode 100644
index 0000000..74bb125
Binary files /dev/null and b/1869_Remake/Assets/Graphics/BG_ZeitDisplay.png differ
diff --git a/1869_Remake/Assets/Graphics/BG_ZeitDisplay_Monat.png b/1869_Remake/Assets/Graphics/BG_ZeitDisplay_Monat.png
new file mode 100644
index 0000000..817560f
Binary files /dev/null and b/1869_Remake/Assets/Graphics/BG_ZeitDisplay_Monat.png differ
diff --git a/1869_Remake/Assets/Graphics/BankScreen_Basis.png b/1869_Remake/Assets/Graphics/BankScreen_Basis.png
new file mode 100644
index 0000000..9aeb9d5
Binary files /dev/null and b/1869_Remake/Assets/Graphics/BankScreen_Basis.png differ
diff --git a/1869_Remake/Assets/Graphics/BankScreen_Basis_2.png b/1869_Remake/Assets/Graphics/BankScreen_Basis_2.png
new file mode 100644
index 0000000..b70be38
Binary files /dev/null and b/1869_Remake/Assets/Graphics/BankScreen_Basis_2.png differ
diff --git a/1869_Remake/Assets/Graphics/BankScreen_Basis_2_Augen.png b/1869_Remake/Assets/Graphics/BankScreen_Basis_2_Augen.png
new file mode 100644
index 0000000..d5dd061
Binary files /dev/null and b/1869_Remake/Assets/Graphics/BankScreen_Basis_2_Augen.png differ
diff --git a/1869_Remake/Assets/Graphics/BarScreen_BG.png b/1869_Remake/Assets/Graphics/BarScreen_BG.png
new file mode 100644
index 0000000..b4e127a
Binary files /dev/null and b/1869_Remake/Assets/Graphics/BarScreen_BG.png differ
diff --git a/1869_Remake/Assets/Graphics/Bark.png b/1869_Remake/Assets/Graphics/Bark.png
new file mode 100644
index 0000000..9f5a6ef
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Bark.png differ
diff --git a/1869_Remake/Assets/Graphics/Blackscreen.png b/1869_Remake/Assets/Graphics/Blackscreen.png
new file mode 100644
index 0000000..21e74de
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Blackscreen.png differ
diff --git a/1869_Remake/Assets/Graphics/Brigg.png b/1869_Remake/Assets/Graphics/Brigg.png
new file mode 100644
index 0000000..0f327be
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Brigg.png differ
diff --git a/1869_Remake/Assets/Graphics/ConfigScreen.png b/1869_Remake/Assets/Graphics/ConfigScreen.png
new file mode 100644
index 0000000..f356658
Binary files /dev/null and b/1869_Remake/Assets/Graphics/ConfigScreen.png differ
diff --git a/1869_Remake/Assets/Graphics/Deko_Tür_Links_1_Ofen.png b/1869_Remake/Assets/Graphics/Deko_Tür_Links_1_Ofen.png
new file mode 100644
index 0000000..9d6e5c1
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Deko_Tür_Links_1_Ofen.png differ
diff --git a/1869_Remake/Assets/Graphics/Eisendampfschiff.png b/1869_Remake/Assets/Graphics/Eisendampfschiff.png
new file mode 100644
index 0000000..5128106
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Eisendampfschiff.png differ
diff --git a/1869_Remake/Assets/Graphics/Fahne.png b/1869_Remake/Assets/Graphics/Fahne.png
new file mode 100644
index 0000000..3032b83
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Fahne.png differ
diff --git a/1869_Remake/Assets/Graphics/Fenster-Tür_1.png b/1869_Remake/Assets/Graphics/Fenster-Tür_1.png
new file mode 100644
index 0000000..79f76c8
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Fenster-Tür_1.png differ
diff --git a/1869_Remake/Assets/Graphics/FilialScreen_GroßBrit_BG.png b/1869_Remake/Assets/Graphics/FilialScreen_GroßBrit_BG.png
new file mode 100644
index 0000000..8dd2da9
Binary files /dev/null and b/1869_Remake/Assets/Graphics/FilialScreen_GroßBrit_BG.png differ
diff --git a/1869_Remake/Assets/Graphics/Fregatte.png b/1869_Remake/Assets/Graphics/Fregatte.png
new file mode 100644
index 0000000..1825f6e
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Fregatte.png differ
diff --git a/1869_Remake/Assets/Graphics/Gesicht_1.png b/1869_Remake/Assets/Graphics/Gesicht_1.png
new file mode 100644
index 0000000..267adf7
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Gesicht_1.png differ
diff --git a/1869_Remake/Assets/Graphics/HafenIcon_Filiale.png b/1869_Remake/Assets/Graphics/HafenIcon_Filiale.png
new file mode 100644
index 0000000..1065237
Binary files /dev/null and b/1869_Remake/Assets/Graphics/HafenIcon_Filiale.png differ
diff --git a/1869_Remake/Assets/Graphics/HafenIcon_Info.png b/1869_Remake/Assets/Graphics/HafenIcon_Info.png
new file mode 100644
index 0000000..afd0c71
Binary files /dev/null and b/1869_Remake/Assets/Graphics/HafenIcon_Info.png differ
diff --git a/1869_Remake/Assets/Graphics/HafenIcon_Pub.png b/1869_Remake/Assets/Graphics/HafenIcon_Pub.png
new file mode 100644
index 0000000..16dcfc2
Binary files /dev/null and b/1869_Remake/Assets/Graphics/HafenIcon_Pub.png differ
diff --git a/1869_Remake/Assets/Graphics/HafenIcon_Werft.png b/1869_Remake/Assets/Graphics/HafenIcon_Werft.png
new file mode 100644
index 0000000..8cfef1e
Binary files /dev/null and b/1869_Remake/Assets/Graphics/HafenIcon_Werft.png differ
diff --git a/1869_Remake/Assets/Graphics/HallOfFameScreen.png b/1869_Remake/Assets/Graphics/HallOfFameScreen.png
new file mode 100644
index 0000000..12489e6
Binary files /dev/null and b/1869_Remake/Assets/Graphics/HallOfFameScreen.png differ
diff --git a/1869_Remake/Assets/Graphics/Holzdampfschiff.png b/1869_Remake/Assets/Graphics/Holzdampfschiff.png
new file mode 100644
index 0000000..e0bf7c0
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Holzdampfschiff.png differ
diff --git a/1869_Remake/Assets/Graphics/Holzraum_Basis.png b/1869_Remake/Assets/Graphics/Holzraum_Basis.png
new file mode 100644
index 0000000..562d6af
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Holzraum_Basis.png differ
diff --git a/1869_Remake/Assets/Graphics/InfoScreen_Liverpool_Beispiel.png b/1869_Remake/Assets/Graphics/InfoScreen_Liverpool_Beispiel.png
new file mode 100644
index 0000000..285081a
Binary files /dev/null and b/1869_Remake/Assets/Graphics/InfoScreen_Liverpool_Beispiel.png differ
diff --git a/1869_Remake/Assets/Graphics/Introscreen_Artwork.png b/1869_Remake/Assets/Graphics/Introscreen_Artwork.png
new file mode 100644
index 0000000..e621f58
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Introscreen_Artwork.png differ
diff --git a/1869_Remake/Assets/Graphics/Introscreen_Musik.png b/1869_Remake/Assets/Graphics/Introscreen_Musik.png
new file mode 100644
index 0000000..879aae8
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Introscreen_Musik.png differ
diff --git a/1869_Remake/Assets/Graphics/Introscreen_Programmers.png b/1869_Remake/Assets/Graphics/Introscreen_Programmers.png
new file mode 100644
index 0000000..7be847b
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Introscreen_Programmers.png differ
diff --git a/1869_Remake/Assets/Graphics/Klipper.png b/1869_Remake/Assets/Graphics/Klipper.png
new file mode 100644
index 0000000..507d1f7
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Klipper.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_AnkerIcon_1.png b/1869_Remake/Assets/Graphics/MainScreen_AnkerIcon_1.png
new file mode 100644
index 0000000..d9694e7
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_AnkerIcon_1.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_AnkerIcon_2.png b/1869_Remake/Assets/Graphics/MainScreen_AnkerIcon_2.png
new file mode 100644
index 0000000..4c9e431
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_AnkerIcon_2.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_BuchIcon_1.png b/1869_Remake/Assets/Graphics/MainScreen_BuchIcon_1.png
new file mode 100644
index 0000000..d0e70d5
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_BuchIcon_1.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_BuchIcon_2.png b/1869_Remake/Assets/Graphics/MainScreen_BuchIcon_2.png
new file mode 100644
index 0000000..f382b25
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_BuchIcon_2.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_Frame.png b/1869_Remake/Assets/Graphics/MainScreen_Frame.png
new file mode 100644
index 0000000..1c6076e
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_Frame.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_GeldSackIcon_1.png b/1869_Remake/Assets/Graphics/MainScreen_GeldSackIcon_1.png
new file mode 100644
index 0000000..a3dffc3
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_GeldSackIcon_1.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_GeldSackIcon_2.png b/1869_Remake/Assets/Graphics/MainScreen_GeldSackIcon_2.png
new file mode 100644
index 0000000..edc81c1
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_GeldSackIcon_2.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_MünzeIcon_1.png b/1869_Remake/Assets/Graphics/MainScreen_MünzeIcon_1.png
new file mode 100644
index 0000000..982741b
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_MünzeIcon_1.png differ
diff --git a/1869_Remake/Assets/Graphics/MainScreen_MünzeIcon_2.png b/1869_Remake/Assets/Graphics/MainScreen_MünzeIcon_2.png
new file mode 100644
index 0000000..4576ea3
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MainScreen_MünzeIcon_2.png differ
diff --git a/1869_Remake/Assets/Graphics/Max Design Introscreen.png b/1869_Remake/Assets/Graphics/Max Design Introscreen.png
new file mode 100644
index 0000000..c88ecfe
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Max Design Introscreen.png differ
diff --git a/1869_Remake/Assets/Graphics/MeeresKnoten.png b/1869_Remake/Assets/Graphics/MeeresKnoten.png
new file mode 100644
index 0000000..398dffd
Binary files /dev/null and b/1869_Remake/Assets/Graphics/MeeresKnoten.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Apr.png b/1869_Remake/Assets/Graphics/Monat_Apr.png
new file mode 100644
index 0000000..a6a427e
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Apr.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Aug.png b/1869_Remake/Assets/Graphics/Monat_Aug.png
new file mode 100644
index 0000000..5c2d45c
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Aug.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Dez.png b/1869_Remake/Assets/Graphics/Monat_Dez.png
new file mode 100644
index 0000000..2072b3b
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Dez.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Feb.png b/1869_Remake/Assets/Graphics/Monat_Feb.png
new file mode 100644
index 0000000..238b779
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Feb.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Jan.png b/1869_Remake/Assets/Graphics/Monat_Jan.png
new file mode 100644
index 0000000..073c803
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Jan.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Jul.png b/1869_Remake/Assets/Graphics/Monat_Jul.png
new file mode 100644
index 0000000..d191d55
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Jul.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Jun.png b/1869_Remake/Assets/Graphics/Monat_Jun.png
new file mode 100644
index 0000000..173b68b
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Jun.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Mar.png b/1869_Remake/Assets/Graphics/Monat_Mar.png
new file mode 100644
index 0000000..dc3d4c7
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Mar.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_May.png b/1869_Remake/Assets/Graphics/Monat_May.png
new file mode 100644
index 0000000..aa5c23f
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_May.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Nov.png b/1869_Remake/Assets/Graphics/Monat_Nov.png
new file mode 100644
index 0000000..89e7959
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Nov.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Oct.png b/1869_Remake/Assets/Graphics/Monat_Oct.png
new file mode 100644
index 0000000..01ff41a
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Oct.png differ
diff --git a/1869_Remake/Assets/Graphics/Monat_Sep.png b/1869_Remake/Assets/Graphics/Monat_Sep.png
new file mode 100644
index 0000000..327fd16
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Monat_Sep.png differ
diff --git a/1869_Remake/Assets/Graphics/OberKörper_1_Weste.png b/1869_Remake/Assets/Graphics/OberKörper_1_Weste.png
new file mode 100644
index 0000000..675bf41
Binary files /dev/null and b/1869_Remake/Assets/Graphics/OberKörper_1_Weste.png differ
diff --git a/1869_Remake/Assets/Graphics/OptionenScreen_Basis.png b/1869_Remake/Assets/Graphics/OptionenScreen_Basis.png
new file mode 100644
index 0000000..39b1e8b
Binary files /dev/null and b/1869_Remake/Assets/Graphics/OptionenScreen_Basis.png differ
diff --git a/1869_Remake/Assets/Graphics/Pfeil_hoch.png b/1869_Remake/Assets/Graphics/Pfeil_hoch.png
new file mode 100644
index 0000000..69ff841
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Pfeil_hoch.png differ
diff --git a/1869_Remake/Assets/Graphics/Pfeil_hoch_rot.png b/1869_Remake/Assets/Graphics/Pfeil_hoch_rot.png
new file mode 100644
index 0000000..a4fc140
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Pfeil_hoch_rot.png differ
diff --git a/1869_Remake/Assets/Graphics/Pfeil_runter.png b/1869_Remake/Assets/Graphics/Pfeil_runter.png
new file mode 100644
index 0000000..5f077a5
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Pfeil_runter.png differ
diff --git a/1869_Remake/Assets/Graphics/Pfeil_runter_rot.png b/1869_Remake/Assets/Graphics/Pfeil_runter_rot.png
new file mode 100644
index 0000000..afacf4f
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Pfeil_runter_rot.png differ
diff --git a/1869_Remake/Assets/Graphics/RoterTestBalken.png b/1869_Remake/Assets/Graphics/RoterTestBalken.png
new file mode 100644
index 0000000..843857e
Binary files /dev/null and b/1869_Remake/Assets/Graphics/RoterTestBalken.png differ
diff --git a/1869_Remake/Assets/Graphics/SchiffControllerIcon_Basis.png b/1869_Remake/Assets/Graphics/SchiffControllerIcon_Basis.png
new file mode 100644
index 0000000..1f511c5
Binary files /dev/null and b/1869_Remake/Assets/Graphics/SchiffControllerIcon_Basis.png differ
diff --git a/1869_Remake/Assets/Graphics/Schiffchen.png b/1869_Remake/Assets/Graphics/Schiffchen.png
new file mode 100644
index 0000000..406f804
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Schiffchen.png differ
diff --git a/1869_Remake/Assets/Graphics/Schoner.png b/1869_Remake/Assets/Graphics/Schoner.png
new file mode 100644
index 0000000..2388a36
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Schoner.png differ
diff --git a/1869_Remake/Assets/Graphics/StatistikenScreen_Basis.png b/1869_Remake/Assets/Graphics/StatistikenScreen_Basis.png
new file mode 100644
index 0000000..93eebfe
Binary files /dev/null and b/1869_Remake/Assets/Graphics/StatistikenScreen_Basis.png differ
diff --git a/1869_Remake/Assets/Graphics/Tafel_BG_Holz.png b/1869_Remake/Assets/Graphics/Tafel_BG_Holz.png
new file mode 100644
index 0000000..c679368
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Tafel_BG_Holz.png differ
diff --git a/1869_Remake/Assets/Graphics/Tafel_Vordergrund_1_FassSchwamm.png b/1869_Remake/Assets/Graphics/Tafel_Vordergrund_1_FassSchwamm.png
new file mode 100644
index 0000000..b81630d
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Tafel_Vordergrund_1_FassSchwamm.png differ
diff --git a/1869_Remake/Assets/Graphics/Tafel_basic.png b/1869_Remake/Assets/Graphics/Tafel_basic.png
new file mode 100644
index 0000000..2702f6b
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Tafel_basic.png differ
diff --git a/1869_Remake/Assets/Graphics/Tisch_1.png b/1869_Remake/Assets/Graphics/Tisch_1.png
new file mode 100644
index 0000000..7141289
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Tisch_1.png differ
diff --git a/1869_Remake/Assets/Graphics/Tisch_2_Holz_Basic.png b/1869_Remake/Assets/Graphics/Tisch_2_Holz_Basic.png
new file mode 100644
index 0000000..d098a83
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Tisch_2_Holz_Basic.png differ
diff --git a/1869_Remake/Assets/Graphics/TitleScreen.png b/1869_Remake/Assets/Graphics/TitleScreen.png
new file mode 100644
index 0000000..c1ecd1f
Binary files /dev/null and b/1869_Remake/Assets/Graphics/TitleScreen.png differ
diff --git a/1869_Remake/Assets/Graphics/Werft_Bau_Schiffsnamen.png b/1869_Remake/Assets/Graphics/Werft_Bau_Schiffsnamen.png
new file mode 100644
index 0000000..6fc54ee
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Werft_Bau_Schiffsnamen.png differ
diff --git a/1869_Remake/Assets/Graphics/Werft_Main_BG.png b/1869_Remake/Assets/Graphics/Werft_Main_BG.png
new file mode 100644
index 0000000..8873d48
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Werft_Main_BG.png differ
diff --git a/1869_Remake/Assets/Graphics/Werft_Reparatur_BG.png b/1869_Remake/Assets/Graphics/Werft_Reparatur_BG.png
new file mode 100644
index 0000000..a7710ce
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Werft_Reparatur_BG.png differ
diff --git a/1869_Remake/Assets/Graphics/Werft_SchiffstypAuswahl_BG.png b/1869_Remake/Assets/Graphics/Werft_SchiffstypAuswahl_BG.png
new file mode 100644
index 0000000..d052744
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Werft_SchiffstypAuswahl_BG.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_0.png b/1869_Remake/Assets/Graphics/Zahl_0.png
new file mode 100644
index 0000000..a59a1c9
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_0.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_1.png b/1869_Remake/Assets/Graphics/Zahl_1.png
new file mode 100644
index 0000000..b324647
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_1.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_2.png b/1869_Remake/Assets/Graphics/Zahl_2.png
new file mode 100644
index 0000000..3280773
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_2.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_3.png b/1869_Remake/Assets/Graphics/Zahl_3.png
new file mode 100644
index 0000000..f3e5741
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_3.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_4.png b/1869_Remake/Assets/Graphics/Zahl_4.png
new file mode 100644
index 0000000..3de29e1
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_4.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_5.png b/1869_Remake/Assets/Graphics/Zahl_5.png
new file mode 100644
index 0000000..309a1e6
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_5.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_6.png b/1869_Remake/Assets/Graphics/Zahl_6.png
new file mode 100644
index 0000000..19906e2
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_6.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_7.png b/1869_Remake/Assets/Graphics/Zahl_7.png
new file mode 100644
index 0000000..d36828a
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_7.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_8.png b/1869_Remake/Assets/Graphics/Zahl_8.png
new file mode 100644
index 0000000..58b45c8
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_8.png differ
diff --git a/1869_Remake/Assets/Graphics/Zahl_9.png b/1869_Remake/Assets/Graphics/Zahl_9.png
new file mode 100644
index 0000000..7860c3c
Binary files /dev/null and b/1869_Remake/Assets/Graphics/Zahl_9.png differ
diff --git a/1869_Remake/Assets/Graphics/worldmap_europa.png b/1869_Remake/Assets/Graphics/worldmap_europa.png
new file mode 100644
index 0000000..1ed68de
Binary files /dev/null and b/1869_Remake/Assets/Graphics/worldmap_europa.png differ
diff --git a/1869_Remake/Assets/Music/Title.ogg b/1869_Remake/Assets/Music/Title.ogg
new file mode 100644
index 0000000..5486ef8
Binary files /dev/null and b/1869_Remake/Assets/Music/Title.ogg differ
diff --git a/1869_Remake/Entities/AnimatingEntity.cs b/1869_Remake/Entities/AnimatingEntity.cs
new file mode 100644
index 0000000..536124d
--- /dev/null
+++ b/1869_Remake/Entities/AnimatingEntity.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Entities
+{
+ public class AnimatingEntity : Entity
+ {
+
+
+ enum Animation
+ {
+ BackGround
+ }
+
+ Spritemap spritemap = new Spritemap(Assets.SPRITESHEET_MEER, 640, 480);
+ public AnimatingEntity(float x, float y) : base(x, y)
+ {
+ spritemap.Add(Animation.BackGround, "0,1,2,3,4,5,6,7,8,9,10,11", 8);
+
+ spritemap.Play(Animation.BackGround);
+
+ AddGraphic(spritemap);
+ }
+
+
+
+ }
+}
diff --git a/1869_Remake/Entities/Filiale.cs b/1869_Remake/Entities/Filiale.cs
new file mode 100644
index 0000000..34d018d
--- /dev/null
+++ b/1869_Remake/Entities/Filiale.cs
@@ -0,0 +1,174 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+using _1869_Remake.Entities;
+
+namespace _1869_Remake.Entities
+{
+ public class Filiale : Entity
+ {
+
+ public Hafen HEIMATHAFEN;
+ public int BUDGET { get; private set; }
+ int KOSTEN;
+ public Spieler BESITZER;
+ public List LAGER = new List();
+
+
+ //Standardkonstruktor
+ public Filiale()
+ {
+
+ }
+
+
+ //Parameterkonstruktor
+ public Filiale(Hafen Heimat, Spieler Gründer, int laufendeKosten)
+ {
+ this.HEIMATHAFEN = Heimat;
+ this.BESITZER = Gründer;
+ this.KOSTEN = laufendeKosten;
+ // Immer Startkapital von 0 ausgehen
+ this.BUDGET = 0;
+ }
+
+ //Kopierkonstruktor
+ public Filiale(Filiale KopierFiliale)
+ {
+ this.HEIMATHAFEN = KopierFiliale.HEIMATHAFEN;
+ this.BESITZER = KopierFiliale.BESITZER;
+ this.BUDGET = KopierFiliale.BUDGET;
+ this.KOSTEN = KopierFiliale.KOSTEN;
+
+ this.LAGER = KopierFiliale.LAGER;
+
+ }
+
+ //allgemeine Geld methoden
+ public void erhöheBudget(int geldbetrag)
+ {
+ BUDGET += geldbetrag;
+ }
+
+ public void verringereBudget(int geldbetrag)
+ {
+ BUDGET -= geldbetrag;
+ }
+
+ //Warenverwaltungsmethoden
+ public void einlagernWare(Ware ware)
+ {
+ // Einlagerung von Waren benötigt immer die effektiv erzeugte Ware
+ Ware TempWare = new Ware(ware);
+
+ //Wenn Warentyp bereits vorhanden wird die Menge dieser ware hinzugefügt
+ if (ware.istVerderblich())
+ {
+ // Sonderlogik bei verderblicher Ware
+ // To Do: Implementieren / durchdenken!!
+ }
+ else
+ {
+ bool WareGefunden = false;
+ foreach (Ware item in LAGER)
+ {
+ if (ware.BEZEICHNUNG == item.BEZEICHNUNG)
+ {
+ //Ware mit diesem Namen gefunden -> Menge erhöhen
+ WareGefunden = true;
+ item.MENGE += ware.MENGE;
+ //Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
+ break;
+ }
+ }
+ if (!WareGefunden)
+ {
+ // Wenn es diese Ware noch nicht im Lager gab wird sie neu Eingelagert
+ LAGER.Add(TempWare);
+ }
+ }
+
+
+ }
+
+ public void AuslagernnWare(string WarenName, int Menge)
+ {
+ bool verderblich = false;
+
+ // Vorabcheck ob Ware existiert und ob diese verderblich ist
+ foreach (Ware item in LAGER)
+ {
+ if (item.BEZEICHNUNG == WarenName)
+ {
+ verderblich = item.istVerderblich();
+ //Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
+ break;
+ }
+ }
+
+ if (verderblich)
+ {
+ // Sonderlogik bei verderblicher Ware
+ // To Do: Implementieren / durchdenken!!
+ }
+ else
+ {
+ foreach (Ware item in LAGER)
+ {
+ if (item.BEZEICHNUNG == WarenName)
+ {
+ // Angefragte Menge Reduzieren
+ // Wenn nicht mehr genug ware vorhanden ist wird null ausgegeben
+ if (item.MENGE - Menge < 0)
+ {
+ // Wenn auszulagernder Menge unter 0 ist ist ein fehler Passiert ergo nichts tun!
+ }
+ else
+ {
+ item.MENGE -= Menge;
+ // Wenn wir mit der Auslagerung das Lager geleert haben wird es aus dem Bestand genommen
+ if (item.MENGE == 0)
+ LAGER.Remove(item);
+ }
+ //Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
+ break;
+ }
+ }
+
+ }
+
+ }
+
+ public void LaufendeKostenAbziehen()
+ {
+ bool filialSchließung = false;
+ // diese Funktion wird abgerufen wenn die Kosten für den filialbetrieb fällig werden -> Hier kann eine Filial Schließung veranlasst werden
+ if (BUDGET >= KOSTEN)
+ {
+ // Laufendekosten können regulär abgezogen werden
+ BUDGET -= KOSTEN;
+
+ }
+ else
+ {
+ // Laufende Kosten übersteigen
+ BUDGET -= KOSTEN;
+ // Wegen übersteigender Kosten sind alle Waren verloren und filiale wird geschlossen
+ schließeFiliale();
+ this.RemoveSelf();
+ }
+ }
+
+ public void schließeFiliale()
+ {
+
+ BESITZER.schließtFiliale(this);
+
+ }
+
+ }
+}
diff --git a/1869_Remake/Entities/Hafen.cs b/1869_Remake/Entities/Hafen.cs
new file mode 100644
index 0000000..696500d
--- /dev/null
+++ b/1869_Remake/Entities/Hafen.cs
@@ -0,0 +1,711 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+using _1869_Remake.Scenes;
+
+
+namespace _1869_Remake.Entities
+{
+ public class Hafen : Entity
+ {
+ //ToDo Waren Restock logik ausbauen -> Wie wird Schablone Daten entnommen sodass wir oder Hafen weiß welche Waren zu welchem Einkaufspreis in welcher Menge zu welchem Monat nachgefüöllt werden
+ public string NAME { get; set; }
+ public string KÖNIGREICH { get; set; }
+
+ //Mögliches Feature an dieser Stelle für das Remake -> Wandelnder Hauptexport und generell Wandelnde Export/Import Güter,
+ //je nachdem wie die Spieler diese Häfen mit Waren Versorgen
+ //Beispiel wenn Spieler A immer wieder zu den selben 3 Häfen fährt und die selben Rohstoffe liefert wird der Bedarf an diesen jeweiligen
+ //Waren gedeckt sein und der Verkaufspreis sinkt bis hin zu keinem Import dieser Ware mehr
+ //Dieses Feature würde dazu führen, dass die Spieler Überlegen müssen wo sie hinfahren und wie oft sie dort hinfahren
+ //Nachteil -> sehr feines Balancing notwendig da eine Art Grundbedarf von Gütern für ein Land eingebaut werden muss
+ //(Aber machbar da die Ur-Entwickler sich viel Mühe mit den historischen Daten gegeben haben -> die Bedürfnisse können davon extrahiert werden
+ public string HAUPTEXPORT { get; set; }
+ public string POLITIK { get; set; }
+
+ //Aktiv => wenn Symbolleiste nach einem Click auf Hafen für den Spieler angezeigt wird
+ // Wenn geklickt und nicht aktiv => anzeige des Infoscreens
+ public bool Aktiv;
+ public bool istAktivesSubelement = false;
+
+ //Um zu verhindern dass bei jedem Update die Icons immer wieder neu angezeigt werden wird einmalig anzeigeFertig gesetzt; Wenn False dann anzeige verändern
+ public bool anzeigeFertig;
+
+ public bool werftVorhanden;
+ public Dictionary SchiffsBauPipeline;
+
+ public bool filialeVorhanden;
+
+ public bool eigenesSchiffLiegtVorAnker;
+
+ //Liste aller aktuell im Hafen befindlicher Schiffe (Eventuel im Remake eine Kapazität für die Menge an Schiffen einbauen -> Nicht jeder Hafen kann unendlich viele Schiffe herbergen)
+ public List angedockteSchiffe = new List();
+ public int anzahlEigenerSchiffe = 0;
+
+ //Liste aller Filialen in diesem Hafen
+ public List vorhandeneFilialen = new List();
+
+ //Jeder Hafen hat ein internes Lager. Bei Start und zeitlich getriggert werden Import und export waren mit festen mengen neu gesetzt
+ //Unterscheidung von Import schablonen und Export schablonen -> bei Nachfüllen muss über beide Listen gegangen werden
+ public List IMPORTWARE = new List();
+ public Dictionary> RESTOCKSCHABLONEIMPORT = new Dictionary>();
+ public List EXPORTWARE = new List();
+ public Dictionary> RESTOCKSCHABLONEEXPORT = new Dictionary>();
+
+
+ public Image InfoIcon = new Image(Assets.HAFENINFO);
+ public Image WerftIcon = new Image(Assets.HAFENWERFT);
+ public Image BarIcon = new Image(Assets.HAFENBAR);
+ public Image FilialeIcon = new Image(Assets.HAFENFILIALE);
+ public Image Fähnchen = new Image(Assets.HAFENFAHNE);
+ public Image Schiffchen = new Image(Assets.HAFENSCHIFF);
+
+ public Image InfoScreen = new Image(Assets.MAINSCREEN_INFO_SCHABLONE);
+
+ private bool FadeOutAktiv = false;
+ private string FadeOutZiel;
+ private string FadeOutParam;
+ public Image BlackScreen = new Image(Assets.BLACKSCREEN);
+
+
+ public Hafen()
+ {
+
+ }
+
+ public Hafen(string Name, string Land, int xPos, int yPos, bool Werft)
+ {
+ this.NAME = Name;
+ this.KÖNIGREICH = Land;
+
+ Aktiv = false;
+ anzeigeFertig = true;
+ werftVorhanden = Werft;
+
+ //Position auf der Weltkarte -> aus der Position erstellt die Weltkarte die Clickbereiche
+ this.X = xPos;
+ this.Y = yPos;
+
+ InfoIcon.X = -60;
+ InfoIcon.Y = -60;
+ InfoIcon.Alpha = 0;
+ AddGraphics(InfoIcon);
+
+ BarIcon.X = -20;
+ BarIcon.Y = -60;
+ BarIcon.Alpha = 0;
+ AddGraphics(BarIcon);
+
+ //Pauschales hinzufügen des Filialen Icons damit dieses später bei Bedarf eingeblendet werden kann
+ if (Werft)
+ {
+
+ WerftIcon.X = 20;
+ WerftIcon.Y = -60;
+ WerftIcon.Alpha = 0;
+ AddGraphics(WerftIcon);
+
+ //Filialne Icon
+ FilialeIcon.X = 60;
+ }
+ else
+ {
+ FilialeIcon.X = 20;
+ }
+
+ FilialeIcon.Y = -60;
+ FilialeIcon.Alpha = 0;
+ AddGraphics(FilialeIcon);
+
+ //Immer an de selben Position rendern nicht relativ zum Hafen selbst
+ InfoScreen.Relative = false;
+ InfoScreen.X = 50;
+ InfoScreen.Y = 55;
+ InfoScreen.Alpha = 0;
+ AddGraphics(InfoScreen);
+
+ //Fähnchen wenn man eine Filiale in dem Hafen besitzt
+ Fähnchen.X = 5;
+ Fähnchen.Y = -17;
+ Fähnchen.Alpha = 0;
+ AddGraphic(Fähnchen);
+
+ //Schiffchen Icon setzen (Hat eigene Position je nachdem welcher Hafen das ist)
+ #region SchiffchenPositionen je Hafen
+ switch (NAME)
+ {
+ //Amerika
+ case "SAN FRANZISKO":
+ break;
+ case "NEW ORLEANS":
+ break;
+ case "SAVANNAH":
+ break;
+ case "NEW YORK":
+ break;
+ case "LOS ANGELES":
+ break;
+ case "PUERTO BELLO":
+ break;
+ case "CEYENNE":
+ break;
+ case "CALLAO":
+ break;
+ case "ARICA":
+ break;
+ case "RIO DE JANEIRO":
+ break;
+ //Afrika
+ case "AKKRA":
+ break;
+ case "LAGOS":
+ break;
+ case "LUANDA":
+ break;
+ case "KAPSTADT":
+ break;
+ case "MOCAMBIQUE":
+ break;
+ case "TANGA":
+ break;
+ case "PORT SAID":
+ break;
+ case "ADEN":
+ break;
+ case "TUNIS":
+ break;
+ //Europa
+ case "ODESSA":
+ break;
+ case "TRIEST":
+ break;
+ case "BARCELONA":
+ break;
+ case "LISSABON":
+ break;
+ case "LE HAVRE":
+ break;
+ case "AMSTERDAM":
+ break;
+ case "HAMBURG":
+ break;
+ case "LONDON":
+ break;
+ case "LIVERPOOL":
+ setzeSchiffsIcon(-30, -5);
+ break;
+ //Asien/Australien
+ case "DIU":
+ break;
+ case "BOMBAY":
+ break;
+ case "COLOMBO":
+ break;
+ case "RANGOON":
+ break;
+ case "MACAO":
+ break;
+ case "SHANGHAI":
+ break;
+ case "SINGAPORE":
+ break;
+ case "MANDAO":
+ break;
+ case "PERTH":
+ break;
+ case "MELBOURNE":
+ break;
+ case "SIDNEY":
+ break;
+ }
+ #endregion
+
+ Globals.registriereEntität(this);
+
+ }
+
+
+
+ public override void Update()
+ {
+ base.Update();
+ //TODO: KlickLogik anpassen wegen SubElement aktiv (Darf immer nur ein Element geklickt und aktiv geschaltet werden)
+
+ //Einblenden der Icons
+ if (!anzeigeFertig)
+ {
+ //überprüfen was angezeigt werden muss => wenn spieler Filiale oder Schiff hier hat muss Hafenorte angezeigt werden(Icons) wenn nicht dann info screen
+ if (Aktiv)
+ {
+ //anzeige der Icons
+ InfoIcon.Alpha = 1;
+
+ BarIcon.Alpha = 1;
+
+ if (werftVorhanden)
+ {
+ WerftIcon.Alpha = 1;
+ }
+ if (filialeVorhanden)
+ {
+ FilialeIcon.Alpha = 1;
+ }
+
+ }
+ else
+ {
+ //InfoScreen anzeige
+ InfoScreen.Alpha = 1;
+ //Während Infoscreen keine Fähnchen oder Schiffchen anzeigen (Global)
+ for (int index = 0; index < Globals.AlleHäfen.Count(); index++)
+ {
+ Globals.AlleHäfen.ElementAt(index).Value.Fähnchen.Alpha = 0;
+ Globals.AlleHäfen.ElementAt(index).Value.Schiffchen.Alpha = 0;
+ }
+
+ }
+
+ //Wenn alles aktiviert dann nicht wieder Zeichnen
+ anzeigeFertig = true;
+
+ }
+
+ //Click auf den Hafen verursacht anzeige von Icons oder Infoscreen zu Hafen
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, X - 10, Y - 10, 20, 20))
+ {
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released && !Globals.DisplaySubElementAktiv && !Aktiv)
+ {
+ Console.Clear();
+ Console.WriteLine("Hafen " + NAME + " geclicked! ");
+
+ if (checkVerfügbareIcons(Globals.AktuellerSpieler))
+ {
+ this.FadeOutZiel = "Handel";
+ this.FadeOutParam = this.NAME;
+
+
+ this.FadeOutAktiv = true;
+ //Wenn Wechsel zu andereer Szene werden Fähnchen und Schiffchen nicht angezeigt
+ for (int index = 0; index < Globals.AlleHäfen.Count(); index++)
+ {
+ Globals.AlleHäfen.ElementAt(index).Value.Fähnchen.Alpha = 0;
+ Globals.AlleHäfen.ElementAt(index).Value.Schiffchen.Alpha = 0;
+ }
+
+ }
+ else
+ {
+ //Infoscreen wird geladen Wenn Linksklick ohne Filiale oder Schiff im Hafen
+ anzeigeFertig = false;
+ Aktiv = false;
+ for (int index = 0; index < Globals.AlleHäfen.Count(); index++)
+ {
+ Globals.AlleHäfen.ElementAt(index).Value.Fähnchen.Alpha = 0;
+ Globals.AlleHäfen.ElementAt(index).Value.Schiffchen.Alpha = 0;
+ }
+
+ }
+ //Wenn kein SubelementAktiv ist und dieser Hafen aktiviert wurde muss globale Klick Logik auf dieser Entitäten Fokusiert bleiben
+ Globals.DisplaySubElementAktiv = true;
+ istAktivesSubelement = true;
+ }
+
+ if (Globals.PlayerSession.Controller.Button("MausRechts").Released && !Globals.DisplaySubElementAktiv && !Aktiv)
+ {
+ Console.Clear();
+ Console.WriteLine("Hafen " + NAME + " geclicked! ");
+
+ //überprüfen, ob icons oder info angezeigt wird + überprüfen ob klickender hier eine filiale hat -> Wenn ja wird filiale Icon mit angezeigt
+ Aktiv = checkVerfügbareIcons(Globals.AktuellerSpieler);
+ anzeigeFertig = false;
+
+ //Wenn kein SubelementAktiv ist und dieser Hafen aktiviert wurde muss globale Klick Logik auf dieser Entitäten Fokusiert bleiben
+ Globals.DisplaySubElementAktiv = true;
+ istAktivesSubelement = true;
+
+ }
+
+ }
+ else
+ {
+ //Wenn nicht auf den Hafen geklickt -> erst überprüfen ob Klick einem Icon galt (Wenn zu vor Icons angezeigt wurden)
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released && istAktivesSubelement)
+ {
+ if (Aktiv)
+ {
+ //Icons sind aktiv -> check, ob click einem Icon galt
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, X - 60, Y - 80, 40, 50) )
+ {
+ Console.WriteLine("Infoicon geklicked!");
+ anzeigeFertig = false;
+ Aktiv = false;
+ }
+
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, X - 20, Y - 80, 40, 50) )
+ {
+ Console.WriteLine("Baricon geklicked!");
+ this.FadeOutZiel = "Bar";
+ this.FadeOutParam = this.NAME;
+ this.FadeOutAktiv = true;
+
+ }
+
+ if (werftVorhanden)
+ {
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, X + 20, Y - 80, 40, 50) )
+ {
+ Console.WriteLine("Werfticon geklicked!");
+ this.FadeOutZiel = "Werft";
+ this.FadeOutParam = this.NAME;
+ this.FadeOutAktiv = true;
+
+ }
+ }
+
+ if (filialeVorhanden)
+ {
+ if (werftVorhanden)
+ {
+ //Rechte Filialposition (Wenn Werft dabei)
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, X + 60, Y - 80, 40, 50) )
+ {
+ Console.WriteLine("Filialeticon geklicked!");
+ this.FadeOutZiel = "Filiale";
+ this.FadeOutParam = this.NAME;
+ this.FadeOutAktiv = true;
+
+ }
+ }
+ else
+ {
+ //Linke Filialposition (wenn Werft nicht vorhanden)
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, X + 20, Y - 80, 40, 50))
+ {
+ Console.WriteLine("Filialeticon geklicked!");
+ this.FadeOutZiel = "Filiale";
+ this.FadeOutParam = this.NAME;
+ this.FadeOutAktiv = true;
+
+ }
+ }
+
+ }
+
+ Console.WriteLine("Hafen " + NAME + " weg geclicked! ");
+ filialeVorhanden = false; // check ob filiale hier wirklich deaktiviert wird!!!
+ Aktiv = false;
+
+ //Wenn weggeklickt wurde dann alle Graphicen unsichtbar schalten
+ InfoIcon.Alpha = 0;
+ BarIcon.Alpha = 0;
+ WerftIcon.Alpha = 0;
+ FilialeIcon.Alpha = 0;
+
+
+ }
+ else
+ {
+ //keine Icons wurden angezeigt -> Wegclicken des infoscreens
+ InfoScreen.Alpha = 0;
+ for (int index = 0; index < Globals.AlleHäfen.Count(); index++)
+ {
+ Globals.AlleHäfen.ElementAt(index).Value.aktiviereFähnchen(Globals.AktuellerSpieler);
+ Globals.AlleHäfen.ElementAt(index).Value.aktiviereSchiffsIcon(Globals.AktuellerSpieler);
+ }
+
+
+
+ }
+
+ //Wenn SubelementAktiv ist muss globale Klick Fokus wieder frei gegeben werden
+ Globals.DisplaySubElementAktiv = false;
+ istAktivesSubelement = false;
+
+ }
+ }
+ }
+
+ public void setzeRestockListe(string Monat, Ware Item, string richtung)
+ {
+ //Schablone wird nur einmal gesetzt in Config und bei Spielstandladung!!
+ //Überprüfung: Wenn einer neuen Monatsliste etwas hinzugefügt werden soll, muss diese erst erstellt werden
+ //TODO: Wenn Mitte des Monats sachen hinzugefügt werden sollen muss in Ware neues Feld"RestockTag" hinzugefügt und hier eine Routine zu dessen Verwaltung eingebaut werden
+ switch (richtung)
+ {
+ case "IMPORT":
+ if (!RESTOCKSCHABLONEIMPORT.ContainsKey(Monat))
+ {
+ RESTOCKSCHABLONEIMPORT.Add(Monat, new List());
+ }
+
+ RESTOCKSCHABLONEIMPORT[Monat].Add(Item);
+ break;
+ case "EXPORT":
+ if (!RESTOCKSCHABLONEEXPORT.ContainsKey(Monat))
+ {
+ RESTOCKSCHABLONEEXPORT.Add(Monat, new List());
+ }
+
+ RESTOCKSCHABLONEEXPORT[Monat].Add(Item);
+ break;
+ }
+
+ }
+
+ public void NeuAuffüllenLager(string reStockMonat)
+ {// jeder Hafen arbeitet mit der Logik, dass zu einem Gewissen Datum eine gewisse Ware um eine bestimmte Menge "restockt" wird
+ //-> Beispiel in Tunis wird Jeden Januar, April und Oktober Früchte nachgestockt und im März und September Pflanzen öl
+ // zu untersuchen gilt folgendes: Ändern sich die verkaufs/einkaufspreise bei den Waren wenn sie "Knapper" werden in HafenLager
+ // für restock balancing UNBEDINGT das Handbuch lesen-> Wahrscheinlich stehen hier tipps oder hinweise zu den Zyklen der Häfen drin !!!
+ // Was wann um wie viel aufgestockt wird, wird bei obj erstellung definiert
+ List TempWare;
+
+ //Hier werden alte Bestände gelöscht (Muss überprüft werden ob bei nicht verderblichen Waren nach ReStock die alte Menge noch existiert[würde Sinn machen da Maschinen nicht verderben])
+ //IMPORT-Schablonen
+ TempWare = new List(RESTOCKSCHABLONEIMPORT[reStockMonat]);
+ foreach (Ware item in TempWare)
+ {
+ //überprüfen ob noch Restbestände in der Liste sind( EVTL durch testen ob bei restmenge und nachstockung die Menge sich erhöht oder neu setzt auf default!!)
+ for (int i = 0; i < IMPORTWARE.Count(); i++)
+ {
+ Ware vergleichItem = IMPORTWARE[i];
+
+ if (vergleichItem.BEZEICHNUNG == item.BEZEICHNUNG)
+ {
+ IMPORTWARE.RemoveAt(i);
+ }
+ }
+
+ // Neu Hinzufügen der Schablone
+ IMPORTWARE.Add(new Ware(item));
+
+ }
+
+ //EXPORT-Schablonen
+ TempWare = new List(RESTOCKSCHABLONEEXPORT[reStockMonat]);
+ foreach (Ware item in TempWare)
+ {
+ //überprüfen ob noch Restbestände in der Liste sind( EVTL durch testen ob bei restmenge und nachstockung die Menge sich erhöht oder neu setzt auf default!!)
+
+ for (int i = 0; i < EXPORTWARE.Count(); i++)
+ {
+ Ware vergleichItem = EXPORTWARE[i];
+
+ if (vergleichItem.BEZEICHNUNG == item.BEZEICHNUNG)
+ {
+ EXPORTWARE.RemoveAt(i);
+ }
+ }
+
+ // Neu Hinzufügen der Schablone
+ EXPORTWARE.Add(new Ware(item));
+ }
+ }
+
+ public void politischeVeränderung(string Zustand)
+ {
+ switch (Zustand)
+ {
+ //Zustandsspezifische Ereignisse
+ case "STABIL": POLITIK = Zustand; break;
+ case "UNRUHEN": POLITIK = Zustand; break;
+ case "AUFSTÄNDE": POLITIK = Zustand; break;
+ case "KRIEG": POLITIK = Zustand; break;
+
+ }
+
+ }
+
+
+ private bool checkVerfügbareIcons(Spieler anfragenderSpieler)
+ {
+ // Methode zur ermittlung ob Icons oder info screen gezeigt wird
+ //True = Icons, False = Info
+
+ //Überprüfen aller Filialen im Hafen auf Besitzer
+ foreach (Filiale f in vorhandeneFilialen)
+ {
+ if (f.BESITZER == anfragenderSpieler)
+ {
+ filialeVorhanden = true;
+
+ return true;
+ }
+ }
+
+ //Überprüfen aller angedockten Schiffe auf deren Commandeure(Spielerzugehörigkeit)
+ foreach (Schiff s in angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == anfragenderSpieler)
+ {
+ eigenesSchiffLiegtVorAnker = true;
+ anzahlEigenerSchiffe++;
+
+ }
+ }
+
+ if (eigenesSchiffLiegtVorAnker)
+ return true;
+ else
+ return false;
+
+ }
+
+
+ public Filiale überprüfeAktuelleFilialeVorhanden(Spieler anfrageSpieler)
+ {
+ // Überprüfen ob eigene Filiale vorhanden ist
+ foreach (Filiale f in vorhandeneFilialen)
+ {
+ if (f.BESITZER == anfrageSpieler)
+ {
+ filialeVorhanden = true;
+ return f;
+ }
+ }
+ //Wenn es keine eigene aktive Filiale im Hafen gibt
+ filialeVorhanden = false;
+ return null;
+
+ }
+
+ public List überprüfeEigeneSchiffeVorhanden(Spieler anfrageSpieler)
+ {
+ //Überprüfen, ob und welche eigenen schiffe im Hafen angedockt sind
+ List Schiffsliste = new List();
+ foreach (Schiff s in angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == anfrageSpieler)
+ {
+ eigenesSchiffLiegtVorAnker = true;
+ Schiffsliste.Add(new Schiff(s));
+ }
+ }
+
+ if (Schiffsliste.Count() > 0)
+ return Schiffsliste;
+ else
+ //Wenn es keine eigene aktive Filiale im Hafen gibt
+ return null;
+
+ }
+
+ // Methode zur Verwaltung der Filialen im Hafen
+ public void filialenAktivität(int ereignis, Filiale betroffeneFiliale)
+ {
+ //Ereignis 1 => Filiale wird gegründet
+ //Rest => Filiale wird aufgelöst
+ if (ereignis == 1)
+ {
+ //Wenn Filiale noch nicht in der Liste -> gründung der Filiale
+ if (!vorhandeneFilialen.Contains(betroffeneFiliale))
+ {
+ vorhandeneFilialen.Add(betroffeneFiliale);
+ }
+
+ }
+ else
+ {
+ //Löschen der Filiale bei Auflösung
+ if (vorhandeneFilialen.Contains(betroffeneFiliale))
+ {
+ vorhandeneFilialen.Remove(betroffeneFiliale);
+ }
+
+
+ }
+
+ }
+
+ // Methode zur Verwaltung der Schiffe im Hafen
+ public void schiffsAktivität(string richtung, Schiff betroffenesSchiff)
+ {
+ //Richtung 1 => Schiff fährt in den Hafen
+ //Rest => Schiff fährt aus dem Hafen
+ if (richtung == "Einfahren")
+ {
+ //Schiff fährt in den Hafen => ist jetzt angedockt
+ //Überprüfung ob schiff bereits angedockt ist um fehler zu vermeiden
+ if (!angedockteSchiffe.Contains(betroffenesSchiff))
+ {
+ angedockteSchiffe.Add(betroffenesSchiff);
+ }
+
+ }
+ else
+ {
+ //Schiff fährt aus dem Hafen => ist nicht mehr angedockt
+ if (angedockteSchiffe.Contains(betroffenesSchiff))
+ {
+ angedockteSchiffe.Remove(betroffenesSchiff);
+ }
+
+
+ }
+
+ }
+
+ public void prüfeExternerFadeOut(out string Ziel, out string Param)
+ {
+ bool FadeOut = this.FadeOutAktiv;
+ if (FadeOut)
+ {
+ Ziel = this.FadeOutZiel;
+ Param = this.FadeOutParam;
+
+ }
+ else
+ {
+ Ziel = "Error";
+ Param = "Error";
+ }
+
+
+ }
+
+ public void resetFadeOut()
+ {
+ this.FadeOutAktiv = false;
+ }
+
+ public void aktiviereFähnchen(Spieler aktuellerSpieler)
+ {
+ //aktiviere das Fähnchen Symbol wenn eine Filiale für den Aktuellen Spieler im Hafen existiert
+ Fähnchen.Alpha = 0f;
+ foreach (Filiale f in vorhandeneFilialen)
+ {
+ if (f.BESITZER == aktuellerSpieler)
+ {
+ Fähnchen.Alpha = 1f;
+ break;
+ }
+ }
+ }
+
+ public void aktiviereSchiffsIcon(Spieler aktuellerSpieler)
+ {
+ //aktiviere das Schiffchen Symbol wenn mind. 1 Schiff des aktuellen Spielers im Hafen angedockt ist
+ Schiffchen.Alpha = 0f;
+ foreach (Schiff s in angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == aktuellerSpieler && s.inBau == false && s.inBereitstellung == false)
+ {
+ Schiffchen.Alpha = 1f;
+ break;
+ }
+ }
+ }
+
+ public void setzeSchiffsIcon(int xPos, int yPos)
+ {
+ Schiffchen.X = xPos;
+ Schiffchen.Y = yPos;
+ Schiffchen.Alpha = 0f;
+ AddGraphic(Schiffchen);
+ }
+
+ }
+}
diff --git a/1869_Remake/Entities/MeeresKnotenpunkt.cs b/1869_Remake/Entities/MeeresKnotenpunkt.cs
new file mode 100644
index 0000000..0460bc5
--- /dev/null
+++ b/1869_Remake/Entities/MeeresKnotenpunkt.cs
@@ -0,0 +1,71 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using _1869_Remake;
+using _1869_Remake.Entities;
+using Otter;
+
+namespace _1869_Remake.Entities
+{
+ public class MeeresKnotenpunkt : Entity
+ {
+ //ID_NAME_LAGE des Knotenpunktes
+ public string ORT;
+
+ //Liste aller mit diesem Punkt verbundenen Knotenpunkte
+ Dictionary, int> VERKNÜPFTESEESTRAßEN = new Dictionary, int>();
+
+ //zugehöriger Weltkartenteil und dessen Position (Da die Pos abhängig ist von Weltkarten teil aber der Punkt [z.b. Bei Auswahl] der gleiche bleibt)
+ Dictionary SCREENPOS_X;
+ Dictionary SCREENPOS_Y;
+
+ public Image Knoten;
+
+
+
+ public MeeresKnotenpunkt(string ort)
+ {
+ // Todo Vervollständigen
+ this.ORT = ort;
+
+ Knoten = new Image(Assets.ICON_MEERESKNOTEN);
+ Knoten.CenterOrigin();
+ Knoten.X = 0;
+ Knoten.Y = 0;
+
+ AddGraphic(Knoten);
+ Globals.registriereEntität(this);
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+
+ }
+
+ public void verlinkeSeeStraße(SeeStraße Route, int SpeedMultiplikator, string JahresZeit)
+ {// Eintragen der Seestraße (+ Jahreszeit wegen Strömungskarte) in Verbindung mit dessen SpeedMultiplikator (wenn gute Windverhältnisse die Reise begünstigen z.b.)
+ if (!VERKNÜPFTESEESTRAßEN.ContainsKey(new KeyValuePair(Route, JahresZeit)))
+ {
+ VERKNÜPFTESEESTRAßEN.Add(new KeyValuePair(Route, JahresZeit), SpeedMultiplikator);
+ }
+ }
+
+ public void wechsleWeltAnsicht(string Kontinent)
+ {
+ if (SCREENPOS_X.ContainsKey(Kontinent))
+ {
+ setzeNeueScreenPos(SCREENPOS_X[Kontinent], SCREENPOS_Y[Kontinent]);
+ }
+ }
+
+ public void setzeNeueScreenPos(int xPos, int yPos)
+ {
+ this.X = xPos;
+ this.Y = yPos;
+ }
+ }
+}
diff --git a/1869_Remake/Entities/Schiff.cs b/1869_Remake/Entities/Schiff.cs
new file mode 100644
index 0000000..5484c74
--- /dev/null
+++ b/1869_Remake/Entities/Schiff.cs
@@ -0,0 +1,485 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Entities
+{
+ public class Schiff : Entity
+ {
+ //Eventuell eine Auflistung machen von den Verschiedenen Schiffstypen hier und andere Entitäten davon objekte erstellen lassen
+ //Hinweis: Wenn waren eingeladert/ausgelagert werden, die NICHT verderblich sind kann gefahrlos immer nur ein Objekt dieser Ware in der Ladeliste stehen bleiben.
+ //Problematisch wird es bei Verderblichen Sachen -> Hier muss mit dem Verderblich kennzeichen der Ware gearbeitet werden damit bei Ankauf und Verkauf der Ware richtiges Handling stattfindet
+ //-> Bei einkauf: Immer neue Objekte erstellen und Einkaufspreis ist abhängig von Verderbtheitsgrad
+ //-> Bei Verkauf: Durchlauf der gesamten Ware und verkauf aller Exemplare dieser Ware; Verkaufspreis ist wie bei Einkaufspreis abhängig von Verderbtheitsgrad -> Alle Warenexemplare müssen mit ihrem jeweiligen Verderbtheitsmultiplikator verrechnet werden und als Angebotspreis angeboten werden.
+ //-> Preisberechnung sollte immer vom Hafen aus erfolgen um Kosten/Wert zentral berechnen zu lassen
+
+ //-> Schiffe sind wie eigene Filiale, die aber nicht Hafengebunden sind (und eventuell Kampfgefährt im Freibeuter modus)
+
+ #region Schiffsbasis Vars
+ // Name des Schiffs
+ public string NAME;
+ // Besitzer des Schiffs
+ public Spieler COMMANDEUR;
+
+ //Zustandseigenschaften des Schiffs
+ // SCHIFFSTYP beschreibt die Art von Schiff -> Es gibt unterkategorien jedoch wird der hier eingetragene Wert größtenteils generalisiert
+ public string SCHIFFSTYP;
+ // Mögliche Baumaterialien
+ // HOLZ
+ // EISEN
+ public string BAUMATERIAL;
+ //Anzahl Kabinen für Passagiere
+ public int KABINEN;
+ //Größe des Lagerraums(in Tonnen)
+ public int LADERAUM;
+ // Bauzeit -> Wird von Werftklasse benötigt für ermittlung der benötigten Bauzeit
+ public int LIEFERZEIT;
+ // Wird bei errichten des Schiffes gesetzt und be jedem Jahr hochgezählt -> Schiffe mit hohem alter haben höhere Wahrscheinlichkeit kaputt zu gehen
+ public int ALTER;
+ // Maximal Mögliche Geschwindigkeit (Ohne Abzüge durch äußere Einflüsse)
+ public int OPTIMALSPEED;
+ //Altags-Schiffszustände
+ public int ZUSTAND_GEFLUTET;
+ public int ZUSTAND_VERMUSCHELT;
+ public int ZUSTAND_TAKELAGE;
+ public string angedocktAnHafen;
+ public DateTime FERTIGSTELLUNGSDATUM;
+ public bool inBau = false;
+ public bool inBereitstellung = false;
+ public bool inReparatur = false;
+ #endregion
+
+ #region Geldspezifischen Vars
+ // Neuwert, den Werften für das Bauen des Schiffes oder für ein <1 Jahre altes Schiff verlangen werden
+ public int NEUWERT;
+ public int ANZAHLUNGSPREIS;
+ // Tatsächliche Preis der zuletzt für dieses Schiff bezahlt wurde
+ public int VERKAUFSWERT;
+ // Kasse des Schiffs -> Hiervon wird Sold der Crew und geschäfte mit Häfen über das Schiff verrechnet
+ public int SCHIFFSBUDGET;
+ // Laufende Kosten durch Crew -> wenn Schiffsbudget nicht groß genug ist für nächste Reise wird crew streiken (Außnahme erste Reise nach Rekrutierung der Crew)
+ public int BESATZUNGSKOSTEN;
+ public int RESTBETRAGKAUFPREIS;
+ public bool bezahlt = false;
+ #endregion
+
+ #region Ladungsspezifische Vars
+ // Liste der geladenen Waren
+ public List LADUNG = new List();
+ #endregion
+
+ #region Mannschafts Vars
+ // Indikator, ob eine Crew vorhanden ist
+ public bool MANNSCHAFT_VORHANDEN;
+ public bool MANNSCHAFT_UNTERWEGS;
+ // Indikator, wie erfahren Crew ist -> Erfahrene Crew erhält weniger Malus auf Reise und nutzt das Schiff nicht so stark ab
+ public int MANNSCHAFT_ERFAHRUNG;
+ // Indikator, wie ausgelaugt Crew ist -> Wenn Fittness zu niedrig für nächste Reise, wird Crew streiken (Außnahme erste Reise nach Rektrutierung der Crew))
+ public int MANNSCHAFT_VITALITÄT;
+ // Indikator für Befehlsgewalt des Captains -> Je nach Abstufung wird Schiff schneller befördert oder nicht (schneller = mehr VITALITÄTSVERLUST & mehr Abnutzung)
+ public string KAPITÄNSORDER;
+ // Maximale Besatzungsgröße
+ public int MANNSCHAFT_MAXGRÖßE;
+ #endregion
+
+ //Standardkonstruktor
+ public Schiff()
+ {
+
+ }
+
+ //ParameterKontruktor
+ public Schiff(string Name, string Typ, int Alter, Spieler Commandeur = null)
+ {
+ this.NAME = Name;
+
+ this.ALTER = Alter;
+ if(ALTER > 0)
+ {
+ //Wenn Alter gesetzt ist muss das theoretische Fertigstellungsdatum errechnet werden
+ FERTIGSTELLUNGSDATUM = Globals.AktuellesDatum-new TimeSpan(ALTER*365,0,0,0);
+
+ }
+ if (Commandeur != null)
+ this.COMMANDEUR = Commandeur;
+
+ this.SCHIFFSTYP = Typ;
+ setzeSchiffsTypParameter(SCHIFFSTYP);
+
+ Globals.registriereEntität(this);
+
+ }
+
+ //Kopierkonstruktor
+ public Schiff(Schiff KopierSchiff)
+ {
+ this.NAME = KopierSchiff.NAME;
+ this.ALTER = KopierSchiff.ALTER;
+ if(COMMANDEUR != null)
+ this.COMMANDEUR = KopierSchiff.COMMANDEUR;
+ this.angedocktAnHafen = KopierSchiff.angedocktAnHafen;
+ this.SCHIFFSTYP = KopierSchiff.SCHIFFSTYP;
+ this.setzeSchiffsTypParameter(SCHIFFSTYP);
+ this.bezahlt = KopierSchiff.bezahlt;
+ this.FERTIGSTELLUNGSDATUM = KopierSchiff.FERTIGSTELLUNGSDATUM;
+ this.inBau = KopierSchiff.inBau;
+ this.inReparatur = KopierSchiff.inReparatur;
+
+ this.ZUSTAND_GEFLUTET = KopierSchiff.ZUSTAND_GEFLUTET;
+ this.ZUSTAND_TAKELAGE = KopierSchiff.ZUSTAND_TAKELAGE;
+ this.ZUSTAND_VERMUSCHELT = KopierSchiff.ZUSTAND_VERMUSCHELT;
+
+ this.SCHIFFSBUDGET = KopierSchiff.SCHIFFSBUDGET;
+ this.LADUNG = KopierSchiff.LADUNG;
+ this.BESATZUNGSKOSTEN = KopierSchiff.BESATZUNGSKOSTEN;
+
+ this.MANNSCHAFT_ERFAHRUNG = KopierSchiff.MANNSCHAFT_ERFAHRUNG;
+ this.MANNSCHAFT_VITALITÄT = KopierSchiff.MANNSCHAFT_VITALITÄT;
+ this.MANNSCHAFT_VORHANDEN = KopierSchiff.MANNSCHAFT_VORHANDEN;
+ this.MANNSCHAFT_UNTERWEGS = KopierSchiff.MANNSCHAFT_UNTERWEGS;
+ this.KAPITÄNSORDER = KopierSchiff.KAPITÄNSORDER;
+
+ }
+
+ public override void Update()
+ {
+ base.Update();
+ }
+
+ //Verwaltungsmethoden für Budget
+ public void erhöhenBudget(int Einnahmen)
+ {
+ SCHIFFSBUDGET += Einnahmen;
+ }
+
+ public void vermindernBudget(int Ausgaben)
+ {
+ SCHIFFSBUDGET -= Ausgaben;
+ }
+
+ public void initiereBau(DateTime FertigstellungAm)
+ {
+ //Funktion wird bei Bau des Schiffs aufgerufen um alles für den Bau festzusetzen
+ bezahlt = false;
+ inBau = true;
+ FERTIGSTELLUNGSDATUM = FertigstellungAm;
+ RESTBETRAGKAUFPREIS = NEUWERT - ANZAHLUNGSPREIS;
+
+ }
+
+ public void initiereBereitstellung(DateTime BereitstellungAm)
+ {
+ bezahlt = false;
+ inBereitstellung = true;
+ FERTIGSTELLUNGSDATUM = BereitstellungAm;
+ }
+
+ public void initiiereFertigstellung()
+ {
+ bezahlt = true;
+ inBau = false;
+ inBereitstellung = false;
+
+ }
+
+ public string schiffAbbezahlen(int GeldBetrag)
+ {
+ //Funktion wird aufgerufen um restbetrag zu tilgen (Aufrufendes Programm muss vorab abfangen, ob zu zahlender Betrag <= RESTBETRAGDESKAUFPREISES ist)
+ RESTBETRAGKAUFPREIS -= GeldBetrag;
+
+ if(RESTBETRAGKAUFPREIS > 0)
+ {
+ //Teilbetrag wurde getilgt
+ return "ERFOLG";
+ }
+ else
+ {
+ if (RESTBETRAGKAUFPREIS == 0)
+ {
+ //Schiff ist abbezahlt und bei erreichen des Datums wird schiff auf Spieler geschrieben
+ bezahlt = true;
+ return "ERFOLG_BEZAHLT";
+ }
+ else
+ {
+ //Falls man versucht hat mehr als den Restbetrag zu bezahlen
+ RESTBETRAGKAUFPREIS += GeldBetrag;
+ return "FEHLER";
+ }
+ }
+ }
+
+ public void setzeSchiffsTypParameter(string Typ)
+ {
+ //Hier werden alle Parameter des Schiffs gemäß seines Typs gesetzt
+ switch (Typ)
+ {
+ case "SCHONER":
+ KABINEN = 0;
+ MANNSCHAFT_MAXGRÖßE = 12;
+ LADERAUM = 300;
+ LIEFERZEIT = 78;
+ BAUMATERIAL = "HOLZ";
+ NEUWERT = 400000;
+ ANZAHLUNGSPREIS = 100000;
+ break;
+ case "BARK":
+ KABINEN = 0;
+ MANNSCHAFT_MAXGRÖßE = 14;
+ LADERAUM = 450;
+ LIEFERZEIT = 88;
+ BAUMATERIAL = "HOLZ";
+ NEUWERT = 600000;
+ ANZAHLUNGSPREIS = 150000;
+ break;
+ case "HOLZDAMPFSCHIFF":
+ KABINEN = 0;
+ MANNSCHAFT_MAXGRÖßE = 12;
+ LADERAUM = 399;
+ LIEFERZEIT = 85;
+ BAUMATERIAL = "HOLZ";
+ NEUWERT = 800000;
+ ANZAHLUNGSPREIS = 200000;
+ break;
+ case "EISENDAMPFSCHIFF":
+ KABINEN = 30;
+ MANNSCHAFT_MAXGRÖßE = 19;
+ LADERAUM = 699;
+ LIEFERZEIT = 104;
+ BAUMATERIAL = "EISEN";
+ NEUWERT = 1400000;
+ ANZAHLUNGSPREIS = 350000;
+ break;
+ case "BRIGG":
+ KABINEN = 0;
+ MANNSCHAFT_MAXGRÖßE = 19;
+ LADERAUM = 600;
+ LIEFERZEIT = 97;
+ BAUMATERIAL = "EISEN";
+ NEUWERT = 800000;
+ ANZAHLUNGSPREIS = 200000;
+ break;
+ case "FREGATTE":
+ KABINEN = 40;
+ MANNSCHAFT_MAXGRÖßE = 25;
+ LADERAUM = 999;
+ LIEFERZEIT = 123;
+ BAUMATERIAL = "EISEN";
+ NEUWERT = 1600000;
+ ANZAHLUNGSPREIS = 400000;
+ break;
+ case "KLIPPER":
+ KABINEN = 45;
+ MANNSCHAFT_MAXGRÖßE = 27;
+ LADERAUM = 1197;
+ LIEFERZEIT = 135;
+ BAUMATERIAL = "HOLZ";
+ NEUWERT = 1900000;
+ ANZAHLUNGSPREIS = 475000;
+ break;
+ }
+ }
+
+ //Verwaltungsmethoden für Waren (Überladung, damit man die Verwaltung sowohl mit dem Namen der Ware als auch mit der Ware selbst erledigen kann... jedenfalls beim Auslagern)
+ public void einlagernLadung(Ware neueWare)
+ {
+ // Einlagerung von Waren benötigt immer die effektiv erzeugte Ware
+ Ware TempWare = new Ware(neueWare);
+ //Überprüfen, ob dies hinzuzufügende Ware verderblich ist
+ if (neueWare.istVerderblich())
+ {
+ // Wenn ja, regulär hinzubuchen (verderbliche Ware verfolgt angepasste Logik)
+ // To Do: Einlagerlogik für verderbliche Ware implementieren
+ }
+ else
+ {
+ // Wenn Nein neue Ware wird erstellt und der Ladung hinzugefügt oder bei existierender Ware hinzugebucht
+ bool wareHinzugebucht = false;
+ foreach (Ware item in LADUNG)
+ {
+ if (item.BEZEICHNUNG == neueWare.BEZEICHNUNG)
+ {
+ item.MENGE += neueWare.MENGE;
+ wareHinzugebucht = true;
+ break;
+ }
+ }
+ if (!wareHinzugebucht)
+ {
+ LADUNG.Add(TempWare);
+ }
+
+ }
+
+
+ }
+ public void löscheLadung(string Ladung, int Menge)
+ {
+
+ // gegebenenfalls feature im Remake: Löschen der Ladung hat zeitaufwand(Eventuelle Dauer = 1 Tag in dem eventuell ausgeraubt werden kann)
+
+ bool verderblich = false;
+
+ // Vorabcheck ob Ware existiert und ob diese verderblich ist
+ foreach (Ware item in LADUNG)
+ {
+ if (item.BEZEICHNUNG == Ladung)
+ {
+ verderblich = item.istVerderblich();
+ //Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
+ break;
+ }
+ }
+
+ if (verderblich)
+ {
+ // Sonderlogik bei verderblicher Ware
+ // To Do: Implementieren / durchdenken!!
+ }
+ else
+ {
+ foreach (Ware item in LADUNG)
+ {
+ if (item.BEZEICHNUNG == Ladung)
+ {
+ // Angefragte Menge Reduzieren
+ // Wenn nicht mehr genug ware vorhanden ist wird null ausgegeben
+ if (item.MENGE - Menge < 0)
+ {
+ // Wenn auszulagernder Menge unter 0 ist ist ein fehler Passiert ergo nichts tun!
+ }
+ else
+ {
+ item.MENGE -= Menge;
+ // Wenn wir mit der Auslagerung das Lager geleert haben wird es aus dem Bestand genommen
+ if (item.MENGE == 0)
+ LADUNG.Remove(item);
+ }
+ //Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
+ break;
+ }
+ }
+
+ }
+
+ }
+
+
+ private void sortiereVerderblichListe()
+ {
+ //Aufspalten in 2 Listen(Verderbliche/normale Waren) -> am Ende wieder zusammen setzen (normale Waren werden an verderblichen drangehängt [damit die zuerst gelesen werden]
+ List TempListe = new List();
+ List VerderbListe = new List();
+
+ foreach (Ware item in LADUNG)
+ {
+ if (item.istVerderblich())
+ {
+ if (VerderbListe.Count() == 0)
+ {
+ VerderbListe.Add(item);
+ }
+ else
+ {
+ //Wenn Liste nicht leer ist -> Vergleiche MHDs miteinander und vorne/hinten anstellen (immer nur check erstes und letztes element weil rest bereits sortiert wurde
+ // schnelle sortiercodes gugen (ToDo)
+ }
+
+
+ }
+ else
+ {
+ //Wenn Ware nicht verderblich -> keine besondere Sortierlogik
+ TempListe.Add(item);
+ }
+
+ }
+ }
+
+ public void fahreInHafenEin(string HafenName)
+ {
+ angedocktAnHafen = HafenName;
+ }
+
+ public void fahreAusHafenHeraus()
+ {
+ if (angedocktAnHafen != "")
+ angedocktAnHafen = "";
+ }
+
+ public int verkaufsWertBestimmen()
+ {//Funktion ist vorgesehen für interner Verkaufswert zu bestimmen
+ // Wird erst eingebaut wenn schiffszustand(Reperaturen) implementiert sind und
+ // die Berechnung des Verkaufswertes vom schiff übernommen wird statt vom aufrufer
+
+ //Berechnung: (Neuwert/(Alter+1))*(100-Zustand des Schiffs in %)
+ return 0;
+ }
+
+ public void besatzungBereitstellen()
+ {
+ MANNSCHAFT_UNTERWEGS = true;
+ }
+
+ public void besatzungEinstellen(string BesatzungsTyp)
+ {
+ int PreisProNase = 0;
+ //Setzen der spezifischen Eigenschaften
+ switch (BesatzungsTyp)
+ {
+ case "SPITZE":
+ MANNSCHAFT_ERFAHRUNG = 100;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[0];
+ break;
+ case "ERFAHREN":
+ MANNSCHAFT_ERFAHRUNG = 90;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[1];
+ break;
+ case "TÜCHTIG":
+ MANNSCHAFT_ERFAHRUNG = 80;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[2];
+ break;
+ case "ZUVERLÄSSIG":
+ MANNSCHAFT_ERFAHRUNG = 70;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[3];
+ break;
+ case "STANDARD":
+ MANNSCHAFT_ERFAHRUNG = 60;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[4];
+ break;
+ case "FÄHIG":
+ MANNSCHAFT_ERFAHRUNG = 50;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[5];
+ break;
+ case "BRAUCHBAR":
+ MANNSCHAFT_ERFAHRUNG = 40;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[6];
+ break;
+ case "BILLIG":
+ MANNSCHAFT_ERFAHRUNG = 30;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[7];
+ break;
+ case "GRÜNSCHNABEL":
+ MANNSCHAFT_ERFAHRUNG = 20;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[8];
+ break;
+ case "IDIOTEN":
+ MANNSCHAFT_ERFAHRUNG = 10;
+ PreisProNase = Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[9];
+ break;
+ }
+ //Setzen Mannschaftskosten
+ this.BESATZUNGSKOSTEN = PreisProNase * MANNSCHAFT_MAXGRÖßE;
+
+ //Setzen der allgemeinen Eigenschaften
+ MANNSCHAFT_VORHANDEN = true;
+ MANNSCHAFT_UNTERWEGS = false;
+ MANNSCHAFT_VITALITÄT = 100;
+ KAPITÄNSORDER = "MITTEL";
+ }
+ }
+}
diff --git a/1869_Remake/Entities/SchiffsController.cs b/1869_Remake/Entities/SchiffsController.cs
new file mode 100644
index 0000000..c59f875
--- /dev/null
+++ b/1869_Remake/Entities/SchiffsController.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+using _1869_Remake.Scenes;
+
+namespace _1869_Remake.Entities
+{
+ public class SchiffsController
+ {
+ }
+}
diff --git a/1869_Remake/Entities/SeeStraße.cs b/1869_Remake/Entities/SeeStraße.cs
new file mode 100644
index 0000000..0138ea3
--- /dev/null
+++ b/1869_Remake/Entities/SeeStraße.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using _1869_Remake;
+using Otter;
+
+namespace _1869_Remake.Entities
+{
+ public class SeeStraße : Entity
+ {
+ public string BEZEICHNUNG;
+
+ bool toggleTransform = false;
+
+ // Berechnungsvariablen für Vectorrechnung
+ Vector2 VON_Punkt = new Vector2();
+ Vector2 NACH_Punkt = new Vector2();
+ Vector2 STRAßENVEKTOR = new Vector2();
+
+ public int SPEEDMULTIPLIKATOR;
+
+ public SeeStraße()
+ {
+ // To Do: Vervollständigen + Vektorquadrat zeichnen lassen von punkt A nach B in einer Farbe
+ }
+
+ public SeeStraße(string Name, int xPos_VON, int yPos_VON, int xPos_NACH, int yPos_Nach, int speedMultiplikator)
+ {
+ this.BEZEICHNUNG = Name;
+ this.X = xPos_VON;
+ this.Y = yPos_VON;
+
+ this.VON_Punkt.X = xPos_VON;
+ this.VON_Punkt.Y = yPos_VON;
+
+ this.NACH_Punkt.X = xPos_NACH;
+ this.NACH_Punkt.Y = yPos_Nach;
+
+ this.STRAßENVEKTOR = NACH_Punkt - VON_Punkt;
+
+ this.SPEEDMULTIPLIKATOR = speedMultiplikator;
+ Globals.registriereEntität(this);
+
+ }
+
+ public override void Render()
+ {
+ base.Render();
+
+ // Renderfunktion muss überschrieben werden, da das Zeichnen von Linien auf der Oberfläche extra gerendert werden muss neben den üblichen Grafiken
+ // sonst würde die Linie nur für einen Frame sichtbar sein (1/30 Sekunden)
+ if (toggleTransform)
+ {
+
+ // Linie wird vorbereitet und mit den Koordinaten des Von und Nach Punktes erstellt
+ Vertices StraßenLinie = new Vertices();
+ StraßenLinie.Add(VON_Punkt.X, VON_Punkt.Y);
+ StraßenLinie.Add(NACH_Punkt.X, NACH_Punkt.Y);
+ StraßenLinie.Color = Globals.MeeresRoutenRot;
+ StraßenLinie.Relative = false;
+ StraßenLinie.PrimitiveType = VertexPrimitiveType.Lines;
+
+ AddGraphic(StraßenLinie);
+ toggleTransform = false;
+ }
+
+
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+ if (Globals.PlayerSession.Controller.Button("R").Released)
+ {
+ if (!toggleTransform)
+ {
+
+ toggleTransform = true;
+ }
+ }
+
+ }
+
+ public void baueStraßeZuNächstemPunkt()
+ {
+
+ Console.WriteLine("Transformed");
+ }
+
+ }
+}
diff --git a/1869_Remake/Entities/Spieler.cs b/1869_Remake/Entities/Spieler.cs
new file mode 100644
index 0000000..e0fc93e
--- /dev/null
+++ b/1869_Remake/Entities/Spieler.cs
@@ -0,0 +1,184 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Entities
+{
+ public class Spieler : Entity
+ {
+
+ public String NAME { get; set; }
+ public String FIRMENNAME { get; set; }
+ public String GESCHLECHT { get; set; }
+ public int SPIELERINDEX { get; set; }
+
+ public int GELD_GESAMT { get; set; }
+
+ public List SCHIFFE = new List();
+
+ public List FILIALEN = new List();
+
+ public DateTime LetztesGeladenesDatum;
+
+ //Standartkonstruktor
+ public Spieler()
+ {
+
+ }
+
+ //Parameter Kontruktor mit Basisdaten
+ public Spieler(String Name, String FirmenName, String Geschlecht, int SpielerIndex)
+ {
+ this.NAME = Name;
+ this.FIRMENNAME = FirmenName;
+ this.GESCHLECHT = Geschlecht;
+ this.LetztesGeladenesDatum = new DateTime(1854, 1, 1);
+ this.SPIELERINDEX = SpielerIndex;
+ Globals.registriereEntität(this);
+
+ }
+
+ //Kopierkonstruktor
+ public Spieler(Spieler KopierSpieler)
+ {
+ this.NAME = KopierSpieler.NAME;
+ this.FIRMENNAME = KopierSpieler.FIRMENNAME;
+ this.GESCHLECHT = KopierSpieler.GESCHLECHT;
+ this.GELD_GESAMT = KopierSpieler.GELD_GESAMT;
+ this.SPIELERINDEX = KopierSpieler.SPIELERINDEX;
+
+ this.FILIALEN = KopierSpieler.FILIALEN;
+ this.SCHIFFE = KopierSpieler.SCHIFFE;
+
+ }
+
+ public override void Update()
+ {
+ base.Update();
+ }
+
+ //Geldmanagement Funktionen [Testfunktionen - Im Finalen Spiel muss gesamt geldbetrag aus summe aller Filialen, Krediten und Schiffen gezählt werden
+ public void erhältGeldBetrag(int GeldSumme)
+ {
+ this.GELD_GESAMT += GeldSumme;
+ }
+
+ public void verliertGeldBetrag(int GeldSumme)
+ {
+ this.GELD_GESAMT -= GeldSumme;
+ }
+
+ //Filialen Management Funktionen
+ public void gründetFiliale(Hafen HeimatHafen, int startBetrag)
+ {
+ Filiale f = new Filiale(HeimatHafen, this, 0);
+ f.erhöheBudget(startBetrag);
+
+ FILIALEN.Add(f);
+
+ //Hafen updaten
+ Globals.AlleHäfen[f.HEIMATHAFEN.NAME].filialenAktivität(1, f);
+
+ }
+
+ public void schließtFiliale(Filiale filiale)
+ {
+ if (this.FILIALEN.Contains(filiale))
+ {
+
+ FILIALEN.Remove(filiale);
+ Globals.AlleHäfen[filiale.HEIMATHAFEN.NAME].filialenAktivität(0, filiale);
+ }
+ }
+
+ //Schiff Management Funktionen
+ public void erhalteSchiff(string startHafen, int TestIndex)
+ {//Testprozedur später ersetzen durch Schiffs Kopier funktion
+ Schiff TempSchiff;
+ switch (TestIndex)
+ {
+ case 1:
+ TempSchiff = new Schiff("MS.SMSMMS", "TESTSCHIFF", 0, this);
+ TempSchiff.fahreInHafenEin(startHafen);
+ TempSchiff.erhöhenBudget(50000);
+ break;
+ case 2:
+ TempSchiff = new Schiff("MS. AQUA", "TESTSCHIFF", 0, this);
+ TempSchiff.erhöhenBudget(150000);
+ TempSchiff.fahreInHafenEin(startHafen);
+ break;
+ case 3:
+ TempSchiff = new Schiff("BLACK PEARL", "TESTSCHIFF", 0, this);
+ TempSchiff.erhöhenBudget(500000);
+ TempSchiff.fahreInHafenEin(startHafen);
+ break;
+ case 4:
+ TempSchiff = new Schiff("MS. TORPEDO", "TESTSCHIFF", 0, this);
+ TempSchiff.erhöhenBudget(1500000);
+ TempSchiff.fahreInHafenEin(startHafen);
+ break;
+ default:
+ TempSchiff = new Schiff("FLYING DUTCHMAN", "TESTSCHIFF", 0, this);
+ TempSchiff.erhöhenBudget(999999900);
+ TempSchiff.fahreInHafenEin(startHafen);
+ break;
+ }
+
+ TempSchiff.COMMANDEUR = this;
+ this.SCHIFFE.Add(TempSchiff);
+
+
+ }
+
+ public void erhalteSchiff(Schiff KopierSchiff)
+ {
+ //Schiff hat neuen Commandeur
+ Globals.AlleSchiffe[KopierSchiff.NAME].COMMANDEUR = this;
+ this.SCHIFFE.Add(KopierSchiff);
+ }
+
+
+ public void schiffLoswerden(Schiff ziel, bool anAktuellenHafen = false)
+ {
+ if (this.SCHIFFE.Contains(ziel))
+ {
+ SCHIFFE.Remove(ziel);
+ if (!anAktuellenHafen)
+ {
+ // Schiff in einem Hafen steht muss es auch aus den Hafen entfernt werden
+ if (ziel.angedocktAnHafen != "")
+ {
+ Globals.AlleHäfen[ziel.angedocktAnHafen].schiffsAktivität("Ausfahren", ziel);
+ }
+ }
+
+ }
+ }
+
+
+ // Hat Spieler eine Filiale in einem bestimmten Hafen
+ public bool HatFilialeIn(Hafen hafen)
+ {
+ foreach (Filiale f in FILIALEN)
+ {
+
+ if (f.HEIMATHAFEN.NAME == hafen.NAME)
+ {
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+ public void spielerDatumAktualisieren(DateTime letztesEventDatum)
+ {
+ //Aktualisieren des Datums des Spielers anhand des letzten Events das geladen wurde
+ this.LetztesGeladenesDatum = letztesEventDatum;
+ }
+ }
+}
diff --git a/1869_Remake/Entities/Ware.cs b/1869_Remake/Entities/Ware.cs
new file mode 100644
index 0000000..f93c50b
--- /dev/null
+++ b/1869_Remake/Entities/Ware.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Entities
+{
+ public class Ware : Entity
+ {
+ private static int ID_SequenzNr = 0;
+ public int ID;
+ public string BEZEICHNUNG;
+ public int MENGE;
+ public int LAGERPREIS;
+ public string LADEMITTEL;
+ bool VERDERBLICH = false;
+ public int MINDESTHALTBAR_BIS = 0;
+
+ //Standartkonstruktor
+ public Ware()
+ {
+
+ }
+
+ //Parameterkontruktor (Preis ist in Cent muss noch unterteilt werden in EURO und Cent -> Keine Berechnung von Float werten da noch abfragen auf Preise in Funktionen möglich sind)
+ public Ware(string Name,int lagerPreis, int EinkaufsMenge, int HaltbarkeitTage, string Lademittel)
+ {
+ this.ID = ID_SequenzNr++;
+ this.BEZEICHNUNG = Name;
+ this.LAGERPREIS = lagerPreis;
+ this.MENGE = EinkaufsMenge;
+ this.LADEMITTEL = Lademittel;
+ if(HaltbarkeitTage != 0)
+ {
+ this.VERDERBLICH = true;
+ this.MINDESTHALTBAR_BIS = HaltbarkeitTage;
+ }
+ else
+ {
+ this.VERDERBLICH = false;
+ this.MINDESTHALTBAR_BIS = 0;
+ }
+
+ Globals.registriereEntität(this);
+ }
+
+ //Kopierkonstruktor
+ public Ware(Ware KopierWare)
+ {
+ this.BEZEICHNUNG = KopierWare.BEZEICHNUNG;
+ this.MENGE = KopierWare.MENGE;
+ this.LAGERPREIS = KopierWare.LAGERPREIS;
+ this.LADEMITTEL = KopierWare.LADEMITTEL;
+ this.VERDERBLICH = KopierWare.VERDERBLICH;
+ this.MINDESTHALTBAR_BIS = KopierWare.MINDESTHALTBAR_BIS;
+
+ }
+
+ public bool istVerderblich()
+ {
+ return VERDERBLICH;
+ }
+ }
+}
diff --git a/1869_Remake/Entities/WeltEvent.cs b/1869_Remake/Entities/WeltEvent.cs
new file mode 100644
index 0000000..9dc58cb
--- /dev/null
+++ b/1869_Remake/Entities/WeltEvent.cs
@@ -0,0 +1,129 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Entities
+{
+ public class WeltEvent
+ {
+ // EventID um event eindeutig zu Kennzeichnen (Damit nicht 2mal das selbe event in der Queue steht)
+ //public int EventId { get; set; }
+
+ //Zeitvariablen, wann erfolgt das Ereignis
+
+ public DateTime EventDate { get; set; }
+
+ //Parameter des Events
+ // Betroffener Spieler (In Check-Reihenfolge)
+ // - System
+ // - Spieler1
+ // - Spieler2
+ // - Spieler3
+ // - Spieler4
+ public string BetroffenerSpielerName { get; set; }
+ public Spieler BetroffenerSpieler { get; set; }
+ public string BetreffenderFilialName { get; set; }
+ public Filiale BetroffeneFiliale { get; set; }
+ public string BetreffenderSchiffsName { get; set; }
+ public Schiff BetroffenesSchiff { get; set; }
+
+ // Allgemeine Parameterlisten mit genaueren Infos zur Handlung
+ public List ZahlenParams { get; set; }
+ public List StringParams { get; set; }
+
+ //Hier wird gespeichert, was mit den betroffenen Daten gemacht wird (Beispiel: FILIALE_VERRINGERN_GELD oder SPIELER_KREDIT_ZAHLTAG oder SCHIFF_REPERATUR_ABGESCHLOSSEN, etc)
+ //Verarbeitung erfolg über ZeitRad
+ /* Folgende Typen existieren:
+ * START -> Spielstart
+ * ENDE -> Spielende
+ * SCHIFFSREISE-ENDE
+ * SCHIFFSREISE-ÜBERFALL -> Jede Art von "Zwischenfall mit dem Schiff" (Überfall, Kanonade, Sturm etc)
+ * SCHIFFSREPARATUR-ENDE -> Reparatur ist abgeschlossen
+ * SCHIFFSBAU-ENDE -> Schiffsbau ist abgeschlossen
+ * POLITIKWECHSEL -> Politischer Zustand wechselt sich
+ * MONATSBEGIN -> Monatsbegin (wird verwendet zum triggern von Nachfülllogiken
+ */
+ public string EventHandlung { get; set; }
+ public int GeldBetrag { get; set; }
+
+ public WeltEvent()
+ {
+
+ }
+
+ ~WeltEvent()
+ {
+ //Objekt Test
+ //Console.WriteLine("WeltEvent wurde gelöscht ID: " + this.EventId);
+ }
+
+ public WeltEvent(DateTime EventZeitpunkt, String Handlung, Spieler ZielSpieler = null, Filiale ZielFiliale = null, Schiff ZielSchiff = null, Hafen ZielHafen = null, int EventBetrag = 0, List ZahlenParameter = null, List TextParameter = null)
+ {
+ this.EventDate = new DateTime(EventZeitpunkt.Year, EventZeitpunkt.Month, EventZeitpunkt.Day);
+
+ // Temporärer Key der im Anschluss um hochgezählte ID erweitert wird
+ //this.EventId = Jahr * 1000000 + Monat * 10000 + Tag * 100;
+
+ //Testausgabe
+ //Console.WriteLine("Event wurde erstellt ID: "+ EventId);
+
+ this.EventHandlung = Handlung;
+ if (ZielSpieler != null)
+ {
+ for(int spielerIndex = 0;spielerIndex < Globals.SpielerListe.Count();spielerIndex++)
+ {
+ if(Globals.SpielerListe[spielerIndex].NAME == ZielSpieler.NAME)
+ {
+ this.BetroffenerSpielerName = "Spieler" + (spielerIndex + 1).ToString();
+ this.BetroffenerSpieler = ZielSpieler;
+ }
+
+ }
+
+ }
+ else
+ {
+ this.BetroffenerSpielerName = "System";
+ }
+ if (ZielFiliale != null)
+ {
+ this.BetreffenderFilialName = ZielFiliale.HEIMATHAFEN.NAME;
+ this.BetroffeneFiliale = ZielFiliale;
+ }
+
+ if (ZielSchiff != null)
+ {
+ this.BetreffenderSchiffsName = ZielSchiff.NAME;
+ this.BetroffenesSchiff = ZielSchiff;
+ }
+
+ this.GeldBetrag = EventBetrag;
+ this.ZahlenParams = ZahlenParameter;
+ this.StringParams = TextParameter;
+ }
+
+ public WeltEvent(WeltEvent KopieEvent)
+ {
+ //this.EventId = KopieEvent.EventId;
+ this.EventDate = KopieEvent.EventDate;
+ this.EventHandlung = KopieEvent.EventHandlung;
+ this.BetroffenerSpielerName = KopieEvent.BetroffenerSpielerName;
+ this.BetroffenerSpieler = KopieEvent.BetroffenerSpieler;
+ this.BetreffenderFilialName = KopieEvent.BetreffenderFilialName;
+ this.BetroffeneFiliale = KopieEvent.BetroffeneFiliale;
+ this.BetreffenderSchiffsName = KopieEvent.BetreffenderSchiffsName;
+ this.BetroffenesSchiff = KopieEvent.BetroffenesSchiff;
+ this.GeldBetrag = KopieEvent.GeldBetrag;
+ this.ZahlenParams = KopieEvent.ZahlenParams;
+ this.StringParams = KopieEvent.StringParams;
+
+ //Testausgabe
+ //Console.WriteLine("Event Kopiert ID: "+EventId);
+ }
+
+ }
+}
diff --git a/1869_Remake/Entities/ZeitRad.cs b/1869_Remake/Entities/ZeitRad.cs
new file mode 100644
index 0000000..20d887d
--- /dev/null
+++ b/1869_Remake/Entities/ZeitRad.cs
@@ -0,0 +1,706 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Entities
+{
+ public class ZeitRad : Entity
+ {
+ // Zeitcontroller
+ // Funktioniert über eine Queue, die aus der globalen Eventliste Events pollt und deren Datum zum nächsten Datum schaltet.
+ // Wenn das Datum einen Monat über schreitet werden aus der globalen Hafen liste, alle Häfen entnommen und deren Nachstock funktion aktivert.
+ // Bei Erstellen der Häfen wurden Ihnen eine Nachstock Schablone implantiert -> In welchem Monat müssen welche Produkte mit welcher Menge nachgestockt werden !
+
+ public int startPosX = 478;
+ public int startPosY = 29;
+
+ private bool zeitRadClicked = false;
+ public bool ende = false;
+
+ //Zeitanzeiger
+ public int aktuellerTag_Z;
+ public int aktuellerTag_E;
+ public int aktuellerMonat;
+ public int aktuellesJahr_T;
+ public int aktuellesJahr_H;
+ public int aktuellesJahr_Z;
+ public int aktuellesJahr_E;
+
+ //HintergrundInfos
+ public Image BG_Tag_Z = new Image(Assets.BG_ZEITDISPLAY);
+ public Image BG_Tag_E = new Image(Assets.BG_ZEITDISPLAY);
+ public Image BG_Monat = new Image(Assets.BG_ZEIT_MONAT);
+ public Image BG_Jahr_T = new Image(Assets.BG_ZEITDISPLAY);
+ public Image BG_Jahr_H = new Image(Assets.BG_ZEITDISPLAY);
+ public Image BG_Jahr_Z = new Image(Assets.BG_ZEITDISPLAY);
+ public Image BG_Jahr_E = new Image(Assets.BG_ZEITDISPLAY);
+
+ //Zahlen anzeigen
+ public Image Zahl_Tag_Zehner = new Image(Assets.ZEITDISPLAY_0);
+ public Image Zahl_Tag_Einzel = new Image(Assets.ZEITDISPLAY_1);
+
+ public Image Zahl_Monat = new Image(Assets.ZEITDISPLAY_JAN);
+
+ public Image Zahl_Jahr_Tausend = new Image(Assets.ZEITDISPLAY_1);
+ public Image Zahl_Jahr_Hundert = new Image(Assets.ZEITDISPLAY_0);
+ public Image Zahl_Jahr_Zehner = new Image(Assets.ZEITDISPLAY_0);
+ public Image Zahl_Jahr_Einer = new Image(Assets.ZEITDISPLAY_0);
+
+
+ public Image FadeInBlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image FadeOutBlackScreen = new Image(Assets.BLACKSCREEN);
+
+ Schiff tempSchiff;
+
+ // Platzhalter Parameterlisten
+ List TempIntParamListe = new List();
+ List TempStringParamListe = new List();
+
+ public ZeitRad(bool fade)
+ {
+
+ this.X = startPosX;
+ this.Y = startPosY;
+
+
+ //Setzen des Aktuellen Datums
+ aktuellerTag_Z = Globals.AktuellerTag_Z;
+ aktuellerTag_E = Globals.AktuellerTag_E;
+ aktuellerMonat = Globals.AktuellerMonat;
+ aktuellesJahr_T = Globals.AktuellesJahr_T;
+ aktuellesJahr_H = Globals.AktuellesJahr_H;
+ aktuellesJahr_Z = Globals.AktuellesJahr_Z;
+ aktuellesJahr_E = Globals.AktuellesJahr_E;
+
+
+ //Vorbereiten der Grafiken (Positionen)
+ BG_Tag_Z.X = 0;
+ BG_Tag_Z.Y = 0;
+ BG_Tag_E.X = 18;
+ BG_Tag_E.Y = 0;
+ BG_Monat.X = 36;
+ BG_Monat.Y = 0;
+ BG_Jahr_T.X = 64;
+ BG_Jahr_T.Y = 0;
+ BG_Jahr_H.X = 82;
+ BG_Jahr_H.Y = 0;
+ BG_Jahr_Z.X = 100;
+ BG_Jahr_Z.Y = 0;
+ BG_Jahr_E.X = 118;
+ BG_Jahr_E.Y = 0;
+ if (fade)
+ {
+ //Für Fade in müssen alle Alphas langsam erhöht werden
+ BG_Tag_Z.Alpha = 0;
+ BG_Tag_E.Alpha = 0;
+ BG_Monat.Alpha = 0;
+ BG_Jahr_T.Alpha = 0;
+ BG_Jahr_H.Alpha = 0;
+ BG_Jahr_Z.Alpha = 0;
+ BG_Jahr_E.Alpha = 0;
+ }
+
+ AddGraphic(BG_Tag_Z);
+ AddGraphic(BG_Tag_E);
+ AddGraphic(BG_Monat);
+ AddGraphic(BG_Jahr_T);
+ AddGraphic(BG_Jahr_H);
+ AddGraphic(BG_Jahr_Z);
+ AddGraphic(BG_Jahr_E);
+
+ if (fade)
+ {
+ //Fade in
+ Tween(BG_Tag_Z, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ Tween(BG_Tag_E, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ Tween(BG_Monat, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ Tween(BG_Jahr_T, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ Tween(BG_Jahr_H, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ Tween(BG_Jahr_Z, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ Tween(BG_Jahr_E, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ }
+
+ //Vorbereiten des Blackscreens -> Entitäten brauchen auch Blackscreen Tween sonst bleibeb diese Sichtbar
+
+ FadeInBlackScreen.Alpha = 1f;
+ FadeInBlackScreen.X = 0;
+ FadeInBlackScreen.Y = 0;
+
+ Tween(FadeInBlackScreen, new { Alpha = 0f }, 100f, 0f).Ease(Ease.BackInOut);
+ AddGraphics(FadeInBlackScreen);
+
+ FadeOutBlackScreen.Alpha = 0f;
+ FadeOutBlackScreen.X = 0;
+ FadeOutBlackScreen.Y = 0;
+
+
+ }
+
+ public override void Render()
+ {
+ base.Render();
+
+ //Draw.Rectangle(this.X, this.Y, 135, 30);
+
+ }
+ public override void Update()
+ {
+ base.Update();
+
+ // ToDo weiter testen warum nach laden der weltkarte bereits events gelöscht wurden und warum danach spieler mit klicken auf zeitrad wieder altes event läd(start)
+ if (Util.InRect(this.Scene.MouseX, this.Scene.MouseY, this.X, this.Y, 135, 30) && !zeitRadClicked)
+ {
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ zeitRadClicked = true;
+ nächstesDatumLaden();
+ //anzeigeEvent();
+ }
+
+ }
+ }
+
+ private class EventSorter : IComparer
+ {
+ //Sortier Comparer -> Sortiert alle Events nach Datum (muss immer aufgerfen werden wenn datum abgefragt wird)
+ public int Compare(WeltEvent e1, WeltEvent e2)
+ {
+ if (e1.EventDate.CompareTo(e2.EventDate) == 0)
+ {
+ //Wenn beide Events gleich dann nach Spieler Sortieren
+ switch (e1.BetroffenerSpielerName)
+ {
+ case "System":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "System": return 0;
+ default: return -1;
+ }
+ case "Spieler1":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "System": return 1;
+ case "Spieler1": return 0;
+ default: return -1;
+ }
+
+ case "Spieler2":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "System": return 1;
+ case "Spieler1": return 1;
+ case "Spieler2": return 0;
+ default: return -1;
+ }
+ case "Spieler3":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "Spieler3": return 0;
+ case "Spieler4": return -1;
+ default: return 1;
+ }
+ case "Spieler4":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "Spieler4": return 0;
+ default: return 1;
+ }
+ default: return 0;
+ }
+ }
+ else
+ return e1.EventDate.CompareTo(e2.EventDate);
+ }
+ }
+
+ public void nächstesDatumLaden()
+ {
+ // Zuerst sortieren der Events
+ Globals.EventListe.Sort(new EventSorter());
+
+ //Einfügelogik:
+ // (Vorab) Überprüfen ob letztes Event jedes Spielers mehr als 20
+ for (int spielerIndex = 0; spielerIndex < Globals.SpielerListe.Count(); spielerIndex++)
+ {
+ DateTime vergleichsDatum = Globals.SpielerListe[spielerIndex].LetztesGeladenesDatum;
+
+ //Für jeden Spieler überprüfen ob innerhalb von 20 Tagen ein Event für diesen ansteht -> Wenn Nein einen Spielerwechsel einfügen
+ bool spielerHatEventIn20Tagen = false;
+ foreach (WeltEvent WE in Globals.EventListe)
+ {
+ if (spielerHatEventIn20Tagen)
+ {
+ //Spieler hat Event innerhalb von 20 Tagen
+ break;
+ }
+
+ if (WE.EventDate >= vergleichsDatum + (new TimeSpan(20, 0, 0, 0)))
+ {
+ //20 Tage überschritten ohne Event des Spielers
+ Globals.EventListe.Add(new WeltEvent(vergleichsDatum + (new TimeSpan(20, 0, 0, 0)), "SPIELERWECHSEL", Globals.SpielerListe[spielerIndex]));
+ Console.WriteLine("Spielerwechsel Event hinzugefügt für Spieler" + Globals.SpielerListe[spielerIndex].SPIELERINDEX + " für das Datum: " + (vergleichsDatum + (new TimeSpan(20, 0, 0, 0))).ToLongDateString());
+ Globals.EventListe.Sort(new EventSorter());
+ spielerHatEventIn20Tagen = true;
+ break;
+ }
+
+ if (WE.BetroffenerSpielerName == "Spieler" + (spielerIndex + 1).ToString())
+ {
+ spielerHatEventIn20Tagen = true;
+ }
+ }
+
+
+ }
+
+
+ bool ladevorgang = true;
+ bool spielerWechsel = false;
+
+ WeltEvent erstesTagesEvent = null;
+
+ while (ladevorgang)
+ {
+ //TODO Eventverarbeitungslogik überprüfen
+ // überprüfen ob wenn namen der spieler/Firmen gleich ob falsches laden passiert
+ // Eventladelogik im Augebehalten und später gründlich testen
+
+
+ // Verarbeitungsroutine:
+ // 1. nächsten Event laden (Wenn 1. geladenes event dann details des Events speichern)
+ WeltEvent tempEvent = Globals.EventListe[0];
+
+ // TestAusgabe
+ Console.WriteLine("Event geladen: " + Globals.EventListe[0].EventHandlung + " Eventbetroffener: " + Globals.EventListe[0].BetroffenerSpieler + " Datum: " + Globals.EventListe[0].EventDate.ToLongDateString());
+
+ // 2. überprüfen ob bei geladenem event alle kriterien erfüllt sind oder ladevorgang abgebrochen werden muss
+ // (System events verursachen keinen Stop des Ladevorgangs)
+ if (erstesTagesEvent != null)
+ {
+ //Da system Events immer durch gelesen werden und erst bei Spieler Events Ladeabbrüche auftreten können (außer beim finalen STOP-Event)
+ //wird das erste Tages event immer auf ein Spieler Event gesetzt
+ if (erstesTagesEvent.BetroffenerSpielerName == "System")
+ {
+ erstesTagesEvent = tempEvent;
+ }
+ }
+ else
+ {
+ erstesTagesEvent = tempEvent;
+ }
+
+ if (spielerWechsel)
+ {
+ //Wenn Spielerwechsel initiiert wurde muss überprüft werden ob nächstes Event noch der selbe Spieler und selber Tag ist
+ // -> Wenn Nein = Abbruch und laden des aktuellen spielers
+ if (tempEvent.BetroffenerSpieler != erstesTagesEvent.BetroffenerSpieler)
+ {
+ ladevorgang = false;
+ Console.WriteLine("Lade-Abbruch: Spielerwechsel wegen Laden eines anderen Spielers vollzogen zu Spieler: " + erstesTagesEvent.BetroffenerSpieler);
+ }
+
+
+ if (tempEvent.EventDate != erstesTagesEvent.EventDate)
+ {
+ ladevorgang = false;
+ Console.WriteLine("Lade-Abbruch: Spielerwechsel wegen Laden eines neuen Tages vollzogen zu Spieler: " + erstesTagesEvent.BetroffenerSpieler);
+ }
+ }
+
+ // 3. Event verarbeiten und aus der liste entfernen wenn Ladevorgang nicht abgebrochen wird
+ if (ladevorgang)
+ {
+ switch (tempEvent.EventHandlung)
+ {
+ case "START":
+ #region START-EVENT
+ //Startsetup wird gesetzt:
+ // - Häfen laden ihre Initialbestände und setzen ihre RestockEvents
+ // - StartEvents für alle Spieler werden erstellt
+ // - BasisEvents aller historischen Ereignisse werden erstellt
+ // - StartEvent einer Schiffsauktion (nur bei Mehrspieler wird gesetzt
+ setzeHistorischeEvents();
+ spielStart();
+ aktiviereTestEvents();
+ #endregion
+ break;
+ case "ENDE":
+ #region ENDE-Event
+ //Wenn Ende Event-> Game Over Screen wird geladen (ladevorgang wird abgebrochen, Gameoverscreen wird geladen)
+ //Hier Trigger für SzenenWechsel zu GameOverscreen veranlassen
+ ende = true;
+ ladevorgang = false;
+ #endregion
+ break;
+ case "SPIELERWECHSEL": spielerWechsel = true; break;
+ case "POLITIK":
+ #region POLITIK-EVENT
+ //Wenn politisches Event-> Zeitungsscreen wird geladen (ladevorgang wird abgebrochen, Zeitungsbildschirm geladen und nach rückkehr zu Worldmap wird nächstes datum erneut geladen)
+ //Hier Trigger für SzenenWechsel zu Zeitungsscreen veranlassen
+ //ladevorgang = false; -> wieder aktivieren wenn die bridge zwischen den screens erstellt ist!!!
+ #endregion
+ break;
+ case "SCHIFFBAU-FERTIGSTELLUNG":
+ #region SCHIFFBAU-FERTIGSTELLUNG
+ //Schiffbau Abbgeschlossen Event -> Es entscheidet anhand der Parameter wie der Bau genau abgeschlossen wird
+ //- Bezahlt/nicht bezahlt -> User behält Schiff oder Werft behält Schiff
+
+ bool istBezahlt = false;
+ if (tempEvent.StringParams != null && tempEvent.StringParams[0] == "BEZAHLT")
+ {
+ istBezahlt = true;
+ }
+
+ //betroffenes Schiff ermitteln (schiff muss jemandem gehören deshalb über bei spieler registrierten Schiffen)
+ tempSchiff = null;
+
+ //Alle Schiffe durchsuchen um betroffenes Schiff zu finden
+ if (Globals.AlleSchiffe[tempEvent.BetroffenesSchiff.NAME] != null)
+ {
+ tempSchiff = Globals.AlleSchiffe[tempEvent.BetroffenesSchiff.NAME];
+ }
+
+ //Schiff muss in fertigen Zustand versetzt werden
+ if (tempSchiff != null)
+ {
+ tempSchiff.initiiereFertigstellung();
+ }
+ else
+ {
+ //Fehler
+ Console.WriteLine("Fehler Schiffbereitstellung ohne Zielschiff");
+ }
+
+ if (istBezahlt)
+ {
+ spielerWechsel = true;
+ Globals.EventAktion(new WeltEvent(tempEvent.EventDate, "SPIELERWECHSEL", tempSchiff.COMMANDEUR), "EINFÜGEN");
+
+ }
+ else
+ {
+ //Wenn Schiff nich bezahlt wurde dann verliert Spieler das schiff
+ foreach (Spieler sp in Globals.SpielerListe)
+ {
+ if (sp == tempSchiff.COMMANDEUR)
+ {
+ sp.schiffLoswerden(tempSchiff, true);
+ tempSchiff.COMMANDEUR = null;
+ break;
+ }
+ }
+
+
+ }
+ #endregion
+ break;
+ case "SCHIFFBAU-BEREITSTELLUNG":
+ #region SCHIFFBAU-BEREITSTELLUNG
+ //Wenn Schiff gekauft/abbezahlt wurde
+
+ //Zuerst muss durchsucht werden ob in der Eventliste ein Schiffbau FertigstellungsDatum vorhanden ist
+ //Wenn ja -> dieses Event ist eine Abbezahlung und Bau ist noch nicht fertig!!
+
+ foreach (WeltEvent e in Globals.EventListe)
+ {
+ if (e.BetreffenderSchiffsName == tempEvent.BetreffenderSchiffsName
+ && e.EventHandlung == "SCHIFFBAU-FERTIGSTELLUNG")
+ {
+ //Abbezahlen mit fortsetzung Bau
+
+ //Kopieren der Eventdaten aus dem BereitstellungsEvent
+ //und übernahme des alten Events
+ if (e.StringParams == null)
+ {
+ e.StringParams = new List();
+ }
+ e.StringParams.Add("BEZAHLT");
+
+ }
+ }
+
+ #endregion
+ break;
+ case "MANNSCHAFT_BEREITSTELLUNG":
+ #region MANNSCHAFT-BEREITSTELLUNG
+ if (Globals.AlleSchiffe[tempEvent.BetroffenesSchiff.NAME] != null)
+ {
+ tempSchiff = Globals.AlleSchiffe[tempEvent.BetroffenesSchiff.NAME];
+ }
+ tempSchiff.besatzungEinstellen(tempEvent.StringParams[0]);
+ Globals.EventAktion(new WeltEvent(tempEvent.EventDate, "SPIELERWECHSEL", tempSchiff.COMMANDEUR), "EINFÜGEN");
+ #endregion
+ break;
+ case "REISE-START":
+ #region REISE-LOGIK
+ #endregion
+ break;
+ case "REISE-ANKUNFT":
+ #region REISE-LOGIK
+ #endregion
+ break;
+ //case-Fälle für neue Eventlogik hier erweitern
+ }
+ //Wenn Verarbeitung abgeschlossen -> Event wird aus der Eventliste gelöscht und die Liste wird neu sortiert
+ Globals.EventListe.RemoveAt(0);
+ Globals.EventListe.Sort(new EventSorter());
+ }
+ else
+ {
+ // Ladevorgang wurde abgebrochen -> Aktuell betroffener Spieler wird aktiviert
+ foreach (Spieler tempSpieler in Globals.SpielerListe)
+ {
+ if ("Spieler" + tempSpieler.SPIELERINDEX == erstesTagesEvent.BetroffenerSpielerName)
+ Globals.AktuellerSpieler = tempSpieler;
+ }
+ //Wenn Spieler gewechselt hat wird dessen letztes geladenes Datum aktualisiert (um zu gewährleisten, dass jeder Spieler höchstens 20 Tage kein Event hatte)
+ Globals.AktuellerSpieler.spielerDatumAktualisieren(erstesTagesEvent.EventDate);
+
+ Globals.AktuellerTag_E = erstesTagesEvent.EventDate.Day % 10;
+ Globals.AktuellerTag_Z = erstesTagesEvent.EventDate.Day / 10;
+ Globals.AktuellerMonat = erstesTagesEvent.EventDate.Month;
+ Globals.AktuellesJahr_E = erstesTagesEvent.EventDate.Year % 10;
+ Globals.AktuellesJahr_Z = erstesTagesEvent.EventDate.Year / 10 % 10;
+ Globals.AktuellesJahr_H = erstesTagesEvent.EventDate.Year / 100 % 10;
+ Globals.AktuellesJahr_T = erstesTagesEvent.EventDate.Year / 1000;
+ Globals.AktuellesDatum = new DateTime(erstesTagesEvent.EventDate.Year, erstesTagesEvent.EventDate.Month, erstesTagesEvent.EventDate.Day);
+ }
+
+ }
+
+ }
+
+ private void setzeHistorischeEvents()
+ {
+ //Kriegseintritt GB FR -> Krimkrieg
+ TempStringParamListe.Add("KRIMKRIEG_GB_FR");
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 4, 10), "POLITIK", null, null, null, null, 0, TempIntParamListe, TempStringParamListe), "EINFÜGEN");
+ TempStringParamListe.Clear();
+ }
+
+
+ public void anzeigeEvent()
+ {
+ //Neu zeichnen des Zeitrades
+ this.Graphics.Clear();
+
+ //neu Hinzufügen der Hintergründe
+ AddGraphic(BG_Tag_Z);
+ AddGraphic(BG_Tag_E);
+ AddGraphic(BG_Monat);
+ AddGraphic(BG_Jahr_T);
+ AddGraphic(BG_Jahr_H);
+ AddGraphic(BG_Jahr_Z);
+ AddGraphic(BG_Jahr_E);
+
+ //Einzelnen Zeitfelder
+ Image TempImage = generiereZahlImage(Globals.AktuellerTag_Z);
+ TempImage.X = 2;
+ TempImage.Y = 4;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+ TempImage = generiereZahlImage(Globals.AktuellerTag_E);
+ TempImage.X = 20;
+ TempImage.Y = 4;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+ TempImage = generiereMonatImage(Globals.AktuellerMonat);
+ TempImage.X = 38;
+ TempImage.Y = 6;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+ TempImage = generiereZahlImage(Globals.AktuellesJahr_T);
+ TempImage.X = 66;
+ TempImage.Y = 4;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+ TempImage = generiereZahlImage(Globals.AktuellesJahr_H);
+ TempImage.X = 84;
+ TempImage.Y = 4;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+ TempImage = generiereZahlImage(Globals.AktuellesJahr_Z);
+ TempImage.X = 102;
+ TempImage.Y = 4;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+ TempImage = generiereZahlImage(Globals.AktuellesJahr_E);
+ TempImage.X = 120;
+ TempImage.Y = 4;
+ TempImage.Alpha = 1f;
+ AddGraphic(TempImage);
+ //Tween(TempImage, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ }
+
+ public void spielStart()
+ {
+ //ToDo:
+ // Logik implementieren -> Routine welche für Stetige Nachschubevents bis zum Ende des Games sorgt
+
+ // Hafeneinstellungen bei Spielstart
+ //Amerika
+ //Afrika
+ //Europa
+ Globals.AlleHäfen["LIVERPOOL"].NeuAuffüllenLager("JANUAR");
+
+ //Asien/Australien
+
+ }
+
+ private Image generiereZahlImage(int Vorlage)
+ {
+ switch (Vorlage)
+ {
+ case 0: return new Image(Assets.ZEITDISPLAY_0);
+ case 1: return new Image(Assets.ZEITDISPLAY_1);
+ case 2: return new Image(Assets.ZEITDISPLAY_2);
+ case 3: return new Image(Assets.ZEITDISPLAY_3);
+ case 4: return new Image(Assets.ZEITDISPLAY_4);
+ case 5: return new Image(Assets.ZEITDISPLAY_5);
+ case 6: return new Image(Assets.ZEITDISPLAY_6);
+ case 7: return new Image(Assets.ZEITDISPLAY_7);
+ case 8: return new Image(Assets.ZEITDISPLAY_8);
+ case 9: return new Image(Assets.ZEITDISPLAY_9);
+ default: return null;
+ }
+
+ }
+
+ private Image generiereMonatImage(int Vorlage)
+ {
+ switch (Vorlage)
+ {
+ case 1: return new Image(Assets.ZEITDISPLAY_JAN);
+ case 2: return new Image(Assets.ZEITDISPLAY_FEB);
+ case 3: return new Image(Assets.ZEITDISPLAY_MAR);
+ case 4: return new Image(Assets.ZEITDISPLAY_APR);
+ case 5: return new Image(Assets.ZEITDISPLAY_MAY);
+ case 6: return new Image(Assets.ZEITDISPLAY_JUN);
+ case 7: return new Image(Assets.ZEITDISPLAY_JUL);
+ case 8: return new Image(Assets.ZEITDISPLAY_AUG);
+ case 9: return new Image(Assets.ZEITDISPLAY_SEP);
+ case 10: return new Image(Assets.ZEITDISPLAY_OCT);
+ case 11: return new Image(Assets.ZEITDISPLAY_NOV);
+ case 12: return new Image(Assets.ZEITDISPLAY_DEZ);
+ default: return null;
+ }
+
+ }
+
+ public void setzeFadeOut()
+ {
+
+ Tween(FadeOutBlackScreen, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+ AddGraphic(FadeOutBlackScreen);
+ }
+
+ private void aktiviereTestEvents()
+ {
+ //Test Events
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 14), "SPIELERWECHSEL", Globals.SpielerListe[1]));
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 07), "BAU-ABGESCHLOSSEN:SCHIFF", Globals.SpielerListe[0]));
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 10), "SYSTEST1"));
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 10), "SYSTEST2"));
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 14), "SYSTEST3"));
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 14), "SYSTEST3"));
+ //Globals.einfügenEvent(new WeltEvent(new DateTime(1854, 1, 14), "BAU-ABGESCHLOSSEN:SCHIFF", Globals.SpielerListe[0]));
+
+ //SchifftestEvents
+ Schiff testSchiff;
+ testSchiff = new Schiff("TESTSCHONER", "SCHONER", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", null, null, testSchiff), "EINFÜGEN");
+ testSchiff = new Schiff("TESTBARK", "BARK", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", Globals.AktuellerSpieler, null, testSchiff), "EINFÜGEN");
+ testSchiff = new Schiff("TESTHOLZDAMPF", "HOLZDAMPFSCHIFF", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", null, null, testSchiff), "EINFÜGEN");
+ testSchiff = new Schiff("TESTEISENDAMPF", "EISENDAMPFSCHIFF", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", Globals.AktuellerSpieler, null, testSchiff), "EINFÜGEN");
+ testSchiff = new Schiff("TESTBRIGG", "BRIGG", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", null, null, testSchiff), "EINFÜGEN");
+ testSchiff = new Schiff("TESTFREGATTE", "FREGATTE", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", null, null, testSchiff), "EINFÜGEN");
+ testSchiff = new Schiff("TESTKLIPPER", "KLIPPER", 2);
+ testSchiff.fahreInHafenEin("LIVERPOOL");
+ Globals.AlleHäfen["LIVERPOOL"].schiffsAktivität("Einfahren", testSchiff);
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SCHIFFBAU-FERTIGSTELLUNG", null, null, testSchiff), "EINFÜGEN");
+ Globals.EventListe.Sort(new EventSorter());
+
+ }
+
+ public bool wurdeZeiRadGeklicked()
+ {
+ // Abfragen des Clicked Status ( wenn diese Abfrage erfolgt wird der Wert immer direkt zurück gesetzt)
+ bool TempCheckwert;
+
+ TempCheckwert = zeitRadClicked;
+
+ zeitRadClicked = false;
+ return TempCheckwert;
+ }
+
+ public void zeigeNächstenEventTag()
+ {
+ WeltEvent tempEvent = Globals.EventListe[0];
+ DateTime aktuellerTag = tempEvent.EventDate;
+ Console.WriteLine("Nächste Events:");
+ for (int aktuellerEventIndex = 0; ; aktuellerEventIndex++)
+ {
+ Console.WriteLine("Event:" + Globals.EventListe[aktuellerEventIndex].EventHandlung);
+ if (Globals.EventListe[aktuellerEventIndex].EventDate != tempEvent.EventDate)
+ {
+ break;
+ }
+
+ }
+
+ }
+
+ public void zeigeNächstesEventVomTyp(string ZielHandlung)
+ {
+ foreach (WeltEvent WE in Globals.EventListe)
+ {
+ if (WE.EventHandlung == ZielHandlung)
+ {
+ Console.WriteLine("Nächstes Event vom Typ " + ZielHandlung + " ist:");
+ Console.WriteLine("Datum: " + WE.EventDate);
+ Console.WriteLine("Betroffener Spieler: " + WE.BetroffenerSpielerName);
+ Console.WriteLine("Betroffener Filiale: " + WE.BetreffenderFilialName);
+ Console.WriteLine("Betroffenes Schiff: " + WE.BetreffenderSchiffsName);
+ Console.WriteLine("Geldbetrag: " + WE.GeldBetrag);
+ Console.WriteLine("Weitere Zahlenparameter: " + WE.ZahlenParams);
+ Console.WriteLine("Weitere Stringparameter: " + WE.StringParams);
+ return;
+ }
+ }
+ Console.WriteLine("Keine Events vom Typ " + ZielHandlung + " gefunden!");
+ }
+ }
+}
diff --git a/1869_Remake/Globals.cs b/1869_Remake/Globals.cs
new file mode 100644
index 0000000..69c901e
--- /dev/null
+++ b/1869_Remake/Globals.cs
@@ -0,0 +1,420 @@
+using System;
+using System.Collections.Generic;
+
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake.Entities;
+
+namespace _1869_Remake
+{
+ public class Globals
+ {
+ public static Game Remake = null;
+
+ //Spielersteuerung
+ public static Session PlayerSession;
+ public static List SpielerListe = new List();
+
+ //Dictionary aller Spieler und Ihrer zugehörigen Kredite ( Wenn int Betrag nicht = 0, dann Kredit offen und kein neuer Kredit nehmbar)
+ public static Dictionary KreditListe = new Dictionary();
+
+ //Deklarierung der Häfen -> Vordefiniert (Kann im Remake gegebenenfalls erweitert werden -> Nur mit intensiven Recherchen zum Handel
+ //bezüglich dieses neuen Welthafens zu dieser Zeit
+ public static Dictionary AlleHäfen = new Dictionary();
+
+ //Dictianry aller existierenden Schiffe
+ public static Dictionary AlleSchiffe = new Dictionary();
+
+ //Deklarieren der Meeresknotenpunkte und Meeresstraßen
+ //To Do: Einbauen was global an Knoten und Straßen bekannt sein Soll
+ public static Dictionary AlleMeeresKnoten = new Dictionary();
+ public static Dictionary AlleSeeStraßen = new Dictionary();
+
+ //Deklarierung der Waren-> Vordefiniert (Kann im Remake gegebenenfalls erweitert werden -> Nur mit intensiven Recherchen zum Handel
+ //bezüglich dieses neuen Produkts zu dieser Zeit
+ public static List WarenListe = new List();
+
+ //Deklarieren der Möglichen Schiffstypen
+ public static List AlleSchiffsTypen;
+ public static List AlleWarenTypen;
+ //Eingestellte MaximaleSpieldauer
+ public static int Spieldauer;
+ public static bool SpielEnde;
+
+ //Anzahl Spieler 1-4 [Vorerst nur einer implementiert]
+ public static int AnzahlSpieler;
+ public static Spieler AktuellerSpieler;
+
+ //Aktuelle Spielzeit (Ingame Datum)
+ public static int AktuellerTag_Z;
+ public static int AktuellerTag_E;
+ public static int AktuellerMonat;
+ public static int AktuellesJahr_T;
+ public static int AktuellesJahr_H;
+ public static int AktuellesJahr_Z;
+ public static int AktuellesJahr_E;
+ public static DateTime AktuellesDatum;
+
+ /*Mannschaftskosten Konstanten*/
+ //Kosten je Mann der unerfahrensten Stufe pro Monat
+ public static int MannschaftskostenMin = 400;
+ //Array der Preissteigerung je Erfahrungsstufe
+ public static int[] ErfahrungsFaktor = new int[]
+ {
+ //EF wird zum regulären 1-Mann Wert hinzuaddiert und mal anzahl der Maxgröße gerechnet
+ //im Schema 0,2->0,2->0,2->0,4->0,4->0,9->0,8->2,0->2,8->2,7->5,5->...
+ 810,
+ 530,
+ 330,
+ 250,
+ 140,
+ 100,
+ 60,
+ 40,
+ 20,
+ 0
+
+ };
+
+ //Zeitrad Verwaltet alle Events und triggert alle Handlungen für die jeweiligen Objekte
+ public static List EventListe = new List();
+
+ public static Queue> NächsterHaltepunktInZeitLeiste = new Queue>();
+
+ //Spielmodus
+ // 1 = Original
+ // 2 = Remake
+ public static int SpielModus;
+
+ //Geladener Weltkartenteil
+ public static string weltKarte;
+
+ // Tracking-Felder
+ public static string LetzteSzene;
+ public static string aktuelleSzene;
+
+ public static Dictionary PreisListe_UnerwünschteWare = new Dictionary();
+
+ // UI-Elemente (Farben,Formen etc)
+ public static Color StdGrün = new Color("137747");
+ public static Color HighLightMagenta = new Color("ba275f");
+ public static Color SprachRot = new Color("ba2727");
+ public static Color StatGrün = new Color("234343");
+ public static Color OptionGrau = new Color("6b6b6b");
+ public static Color TafelGrau = new Color("a7a7a7");
+ public static Color ConfigGrau = new Color("636383");
+ public static Color AnzeigeBraun = new Color("836323");
+ public static Color MeeresRoutenGrau = new Color("c3c3c3");
+ public static Color MeeresRoutenGrün = new Color("aad0a6");
+ public static Color MeeresRoutenGelb = new Color("d0d982");
+ public static Color MeeresRoutenRot = new Color("d98282");
+
+ public static bool DisplaySubElementAktiv = false;
+
+ #region Texte
+ //Angezeigte Textpassagen eventuell in eine CSV umpflanzen und dort mit allen restlichen Sammeln zum schnellen Aufrufen
+
+ /*ConfigBildschirm*/
+ //SpielModus
+ public static Text CONFIGTEXT0 = new Text("WELCHE VERSION MÖCHTEN SIE SPIELEN?", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT0_1 = new Text("Original Amiga \"O\"", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT0_2 = new Text("Modernere Remake \"R\"", Assets.FONT_AMIGA4EVER2, 10);
+
+
+ public static Text CONFIGTEXT1 = new Text("EIN ALTES SPIEL LADEN \"J\" SONST DIE LEERTASTE.", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT2 = new Text("WIE VIELE SPIELER 1-4", Assets.FONT_AMIGA4EVER2, 10);
+
+ //Für jeden Spieler ein Text
+ public static Text CONFIGTEXT3_A = new Text("DEN NAMEN DES 1 SPIELERS EINGEBEN.", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT3_B = new Text("DEN NAMEN DES 2 SPIELERS EINGEBEN.", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT3_C = new Text("DEN NAMEN DES 3 SPIELERS EINGEBEN.", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT3_D = new Text("DEN NAMEN DES 4 SPIELERS EINGEBEN.", Assets.FONT_AMIGA4EVER2, 10);
+
+ public static Text CONFIGTEXT4 = new Text("\"M\" - MÄNNLICH ODER \"W\" - WEIBLICH", Assets.FONT_AMIGA4EVER2, 10);
+
+ //Firmennamen für jeden Spieler
+ public static Text CONFIGTEXT5_A = new Text("WIE SOLL DIE FIRMA DES 1 SPIELERS HEISSEN", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT5_B = new Text("WIE SOLL DIE FIRMA DES 2 SPIELERS HEISSEN", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT5_C = new Text("WIE SOLL DIE FIRMA DES 3 SPIELERS HEISSEN", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT5_D = new Text("WIE SOLL DIE FIRMA DES 4 SPIELERS HEISSEN", Assets.FONT_AMIGA4EVER2, 10);
+
+ //Starthafen
+ public static Text CONFIGTEXT6_A = new Text("IN WELCHEM HAFEN WOLLEN SIE STARTEN?", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT6_B = new Text("\"1\" LIVERPOOL KÖNIGREICH ENGLAND", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT6_C = new Text("\"2\" LONDON KÖNIGREICH ENGLAND", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT6_D = new Text("\"3\" LES HAVRES KÖNIGREICH FRANKREICH", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT6_E = new Text("\"4\" NEW YORK VEREINIGTE STAATEN", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT6_F = new Text("\"5\" SAVANNAH VEREINIGTE STAATEN", Assets.FONT_AMIGA4EVER2, 10);
+
+ // Bestätigungsscreen
+ public static Text CONFIGTEXT7 = new Text("SIND DIESE EINSTELLUNGEN RICHTIG? \"J\" ODER \"N\" ", Assets.FONT_AMIGA4EVER2, 10);
+
+
+ // Spieldauer
+ public static Text CONFIGTEXT8_A = new Text("WIE LANGE WOLLEN SIE SPIELEN?", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_B = new Text(" A - 5 Jahre", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_C = new Text(" B - 10 Jahre", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_D = new Text(" C - 15 Jahre", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_E = new Text(" D - 20 Jahre", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_F = new Text(" E - 26 Jahre", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_G = new Text("", Assets.FONT_AMIGA4EVER2, 10);
+ public static Text CONFIGTEXT8_H = new Text(" F - 5 Jahre \"EINSTEIGER SPIEL\"", Assets.FONT_AMIGA4EVER2, 10);
+
+ /*BankBildschirm*/
+ // Hauptbildschirm
+ public static Text BANKTEXT1_A = new Text("ICH BRAUCHE EINEN KREDIT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BANKTEXT1_B = new Text("ICH MÖCHTE MEINEN KREDIT ABBEZAHLEN.", Assets.FONT_AMIGA4EVER2, 8);
+
+ // Kredit nehmen Screen
+ public static Text BANKTEXT11_A = new Text("... ICH BRAUCHE $ #,# .", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BANKTEXT11_B = new Text("OK, ICH NEHME DEN KREDIT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BANKTEXT11_D = new Text("ICH HABE ES MIR ANDERS ÜBERLEGT.", Assets.FONT_AMIGA4EVER2, 8);
+
+ // Kredit bezahlen Screen
+ public static Text BANKTEXT12_A = new Text("...ICH ZAHLE $#,# ZURÜCK.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BANKTEXT12_B = new Text("OK, HIER IST DAS GELD.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BANKTEXT12_D = new Text("NEIN, ICH BRAUCHE DAS GELD NOCH.", Assets.FONT_AMIGA4EVER2, 8);
+
+ /*BankBildschirm*/
+ public static Text TEXT_BEENDEN = new Text("BEENDEN", Assets.FONT_AMIGA4EVER2, 8);
+
+ /*AllroundTexte*/
+ public static Text BEGRÜßUNG_DECOY = new Text("WILLKOMMEN, WIE KANN ICH HELFEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text TEXT_WEITER = new Text("WEITER", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text TEXT_ENDE = new Text("ENDE", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text TEXT_ABSCHIED = new Text("AUF WIEDERSEHEN, DANKE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text TEXT_ABBRUCH = new Text("NEIN DANKE, ICH HABE ES MIR ÜBERLEGT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text TEXT_ABBRUCH2 = new Text("ICH HABE ES MIR ANDERS ÜBERLEGT.", Assets.FONT_AMIGA4EVER2, 8);
+ // 1. # = Artikel + Geldquelle + verfügt oder verfüge ich, 2. # = volle Dollar, 3.# = Cent
+ public static Text BUDGETTEXT = new Text("# ÜBER $ #,# .", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BUDGETREICHTNICHT = new Text("ICH FÜRCHTE, FÜR MEHR REICHT IHR KAPITAL NICHT...", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text ZAHLMENGE = new Text("ICH ZAHLE $ #,#", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text ZAHLENFÜR = new Text("OK, ICH ZAHLE FÜR DIE \"#\"", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text KOSTEN = new Text("DAS WÜRDE SIE $ #,# KOSTEN", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text KEINEKOSTEN = new Text("FÜR NICHTS KANN ICH SCHLECHT ETWAS VERLANGEN", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text RESTBETRAG = new Text("ES SIND NOCH $#,# ZU BEZAHLEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text KEINRESTBETRAG = new Text("DIE # IST BEREITS ABBEZAHLT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text KEINZAHLBETRAG = new Text("MIT EINEM HÄNDEDRUCK ZAHLT SICH DAS SCHIFF LEIDER NICHT SCHNELLER AB.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BESTENDANK = new Text("BESTEN DANK", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text DANKEZUFRIEDEN = new Text("ICH HOFFE SIE SIND MIT UNS ZUFRIEDEN.", Assets.FONT_AMIGA4EVER2, 8);
+
+ // Demotexte (Werden entfernt in Vollversion)
+ public static Text DEMOTEXT_KEINEREPARATUR = new Text("UNSER TROCKENDOCK IST AKTUELL NICHT IN BETRIEB(DEMO)", Assets.FONT_AMIGA4EVER2, 8);
+
+ /*Werftbildschirm*/
+ public static Text WERFT_HELFEN = new Text("WIE KANN ICH IHNEN HELFEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_REPERATUR = new Text("MEIN SCHIFF MÜSSTE REPARIERT WERDEN!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_SCHIFFBAUEN = new Text("WELCHE SCHIFFE BAUEN SIE?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_SCHIFFGEBRAUCHT = new Text("ICH SUCHE EIN GEBRAUCHTES SCHIFF!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_SCHIFFVERKAUFEN = new Text("ICH MÖCHTE IHNEN EIN SCHIFF VERKAUFEN!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_SCHIFFBEZAHLEN = new Text("ICH MÖCHTE MEIN SCHIFF BEZAHLEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WELCHESSCHIFF = new Text("WELCHES IHRER SCHIFFE?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_REPARATUR_MUSCHELN = new Text("DEN MUSCHELBEWUCHS ENTFERNEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_REPARATUR_RUMPF = new Text("DEN RUMPF ABDICHTEN UND STREICHEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_REPARATUR_ABSCHIED = new Text("AUF WIEDERSEHEN, DANKE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_REPARATUR_ANTRIEB = new Text("DIE TAKELAGE ODER DAMPFMASCHINE REPARIEREN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_REPARATUR_ALLES = new Text("DAS SCHIFF GENERALÜBERHOLEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_NÄCHSTES_SCHIFF = new Text("ZEIGEN SIE MIR DAS NÄCHSTE MODEL.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_LETZTES_SCHIFF = new Text("KÖNNEN ICH DAS LETZTE MODEL NOCHMAL SEHEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_BESTÄTIGEN = new Text("OK, BAUEN SIE MIR DIESES SCHIFF.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_ABBRUCH = new Text("ICH HABE ES MIR ANDERS ÜBERLEGT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_BESTÄTIGUNG_PREIS = new Text("WIE HOCH IST DIE ANZAHLUNG?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_BESTÄTIGUNG_BESTELLUNG = new Text("OK BAUEN SIE DAS SCHIFF.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_BESTÄTIGUNG_GELDQUELLE = new Text("# ÜBER $ #,# .", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_BESTÄTIGUNG_ABBRUCH = new Text("ICH HABE ES MIR ANDERS ÜBERLEGT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_NAME_HINWEIS1 = new Text("BITTE WÄHLE EINEN SCHIFFS NAMEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_NAME_HINWEIS2 = new Text("WÄHLE KEINEN NAMEN, DEN EINES", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_NAME_HINWEIS3 = new Text("DEINER SCHIFFE BEREITS TRÄGT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_ANZAHLUNG1 = new Text("WENN SIE $#,# ANZAHLEN", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_ANZAHLUNG2 = new Text("KÖNNEN WIR MIT DEM BAU BEGINNEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_ABSCHLUSS1 = new Text("DAS SCHIFF WIRD IN CA. # # GELIEFERT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_ABSCHLUSS2 = new Text("NOCHMALS VIELEN DANK FÜR DEN AUFTRAG.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAUEN_GELDMANGEL = new Text("LEIDER REICHT DAS BUDGET DIESES KONTOS NICHT AUS.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_GEBRAUCHT_NÄCHSTES_SCHIFF = new Text("HABEN SIE NOCH ANDERE GEBRAUCHTE?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_GEBRAUCHT_BESTÄTIGEN = new Text("OK, ICH NEHME DEN KAHN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BEZAHLEN_KEINESCHULDEN = new Text("SIE HABEN KEINE SCHULDEN BEI UNS!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_GEBRAUCHT_KEINESCHIFFE = new Text("WIR HABEN ZUR ZEIT KEINE GEBRAUCHTEN SCHIFFE!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAU_KEINPLATZ1 = new Text("TUT UNS LEID.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BAU_KEINPLATZ2 = new Text("WIR KÖNNEN MOMENTAN KEINE WEITEREN AUFTRÄGE ÜBERNEHMEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_WELCHESSCHIFF = new Text("WELCHES IHRER SCHIFFE?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_KEINESCHIFF1 = new Text("SIE BESITZEN KEINE SCHIFFE IN DIESEM HAFEN", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_KEINESCHIFF2 = new Text("DIE SIE UNS ANBIETEN KÖNNTEN!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_PREIS = new Text("WIE VIEL GEBEN SIE MIR FÜR DIESES SCHÖNE SCHIFF?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_BESTÄTIGUNG = new Text("OK ICH VERKAUFE ES IHNEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_ANGEBOT = new Text("FÜR DIE # ZAHLE ICH IHNEN $#,#.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_VERKAUF_ABSCHLUSS = new Text("WIR HABEN DIE $#.# IN DIE # EINGEZAHLT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BEZAHLEN_ALLEBEZAHLT = new Text("ALLE IHRE SCHIFFE SIND BEZAHLT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BEZAHLEN_XBEZAHLT = new Text("DIE # IST BEREITS BEZAHLT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text WERFT_BEZAHLEN_KEINESCHIFFE = new Text("SIE HABEN BEI UNS KEINE SCHULDEN.", Assets.FONT_AMIGA4EVER2, 8);
+
+
+ /*Handelsbildschirm*/
+ public static Text HANDEL_HELFEN = new Text("WIE KANN ICH IHNEN HELFEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_WÄHLEN = new Text("BITTE WÄHLEN SIE!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_WÄHLEN_ZIEL = new Text("WOHIN SOLLEN WIR DIE WAREN DANN GEBEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_KAUFEN = new Text("WELCHE WAREN KÖNNEN SIE ANBIETEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_VERKAUFEN = new Text("ICH MÖCHTE IHNEN ETWAS VERKAUFEN!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_ANGEBOT = new Text("WIR BIETEN AN:", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_NACHFRAGE = new Text("WIR KAUFEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_AUSVERKAUFT = new Text("LEIDER SIND WIR MOMENTAN TOTAL AUSVERKAUFT!", Assets.FONT_AMIGA4EVER2, 8);
+ // 1. # Menge der Ware, 2. # Lademittel, 3. # Warenbezeichnung
+ public static Text HANDEL_RESTPOSTEN = new Text("LEIDER HABE ICH NUR # # # LAGERND.", Assets.FONT_AMIGA4EVER2, 8);
+ // 1. # Menge der Ware, 2. # Lademittel, 3. # Preis in DOLLAR, 4.# Preis in CENT
+ public static Text HANDEL_RESTPOSTEN2 = new Text("ABER FÜR DIE # # VERLANGE ICH $ #,#", Assets.FONT_AMIGA4EVER2, 8);
+ // 1. # = Menge, 2. # = Lademittel, 3. # = Ware
+ public static Text HANDEL_PREIS_PRO_MENGE_EINKAUF = new Text("WIE VIEL KOSTEN MICH # # # ?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_PREIS_PRO_MENGE_VERKAUF = new Text("WIE VIEL ZAHLEN SIE FÜR # # # ?", Assets.FONT_AMIGA4EVER2, 8);
+ // # = (a. IN MEIN LAGER) oder (b. AUF DIE )
+ public static Text HANDEL_ABSCHLUSS_EINKAUF = new Text("OK, GEBEN SIE ES #", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_ABSCHLUSS_VERKAUF = new Text("OK, ICH VERKAUFE DIE WARE.", Assets.FONT_AMIGA4EVER2, 8);
+ // 1. # = Warenbezeichnung, 2. # = Preis Dollar, 3. # = Preis Cent, 4. # = Lademittel
+ public static Text HANDEL_ERLÄUTERUNG1 = new Text("# ERHALTEN SIE FÜR $ #,# je # !", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_ERLÄUTERUNG2 = new Text("DIE # # KOSTEN SIE DAHER $ #,#", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_ABBRUCH_QUELLLAGER = new Text("EINEN ANDEREN QUELL-LAGERORT WÄHLEN", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_VERKAUF_AUS_LAGER = new Text("ICH VERKAUFE WARE AUS DEM LAGER", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_WARENLOS = new Text("SIE VERFÜGEN ÜBER KEINE WAREN IN DIESEM HAFEN!", Assets.FONT_AMIGA4EVER2, 8);
+ // 1. # = Zielname(Ihr Lager || Die ), 2. # = Lademittel
+ public static Text HANDEL_GELDLOS = new Text("# VERFÜGT NICHT ", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_GELDLOS2 = new Text("ÜBER GENÜGEND GELD FÜR MINDESTENS 1 #", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_GELDLOS3 = new Text("BITTE WÄHLEN SIE EINE ANDERE GELDQUELLE!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_VERKAUFSQUELLE = new Text("WOHER WOLLEN SIE IHRE WAREN VERKAUFEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_WARENWAHL = new Text("WELCHE WAREN # WOLLEN SIE MIR ANBIETEN?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_WARENQUELLE_WECHSEL = new Text("EINE ANDERE WARENQUELLE WÄHLEN", Assets.FONT_AMIGA4EVER2, 8);
+
+ /*Ortsspezifische Texte*/
+ public static Text HANDEL_BEGRÜßUNG_LIVERPOOL = new Text("WILLKOMMEN IN LIVERPOOL", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text HANDEL_BEGRÜßUNG_LONDON = new Text("HALLO SIR, WILLKOMMEN IN LIVERPOOL", Assets.FONT_AMIGA4EVER2, 8);
+
+ /*BarTexte*/
+ public static Text BAR_SUCHEMANNSCHAFT = new Text("ICH SUCHE EINE MANNSCHAFT.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_KOSTENFILIALE = new Text("WIE VIEL KOSTET MICH EINE FILIALE?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_FILIALEVORHANDEN = new Text("WAS SOLL DAS, SIE HABEN DOCH EINE FILIALE HIER!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_ABSCHIED = new Text("BIS ZUM NÄCHSTEN MAL, JUNGS.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_GELDTRANSFER = new Text("ICH GEBE GELD AUF EIN ANDERES SCHIFF.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_KEINE2SCHIFFE = new Text("DU HAST KEINE 2 SCHIFFE IM HAFEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_HINWEISE = new Text("FÜR EIN PAAR TIPS, GEBE ICH EINE RUNDE AUS, JUNGS.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_KEINESCHIFFE = new Text("DU HAST DOCH KEINE SCHIFFE IM HAFEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_WELCHESSCHIFF = new Text("FÜR WELCHES SCHIFF?", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_GUTESSCHIFF = new Text("WIRKLICH EIN SCHÖNES SCHIFF, DIE #.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESTÄTIGUNG = new Text("OK, BESORG MIR DIE LEUTE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG1 = new Text("ICH SUCHE # SPITZENLEUTE FÜR DIE #.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG2 = new Text("ICH BRAUCHE # WIRKLICH ERFAHRENE SEELEUTE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG3 = new Text("ICH SUCHE # LEUTE, DIE RICHTIG ZUPACKEN KÖNNEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG4 = new Text("WAS KOSTEN # ZUVERLÄSSIGE LEUTE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG5 = new Text("FÜR DIE # SUCHE ICH # LEUTE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG6 = new Text("SUCH MIR # FÄHIGE LEUTE, DIE KEIN VERMÖGEM KOSTEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG7 = new Text("ICH SUCHE # BRAUCHBARE LEUTE FÜR DIE #.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG8 = new Text("ICH BRAUCHE # GUTE ABER MÖGLICHST BILLIGE LEUTE.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG9 = new Text("ICH SUCHE # GRÜNSCHNÄBEL, DIE FAST UMSONST ARBEITEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_BESCHREIBUNG10 = new Text("FANG MIR # MÖGLICHST BILLIGE IDIOTEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_ABBRUCH = new Text("WENN DU MEINST.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_PREIS = new Text("DIE # MANN WÜRDEN DICH IM MONAT $#,# KOSTEN.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTSWAHL_WELCHELEUTE = new Text("MICH WÜRDE INTERESSIEREN, WAS FÜR LEUTE DU SUCHST..??", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTWAHL_ANHEUERN = new Text("OK DIE JUNGS MELDEN SICH IN # TAGEN AUF DER \"#\"", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_MANNSCHAFTWAHL_GENUGLEUTE = new Text("IN DIESEM HAFEN HAST DU DOCH AUF JEDEM SCHIFF GENUG LEUTE!", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_GELDTRANSFER_ZIEL = new Text("DAS GELD IST FÜR #.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_GELDTRANSFER_BETRAG = new Text("ICH BRAUCHE $#,#.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_GELDTRANSFER_BESTÄTIGUNG = new Text("OK, DAS GELD KOMMT #.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_HINWEIS_KEIN1 = new Text("ES GIBT WIRKLICH NIX NEUES HEUTE...", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_HINWEIS_KEIN2 = new Text("...ABER TROTZDEM DANKE FÜR DIE RUNDE BIER.", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_HINWEIS_KEINGELD1 = new Text("DAS SIND DIE RICHTIGEN, KEIN GELD IN DER TASCHE...", Assets.FONT_AMIGA4EVER2, 8);
+ public static Text BAR_HINWEIS_KEINGELD2 = new Text("...ABER GROßE SPRÜCHE KLOPFEN.", Assets.FONT_AMIGA4EVER2, 8);
+ #endregion
+
+ public static void registriereEntität(Spieler SP)
+ {
+ SpielerListe.Add(SP);
+ }
+
+ public static void registriereEntität(Schiff SCHIFF)
+ {
+ AlleSchiffe.Add(SCHIFF.NAME, SCHIFF);
+ }
+
+ public static void registriereEntität(Hafen H)
+ {
+ AlleHäfen.Add(H.NAME, H);
+ }
+
+ public static void registriereEntität(SeeStraße SST)
+ {
+ AlleSeeStraßen.Add(SST.BEZEICHNUNG, SST);
+ }
+
+ public static void registriereEntität(MeeresKnotenpunkt MKP)
+ {
+ AlleMeeresKnoten.Add(MKP.ORT, MKP);
+ }
+
+ public static void registriereEntität(Ware W)
+ {
+ WarenListe.Add(W.BEZEICHNUNG);
+ }
+
+ public static void registriereSchiffsTyp(Schiff s)
+ {
+ AlleSchiffsTypen.Add(s);
+ }
+
+ public static void registriereWarenTyp(string w)
+ {
+ AlleWarenTypen.Add(w);
+ }
+
+ public static void EventAktion(WeltEvent ev, string Aktion)
+ {
+ switch (Aktion)
+ {
+ case "EINFÜGEN":
+ // Einfügen eines Events in die SortedList aller Events
+ WeltEvent TempEvent = new WeltEvent(ev);
+ EventListe.Add(TempEvent);
+ break;
+ case "ENTFERNEN":
+ EventListe.Remove(ev);
+ break;
+ default:
+ //Fehler
+ Console.WriteLine("Fehler: Eventaktion ist unbekannt!");
+ break;
+ }
+
+
+ }
+
+ public static void kreditAktionen(Spieler Schuldner, int Betrag, string Aktion)
+ {
+ switch (Aktion)
+ {
+ case "REGISTRIEREN":
+ KreditListe.Add(Schuldner, Betrag);
+ break;
+ case "ERHÖHEN":
+ KreditListe[Schuldner] += Betrag;
+ break;
+ case "VERMINDERN":
+ //Hinweis absicherung gegen Mehrbezahlen findet auf der Bezahlseite statt -> Entität das abbezahlen will muss zuerst berechnen wie viel noch zu bezahlen ist und den user nicht mehr bezahlen lassen.
+ KreditListe[Schuldner] -= Betrag;
+ break;
+ case "LÖSCHEN":
+ if (KreditListe[Schuldner] > 0)
+ {
+ //Fehler
+ Console.WriteLine("Fehler: Kredit ist noch nicht abbezahlt!");
+ }
+ else
+ {
+ KreditListe.Remove(Schuldner);
+ }
+
+ break;
+ default:
+ //Fehler
+ Console.WriteLine("Fehler Kreditaktion ist unbekannt");
+ break;
+ }
+ }
+ }
+}
diff --git a/1869_Remake/Program.cs b/1869_Remake/Program.cs
new file mode 100644
index 0000000..061ce13
--- /dev/null
+++ b/1869_Remake/Program.cs
@@ -0,0 +1,125 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using Otter;
+using _1869_Remake;
+using _1869_Remake.Scenes;
+
+namespace _1869_Remake
+{
+ public class Program
+ {
+ static void Main(string[] args)
+ {
+ //Spiel erstellen
+ //Hinweis für Final release Projekteinstellungen von Konsolenanwendung zu Windowsanwendung änder damit Spiel direkt Fokus hat
+
+ Globals.Remake = new Game("1869 - Remake", 640, 480,60,false);
+
+
+ // Intro Sequenz als Startsequenz andere FirstScenes sind Shortcuts für dev Gründe
+ //Globals.Remake.FirstScene = new Intro();
+ Globals.Remake.FirstScene = new ConfigScreen();
+ //Globals.Remake.FirstScene = new worldMap();
+ //Globals.Remake.FirstScene = new BankScene();
+ //Globals.Remake.FirstScene = new HallOfFameScene();
+ //Globals.Remake.FirstScene = new StatistikScene();
+ //Globals.Remake.FirstScene = new OptionenScene();
+
+ Globals.Remake.EnableAltF4 = true;
+ Globals.Remake.MouseVisible = true;
+
+
+ //Spielersession hinzufügen
+ Globals.PlayerSession = Globals.Remake.AddSession("Player");
+
+ //Steuerungsmöglichkeiten Deffinieren
+ Globals.PlayerSession.Controller.AddButton("Enter");
+ Globals.PlayerSession.Controller.Button("Enter").AddKey(Key.Return);
+
+ Globals.PlayerSession.Controller.AddButton("MausLinks");
+ Globals.PlayerSession.Controller.Button("MausLinks").AddMouseButton(MouseButton.Left);
+
+ Globals.PlayerSession.Controller.AddButton("MausRechts");
+ Globals.PlayerSession.Controller.Button("MausRechts").AddMouseButton(MouseButton.Right);
+
+ //A B C D E F G für eingaben
+ Globals.PlayerSession.Controller.AddButton("A");
+ Globals.PlayerSession.Controller.Button("A").AddKey(Key.A);
+
+ Globals.PlayerSession.Controller.AddButton("B");
+ Globals.PlayerSession.Controller.Button("B").AddKey(Key.B);
+
+ Globals.PlayerSession.Controller.AddButton("C");
+ Globals.PlayerSession.Controller.Button("C").AddKey(Key.C);
+
+ Globals.PlayerSession.Controller.AddButton("D");
+ Globals.PlayerSession.Controller.Button("D").AddKey(Key.D);
+
+ Globals.PlayerSession.Controller.AddButton("E");
+ Globals.PlayerSession.Controller.Button("E").AddKey(Key.E);
+
+ Globals.PlayerSession.Controller.AddButton("F");
+ Globals.PlayerSession.Controller.Button("F").AddKey(Key.F);
+
+ Globals.PlayerSession.Controller.AddButton("G");
+ Globals.PlayerSession.Controller.Button("G").AddKey(Key.G);
+
+ // O für Original Modus, R für Remake
+ Globals.PlayerSession.Controller.AddButton("O");
+ Globals.PlayerSession.Controller.Button("O").AddKey(Key.O);
+
+ Globals.PlayerSession.Controller.AddButton("R");
+ Globals.PlayerSession.Controller.Button("R").AddKey(Key.R);
+
+ //Leertaste für Neues Spiel, J für Spiel Laden
+ Globals.PlayerSession.Controller.AddButton("Leer");
+ Globals.PlayerSession.Controller.Button("Leer").AddKey(Key.Space);
+
+ Globals.PlayerSession.Controller.AddButton("J");
+ Globals.PlayerSession.Controller.Button("J").AddKey(Key.J);
+
+ Globals.PlayerSession.Controller.AddButton("N");
+ Globals.PlayerSession.Controller.Button("N").AddKey(Key.N);
+
+ // M für Männlich, W für weiblich
+ Globals.PlayerSession.Controller.AddButton("M");
+ Globals.PlayerSession.Controller.Button("M").AddKey(Key.M);
+
+ Globals.PlayerSession.Controller.AddButton("W");
+ Globals.PlayerSession.Controller.Button("W").AddKey(Key.W);
+
+ Globals.PlayerSession.Controller.AddButton("Z");
+ Globals.PlayerSession.Controller.Button("Z").AddKey(Key.Z);
+
+ // Zahlentasten
+ Globals.PlayerSession.Controller.AddButton("1");
+ Globals.PlayerSession.Controller.Button("1").AddKey(Key.Num1);
+ Globals.PlayerSession.Controller.Button("1").AddKey(Key.Numpad1);
+
+ Globals.PlayerSession.Controller.AddButton("2");
+ Globals.PlayerSession.Controller.Button("2").AddKey(Key.Num2);
+ Globals.PlayerSession.Controller.Button("2").AddKey(Key.Numpad2);
+
+ Globals.PlayerSession.Controller.AddButton("3");
+ Globals.PlayerSession.Controller.Button("3").AddKey(Key.Num3);
+ Globals.PlayerSession.Controller.Button("3").AddKey(Key.Numpad3);
+
+ Globals.PlayerSession.Controller.AddButton("4");
+ Globals.PlayerSession.Controller.Button("4").AddKey(Key.Num4);
+ Globals.PlayerSession.Controller.Button("4").AddKey(Key.Numpad4);
+
+ Globals.PlayerSession.Controller.AddButton("5");
+ Globals.PlayerSession.Controller.Button("5").AddKey(Key.Num5);
+ Globals.PlayerSession.Controller.Button("5").AddKey(Key.Numpad5);
+
+ //Spiel Starten
+ Globals.Remake.Start();
+
+
+ }
+ }
+}
diff --git a/1869_Remake/Properties/AssemblyInfo.cs b/1869_Remake/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..2659fe3
--- /dev/null
+++ b/1869_Remake/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Allgemeine Informationen über eine Assembly werden über die folgenden
+// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+// die einer Assembly zugeordnet sind.
+[assembly: AssemblyTitle("1869_Remake")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Orgname")]
+[assembly: AssemblyProduct("1869_Remake")]
+[assembly: AssemblyCopyright("Copyright © Orgname 2017")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
+// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
+// COM aus zugreifen müssen, sollten Sie das ComVisible-Attribut für diesen Typ auf "True" festlegen.
+[assembly: ComVisible(false)]
+
+// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+[assembly: Guid("7fbb14b6-14b4-43de-aa70-844b2a9e1ff4")]
+
+// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+//
+// Hauptversion
+// Nebenversion
+// Buildnummer
+// Revision
+//
+// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
+// übernehmen, indem Sie "*" eingeben:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/1869_Remake/Scenes/BankScene.cs b/1869_Remake/Scenes/BankScene.cs
new file mode 100644
index 0000000..8c35fa8
--- /dev/null
+++ b/1869_Remake/Scenes/BankScene.cs
@@ -0,0 +1,280 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+using _1869_Remake.ToolKlassen;
+
+namespace _1869_Remake.Scenes
+{
+ public class BankScene : Scene
+ {
+ public Image BlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image BankScreen = new Image(Assets.BANKSCREEN);
+ public Image BankScreen_Augen = new Image(Assets.BANKSCREEN_AUGEN);
+ public Image PfeilRunter = new Image(Assets.PFEILRUNTER);
+ public Image PfeilHoch = new Image(Assets.PFEILHOCH);
+
+ private bool FadeOut = false;
+
+ public bool farbeIstGewechselt_Auswahl_1 = false;
+ public bool farbeIstGewechselt_Auswahl_2 = false;
+ public bool farbeIstGewechselt_Auswahl_3 = false;
+
+ //AnzeigeTimer aktuell nur für warten vor dem 1. Text (später direkt nach tween)
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+ public bool pfeileAngezeigt = false;
+
+ public Text[] anzeigeTexte = new Text[10];
+
+
+ public float BLINZEL_GRENZE = 320f;
+ public float BLINZEL_DAUER = 40f;
+ public float blinzelTimer = 0f;
+ public bool blinzelt = false;
+
+ //aktuelle Position im "KonversationsBaum"
+ public int BankSeite = 0;
+ public int AnfrageBetrag;
+ public int AnfrageDollar;
+ public int AnfrageCent;
+
+ //Beträge, mit denen Leihbetrag und Zinsbetrag erhöht und verringert werden -> Als int gespeichert um nicht mit kommazahlen zu rechnen
+ public int LeihBetrag_Staffelung = 26250; //262,50
+ public int ZinsBetrag_Staffelung = 6370; //63,70 -> entspricht ~ 24% Zinsen -> Schnäppchen!! xD
+
+ //Startpunkt des Anzeigefensters -> Es werden immer nur 3 Optionen angezeigt; Wenn mehr verfügbar dann wird nur Ausschnitt
+ //aller Optionen gezeigt, Variable zeigt auf den Startindex der 3 aufeinander folgenden Punkte
+ public int AnzeigeRange = 0;
+
+ TextBuilder TextLieferant;
+
+
+ public BankScene()
+ {
+ //Todo: textbuilder Handling hier umbauen (gemäß vorlage in Handel)
+
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Bank";
+ BankScreen.CenterOrigin();
+ BankScreen.X = Globals.Remake.HalfWidth;
+ BankScreen.Y = Globals.Remake.HalfHeight;
+
+ BankScreen.Alpha = 0f;
+
+ AddGraphic(BankScreen);
+ Tween(BankScreen, new { Alpha = 1f }, 100f, 0f).Ease(Ease.BackInOut);
+
+
+ //Animationen (Oldschool Umsetzung via Timer und Überblendung mittels Alpha)
+ BankScreen_Augen.CenterOrigin();
+ BankScreen_Augen.X = Globals.Remake.HalfWidth;
+ BankScreen_Augen.Y = 156;
+
+ BankScreen_Augen.Alpha = 0f;
+ AddGraphic(BankScreen_Augen);
+
+ //Vorbereiten des Blackscreens
+ BlackScreen.CenterOrigin();
+ BlackScreen.X = Globals.Remake.HalfWidth;
+ BlackScreen.Y = Globals.Remake.HalfHeight;
+ BlackScreen.Alpha = 0f;
+
+ //Immer anfangs den maximal Betrag anbieten
+ AnfrageBetrag = 4200;
+ AnfrageDollar = 4200;
+ AnfrageCent = 0;
+
+ //TextBuilder einbinden
+ TextLieferant = new TextBuilder(Globals.aktuelleSzene);
+ Add(TextLieferant);
+
+ Queue WillkommensText = new Queue();
+ WillkommensText.Enqueue("Begrüßung_Decoy");
+ // Willkommenstext erstellen (Mittig über dem Bankier)
+ TextLieferant.erzeugeSprachText(WillkommensText, new Queue(), 350, 50);
+ TextLieferant.erzeugeAuswahlText(new Queue(), 30, 410);
+
+
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ //BlackScreen Durchsichtigkeit 1 ist wurde die nächste Szene getriggert -> wechsel zum Hauptbildschirm
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Bank";
+ this.RemoveAll();
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ //Erst nach Timer sind aktionen möglich
+ if (szenenTimer >= TIMER_GRENZE && !FadeOut)
+ {
+ /*
+ // Auswahl 1
+ if (Util.InRect(this.MouseX, this.MouseY, 25, 410, 600, 20))
+ {
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Down)
+ {
+
+
+ /*
+ if (!farbeIstGewechselt_Auswahl_1)
+ {
+ Auswahl.toggleHighlightFarbe(0);
+ farbeIstGewechselt_Auswahl_1 = true;
+ }
+
+ }
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ Console.WriteLine("Auswahl 1 ist gedrückt!");
+
+
+ //zurückwechseln der Farbe zu Grün
+ /*
+ if (farbeIstGewechselt_Auswahl_1)
+ {
+ Auswahl.toggleHighlightFarbe(0);
+ farbeIstGewechselt_Auswahl_1 = false;
+ }
+ string TempEbene = Auswahl.zeigeAktuelleEbene() + ".1";
+ if (Auswahl.checkEbeneExistiert(TempEbene))
+ {
+ Auswahl.LadeTexteAuswahl(TempEbene);
+ }
+ }
+
+ }
+ else
+ {
+ /*
+ //zurückwechseln der Farbe zu Grün wenn Taste Released oder Textfeld verlassen
+ if (farbeIstGewechselt_Auswahl_1)
+ {
+ Auswahl.toggleHighlightFarbe(0);
+ farbeIstGewechselt_Auswahl_1 = false;
+ }
+
+
+ }
+
+
+
+ // Auswahl 2
+ if (Util.InRect(this.MouseX, this.MouseY, 25, 434, 600, 20))
+ {
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Down)
+ {
+ if (!farbeIstGewechselt_Auswahl_2)
+ {
+ Auswahl.toggleHighlightFarbe(1);
+ farbeIstGewechselt_Auswahl_2 = true;
+ }
+
+ }
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ Console.WriteLine("Auswahl 2 ist gedrückt!");
+ //zurückwechseln der Farbe zu Grün
+ if (farbeIstGewechselt_Auswahl_2)
+ {
+ Auswahl.toggleHighlightFarbe(1);
+ farbeIstGewechselt_Auswahl_2 = false;
+
+ string TempEbene = Auswahl.zeigeAktuelleEbene() + ".2";
+ if (Auswahl.checkEbeneExistiert(TempEbene))
+ {
+ Auswahl.LadeTexteAuswahl(TempEbene);
+ }
+ }
+ }
+ }
+ else
+ {
+ //zurückwechseln der Farbe zu Grün wenn Taste Released oder Textfeld verlassen
+ if (farbeIstGewechselt_Auswahl_2)
+ {
+ Auswahl.toggleHighlightFarbe(1);
+ farbeIstGewechselt_Auswahl_2 = false;
+ }
+
+ }
+
+ // Auswahl 3
+ if (Util.InRect(this.MouseX, this.MouseY, 25, 458, 600, 20))
+ {
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Down)
+ {
+ if (!farbeIstGewechselt_Auswahl_3)
+ {
+ Auswahl.toggleHighlightFarbe(2);
+ farbeIstGewechselt_Auswahl_3 = true;
+ }
+
+ }
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ Console.WriteLine("Auswahl 3 ist gedrückt!");
+ //zurückwechseln der Farbe zu Grün
+ if (farbeIstGewechselt_Auswahl_3)
+ {
+ Auswahl.toggleHighlightFarbe(2);
+ farbeIstGewechselt_Auswahl_3 = false;
+
+ if (Auswahl.zeigeAktuelleEbene() == "1")
+ {
+ //für die Texte ein FadeOut anstoßen
+ Auswahl.setzeFadeOut();
+ Sprache.setzeFadeOut();
+
+ //FadeOut zu WorldMap
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+ AddGraphic(BlackScreen);
+
+ FadeOut = true;
+ }
+ else
+ {
+ string TempEbene = Auswahl.zeigeAktuelleEbene() + ".3";
+ if (Auswahl.checkEbeneExistiert(TempEbene))
+ {
+ Auswahl.LadeTexteAuswahl(Auswahl.zeigeAktuelleEbene() + ".3");
+ }
+
+ }
+
+ }
+ }
+ }
+ else
+ {
+ //zurückwechseln der Farbe zu Grün wenn Taste Released oder Textfeld verlassen
+ if (farbeIstGewechselt_Auswahl_3)
+ {
+ Auswahl.toggleHighlightFarbe(2);
+ farbeIstGewechselt_Auswahl_3 = false;
+ }
+
+ }
+ */
+
+ }
+
+ }
+}
+}
diff --git a/1869_Remake/Scenes/BarScene.cs b/1869_Remake/Scenes/BarScene.cs
new file mode 100644
index 0000000..0d3d817
--- /dev/null
+++ b/1869_Remake/Scenes/BarScene.cs
@@ -0,0 +1,1163 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using _1869_Remake;
+using _1869_Remake.ToolKlassen;
+using _1869_Remake.Entities;
+using Otter;
+
+
+namespace _1869_Remake.Scenes
+{
+
+ public class BarScene : Scene
+ {
+
+ TextBuilder TextLieferant;
+
+ public Image BarScreen = new Image(Assets.BARSCREEN);
+ public Image FadeInBlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image FadeOutBlackScreen = new Image(Assets.BLACKSCREEN);
+
+ //AnzeigeTimer
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+ //Standardzeit der Anheuerungsdauer (7 Tage)
+ private TimeSpan StandardAnheuerzeit = new TimeSpan(7, 0, 0, 0);
+ private int gewählterMannschaftsGrad = 0;
+
+ //TempTextVariablen
+ Queue TempSprachText = new Queue();
+ Queue TempSprachParams = new Queue();
+ Queue TempQueue = new Queue();
+ Schiff TempSchiff;
+ //Runde Bier kostet $5
+ private int StandardKostenRunde = 500;
+
+ //Letzte dem Textbuilder übergebene Liste an Paramtern (Wird nur für Shortcut funktionalität verwender)
+ private List letzteÜbergebeneListe = new List();
+
+ //Temporäre Liste der möglichen Geldquellen
+ public List möglicheGeldQuellen = new List();
+ public int geldQuellenIndex = 0;
+ public int geldZielIndex = 1;
+ public Filiale geldQuellenFiliale;
+ public Filiale geldZielFiliale;
+ public Schiff geldQuellenSchiff;
+ public Schiff geldZielSchiff;
+ int zielBetrag = 0;
+ string zielNamen = "";
+
+ public Hafen aktuellerHafen;
+ private Image aktuellerBG;
+ private int MannschafsKosten = 0;
+
+
+ public BarScene(string Preset)
+ {
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Bar";
+
+ //Informationen zum aktuellen Hafen wird geladen, Alle Handlungen beeinflussen den globalen Zustand des Hafens
+ aktuellerHafen = Globals.AlleHäfen[Preset];
+ //TestLogging
+ Console.WriteLine("Aktueller Hafen ist " + aktuellerHafen.NAME);
+
+ //TextBuilder einbinden (POS = Unterer RAND)
+ TextLieferant = new TextBuilder(Globals.aktuelleSzene);
+ Add(TextLieferant);
+
+ überprüfeGeldquellen();
+ geldQuellenIndex = 0;
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+
+ }
+
+ //Auswahltexte
+ TextLieferant.erzeugeAuswahlText(TempQueue, 25, 410);
+
+ //Vorbeireiten des Hintergrundes Büro und der NebenScreens
+ //Büro
+ BarScreen.CenterOrigin();
+ BarScreen.X = Globals.Remake.HalfWidth;
+ BarScreen.Y = Globals.Remake.HalfHeight;
+ BarScreen.Alpha = 1f;
+ //bei Start der Szene wird der aktuelle BG weg gespeichert um diesen Später aus/einzublenden
+ aktuellerBG = BarScreen;
+ AddGraphic(aktuellerBG);
+
+ //Vorbereiten des Blackscreens
+ FadeInBlackScreen.CenterOrigin();
+ FadeInBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeInBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeInBlackScreen.Alpha = 1f;
+
+ FadeOutBlackScreen.CenterOrigin();
+ FadeOutBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeOutBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeOutBlackScreen.Alpha = 0f;
+
+ Tween(FadeInBlackScreen, new { Alpha = 0f }, 64f, 0f).Ease(Ease.BackInOut);
+ AddGraphics(FadeInBlackScreen);
+ AddGraphic(FadeOutBlackScreen);
+ }
+
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ if (FadeOutBlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Bar";
+ this.RemoveAll();
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ //Bei Tick überprüfen, ob etwas im Textbuilder geklickt wurde (1 = Obere Auswahl, 2 = Mitlere Auswahl, 3 = Untere Auswahl, 4 = Oberer Pfeil, 5 = unterer Pfeil)
+ //Zuerst überprüfen auf welcher Ebene wir uns aktuell befinden und danach was dort geklickt wurde
+ int tempAuswahl = TextLieferant.checkAuswahl();
+ List anzeigeTextListe = new List();
+ switch (TextLieferant.aktuelleEbene)
+ {
+ // Textbaum - Root (Demo ready)
+ case "1":
+ #region RootLogik
+
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ // Hier muss für jede Auswahl immer alle Möglichen Baumstränge abgedeckt werden, wenn neuer Baumzweig hinzukommt muss hier seine Auswahl verwaltet werden
+ case 1:
+ //Auswahl Mannschaft suchen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ TempQueue.Clear();
+ bool schiffMitBesatzung = false;
+ //Überprüfung auf vorhandene Schiffe des Spielers (keine Mannschafswahl wenn keine Schiffe da sind)
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ //Alle Schiffe des Spielers, die fertig sind zählen
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && !s.inBau)
+ {
+ if (s.MANNSCHAFT_VORHANDEN || s.MANNSCHAFT_UNTERWEGS)
+ {
+ schiffMitBesatzung = true;
+ }
+ else
+ {
+ TempQueue.Enqueue(s.NAME);
+ letzteÜbergebeneListe.Add(s.NAME);
+ }
+ }
+
+ }
+
+ TempSprachText.Clear();
+ if (TempQueue.Count > 0)
+ {
+ if (TempQueue.Count == 1)
+ {
+ TextLieferant.setAuswahl(1);
+ }
+ else
+ {
+ TempSprachText.Enqueue("Bar_WelchesSchiff");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+ }
+
+ TextLieferant.wechsleAuswahlText("1.1A", TempQueue, true);
+ }
+ else
+ {
+ if (schiffMitBesatzung)
+ {
+ TempSprachText.Enqueue("Bar_Mannschaftswahl_GenugLeute");
+ }
+ else
+ {
+ TempSprachText.Enqueue("Bar_KeineSchiffe");
+ }
+
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+ }
+
+ break;
+ case 2:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Auswahl Filiale
+ bool filialeBereitsvorhanden = false;
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ filialeBereitsvorhanden = true;
+ break;
+ }
+ }
+ TempSprachText.Clear();
+ if (filialeBereitsvorhanden)
+ {
+ TempSprachText.Enqueue("Bar_FilialeVorhanden");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+ }
+ else
+ {
+ //TODO Filial erstellung weiterbauen
+ TextLieferant.wechsleAuswahlText("1.2", new Queue());
+ }
+
+ break;
+ case 3:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Auswahl Verlassen
+ //FadeOut zu WorldMap
+ Tween(FadeOutBlackScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ TextLieferant.setzeFadeOut();
+ break;
+
+ case 4:
+ //Auswahl Geldtransfer über Schiffe
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+
+ letzteÜbergebeneListe.Clear();
+ TempSprachText.Clear();
+
+ //Sammeln der Geldquellen und möglichen Ziele (eine Liste)
+ überprüfeGeldquellen();
+ if (möglicheGeldQuellen.Count() < 2)
+ {
+ TempSprachText.Enqueue("Bar_Keine2Schiffe");
+
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+ }
+ else
+ {
+ geldQuellenFiliale = null;
+ geldQuellenSchiff = null;
+ TempQueue.Clear();
+ geldQuellenIndex = 0;
+ zielBetrag = 0;
+ zielNamen = "";
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ zielBetrag = geldQuellenFiliale.BUDGET;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.Name == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ geldQuellenSchiff = s;
+ zielBetrag = geldQuellenSchiff.SCHIFFSBUDGET;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ //2. Zeile Zielgeldquelle
+ if (möglicheGeldQuellen[geldZielIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldZielFiliale = f;
+ geldZielSchiff = null;
+ zielNamen = "INS LAGER";
+ break;
+ }
+ }
+ TempQueue.Enqueue("DAS LAGER");
+ }
+ else
+ {
+
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldZielIndex])
+ {
+ geldZielSchiff = s;
+ geldZielFiliale = null;
+ zielNamen = "AUF DIE " + geldZielSchiff.NAME;
+ break;
+ }
+ }
+
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldZielIndex]);
+ }
+ //3. Zeile möglicher Betrag (max der Geldquelle)
+ TempQueue.Enqueue((zielBetrag / 100).ToString());
+ TempQueue.Enqueue((zielBetrag % 100).ToString());
+
+ //4. Zeile Bestätigung + Zielnamen
+ TempQueue.Enqueue(zielNamen);
+
+ TextLieferant.wechsleAuswahlText("1.4", TempQueue, false);
+ }
+ break;
+ case 5:
+ //Auswahl HandelsHinweise
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ TempSprachText.Clear();
+ string Hinweis = "";
+
+ //Überprüfen der Geldquelle
+ if (geldQuellenFiliale != null)
+ {
+
+ if (geldQuellenFiliale.BUDGET < 500)
+ {//Wenn Geldquelle kein Geld hat dann speziellen Text ausgeben
+ TempSprachText.Enqueue("Bar_Hinweis_KeineGeld1");
+ TempSprachText.Enqueue("Bar_Hinweis_KeineGeld2");
+ }
+ else
+ {
+ //Abziehen des Geldes bei der Geldquelle
+ geldQuellenFiliale.verringereBudget(500);
+ überprüfeGeldquellen();
+
+ Hinweis = überprüfeHinweise();
+ if (Hinweis != "")
+ {
+ TempSprachText.Enqueue(Hinweis);
+ }
+ else
+ {
+ TempSprachText.Enqueue("Bar_Hinweis_KeineHinweise1");
+ TempSprachText.Enqueue("Bar_Hinweis_KeineHinweise2");
+ }
+ }
+ }
+ else
+ {
+ if (geldQuellenSchiff.SCHIFFSBUDGET < 500)
+ {//Wenn Geldquelle kein Geld hat dann speziellen Text ausgeben
+ TempSprachText.Enqueue("Bar_Hinweis_KeineGeld1");
+ TempSprachText.Enqueue("Bar_Hinweis_KeineGeld2");
+ }
+ else
+ {
+ //Abziehen des Geldes bei der Geldquelle
+ geldQuellenSchiff.vermindernBudget(500);
+ überprüfeGeldquellen();
+ if (Hinweis != "")
+ {
+ TempSprachText.Enqueue(Hinweis);
+ }
+ else
+ {
+ TempSprachText.Enqueue("Bar_Hinweis_KeineHinweise1");
+ TempSprachText.Enqueue("Bar_Hinweis_KeineHinweise2");
+ }
+ }
+
+ }
+
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+
+ break;
+ case 6:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ //Auswahl Wechseln Anzeige Geldstand(der angedockten Schiffe oder der Filiale wenn vorhanden)
+
+ //Wechsle die Geldquelle
+ geldQuellenIndex++;
+ TempQueue.Clear();
+
+ if (geldQuellenIndex >= möglicheGeldQuellen.Count())
+ {
+ geldQuellenIndex = 0;
+ }
+ // Paramter1: Quellort Geld
+ // Parameter2: Geldmenge der Quelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ geldQuellenSchiff = null;
+ TempQueue.Enqueue((f.BUDGET / 100).ToString());
+ TempQueue.Enqueue((f.BUDGET % 100).ToString());
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ geldQuellenSchiff = s;
+ geldZielFiliale = null;
+ TempQueue.Enqueue((s.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((s.SCHIFFSBUDGET % 100).ToString());
+ break;
+ }
+ }
+ }
+ TextLieferant.wechsleAuswahlText("1", TempQueue, false);
+ break;
+ }
+ #endregion
+ break;
+ case "1.1A":
+ #region Mannschaft Suchen - Welches Schiff? (Demoready)
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 999:
+ // Abbruch
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TempSprachText.Clear();
+ TempSprachText.Enqueue("Bar_Abbruch");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+
+ überprüfeGeldquellen();
+ geldQuellenIndex = 0;
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+
+ }
+ TextLieferant.wechsleAuswahlText("1", TempQueue, false);
+ break;
+ default:
+ // Jeweilige Auswahl ist die Bootsauswahl
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TempSchiff = null;
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == letzteÜbergebeneListe[tempAuswahl - 1])
+ {
+ TempSchiff = s;
+ break;
+ }
+
+ }
+
+ gewählterMannschaftsGrad = 0;
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ TempSprachText.Enqueue("Bar_GutesSchiff");
+ TempSprachParams.Enqueue(TempSchiff.NAME);
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth - 25, 150);
+
+ //Beschreibungstexte
+ TempQueue.Clear();
+ string TempMaxMann = TempSchiff.MANNSCHAFT_MAXGRÖßE.ToString();
+ //Text 1
+ TempQueue.Enqueue(TempMaxMann);
+ TempQueue.Enqueue(TempSchiff.NAME);
+ //Text 2
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 3
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 4
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 5
+ TempQueue.Enqueue(TempSchiff.NAME);
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 6
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 7
+ TempQueue.Enqueue(TempMaxMann);
+ TempQueue.Enqueue(TempSchiff.NAME);
+ //Text 8
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 9
+ TempQueue.Enqueue(TempMaxMann);
+ //Text 10
+ TempQueue.Enqueue(TempMaxMann);
+
+ TextLieferant.wechsleAuswahlText("1.1B", TempQueue, false);
+
+ break;
+ }
+ #endregion
+ break;
+ case "1.1B":
+ #region Mannschaftswahl (Demoready)
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ // Hier muss für jede Auswahl immer alle Möglichen Baumstränge abgedeckt werden, wenn neuer Baumzweig hinzukommt muss hier seine Auswahl verwaltet werden
+ case 1:
+ //Abbruch
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TempSprachText.Clear();
+ TempSprachText.Enqueue("Bar_Abbruch");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+
+ überprüfeGeldquellen();
+ geldQuellenIndex = 0;
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+
+ }
+ TextLieferant.wechsleAuswahlText("1", TempQueue, false);
+ break;
+ case 2:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Bestätigung
+ //Erzeugen des Bemannungs-Events
+ DateTime TempDatum = Globals.AktuellesDatum + StandardAnheuerzeit;
+ List TempList = new List();
+ bool GradGewählt = true;
+ switch (gewählterMannschaftsGrad)
+ {
+ case 0:
+ GradGewählt = false;
+ break;
+ case 1:
+ TempList.Add("SPITZE");
+ break;
+ case 2:
+ TempList.Add("ERFAHREN");
+ break;
+ case 3:
+ TempList.Add("TÜCHTIG");
+ break;
+ case 4:
+ TempList.Add("ZUVERLÄSSIG");
+ break;
+ case 5:
+ TempList.Add("STANDARD");
+ break;
+ case 6:
+ TempList.Add("FÄHIG");
+ break;
+ case 7:
+ TempList.Add("BRAUCHBAR");
+ break;
+ case 8:
+ TempList.Add("BILLIG");
+ break;
+ case 9:
+ TempList.Add("GRÜNSCHNABEL");
+ break;
+ case 10:
+ TempList.Add("IDIOTEN");
+ break;
+ }
+
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ if (GradGewählt)
+ {
+ Globals.EventAktion(new WeltEvent(TempDatum, "MANNSCHAFT_BEREITSTELLUNG", null, null, TempSchiff, aktuellerHafen, 0, null, TempList), "EINFÜGEN");
+ TempSchiff.besatzungBereitstellen();
+ TempSprachText.Enqueue("Bar_Mannschaftswahl_Anheuern");
+ //1. Sprachparam => Anzahl Tage bis Anheuerung Komplett
+ TempSprachParams.Enqueue(StandardAnheuerzeit.Days.ToString());
+ //2. Param => Name des Schiffs
+ TempSprachParams.Enqueue(TempSchiff.NAME);
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth - 25, 150);
+
+ überprüfeGeldquellen();
+ geldQuellenIndex = 0;
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+
+ }
+ TextLieferant.wechsleAuswahlText("1", TempQueue, false);
+
+ }
+ else
+ {
+ TempSprachText.Enqueue("Bar_Mannschaftswahl_WelcheLeute");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+
+ }
+ break;
+ default:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Wahl der Mannschaftserfahrung
+ //Je nach Auswahl andere spezifische Details setzen -> restliche Aktionen für alle gleich
+ int tempIndex = tempAuswahl - 3;
+ gewählterMannschaftsGrad = tempAuswahl - 2;
+ MannschafsKosten = (Globals.MannschaftskostenMin + Globals.ErfahrungsFaktor[tempIndex]) * TempSchiff.MANNSCHAFT_MAXGRÖßE;
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ TempSprachText.Enqueue("Bar_Mannschaftswahl_Preis");
+ //SprachParams:
+ //1. Anzahl BesatzungsMaxGröße
+ //2.&3. Preis pro Monat
+ TempSprachParams.Enqueue(TempSchiff.MANNSCHAFT_MAXGRÖßE.ToString());
+ TempSprachParams.Enqueue((MannschafsKosten / 100).ToString());
+ TempSprachParams.Enqueue((MannschafsKosten % 100).ToString());
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth - 25, 150);
+ break;
+ }
+ #endregion
+ break;
+ case "1.2":
+ #region Filialerstellung
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Filiale erstellen
+ #endregion
+ break;
+ case "1.4":
+ #region Geldtransfer
+ //Geldtransfer Menü
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ // Hier muss für jede Auswahl immer alle Möglichen Baumstränge abgedeckt werden, wenn neuer Baumzweig hinzukommt muss hier seine Auswahl verwaltet werden
+ case 1:
+ //Geldquelle ändern
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ geldQuellenIndex++;
+ TempQueue.Clear();
+
+ if (geldQuellenIndex >= möglicheGeldQuellen.Count())
+ {
+ geldQuellenIndex = 0;
+ }
+ // Paramter1: Quellort Geld
+ // Parameter2: Geldmenge der Quelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempQueue.Enqueue((f.BUDGET / 100).ToString());
+ TempQueue.Enqueue((f.BUDGET % 100).ToString());
+ zielBetrag = f.BUDGET;
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempQueue.Enqueue((s.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((s.SCHIFFSBUDGET % 100).ToString());
+ zielBetrag = s.SCHIFFSBUDGET;
+ break;
+ }
+ }
+ }
+ //Restlichen Params ebenfalls neu zeichnen
+ if (geldZielFiliale != null)
+ {
+ TempQueue.Enqueue("DAS LAGER");
+ zielNamen = "INS LAGER";
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + geldZielSchiff.NAME);
+ zielNamen = "AUF DIE " + geldZielSchiff.NAME;
+ }
+
+ //Zielbetrag
+ TempQueue.Enqueue((zielBetrag / 100).ToString());
+ TempQueue.Enqueue((zielBetrag % 100).ToString());
+ //Zielnamen
+ TempQueue.Enqueue(zielNamen);
+ //
+ TextLieferant.wechsleAuswahlText("1.4", TempQueue, false);
+ break;
+ case 2:
+ //Zielkasse ändern
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ geldZielIndex++;
+ if(geldZielIndex >= möglicheGeldQuellen.Count())
+ {
+ geldZielIndex = 0;
+ }
+
+ geldQuellenFiliale = null;
+ geldQuellenSchiff = null;
+ TempQueue.Clear();
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.Name == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ //2. Zeile Zielgeldquelle
+ if (möglicheGeldQuellen[geldZielIndex] == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldZielFiliale = f;
+ geldZielSchiff = null;
+ zielNamen = "INS LAGER";
+ break;
+ }
+ }
+ TempQueue.Enqueue("DAS LAGER");
+ }
+ else
+ {
+
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldZielIndex])
+ {
+ geldZielSchiff = s;
+ geldZielFiliale = null;
+ zielNamen = "AUF DIE " + geldZielSchiff.NAME;
+ break;
+ }
+ }
+
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldZielIndex]);
+ }
+ //3. Zeile möglicher Betrag (max der Geldquelle)
+ TempQueue.Enqueue((zielBetrag / 100).ToString());
+ TempQueue.Enqueue((zielBetrag % 100).ToString());
+
+ //4. Zeile Bestätigung + Zielnamen
+ TempQueue.Enqueue(zielNamen);
+
+ TextLieferant.wechsleAuswahlText("1.4", TempQueue, false);
+ break;
+ case 3:
+ //Zielbetrag ändern
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+
+ //Bei linksklick erhöhen, bei rechts klick vermindern
+ if (TextLieferant.checkButtonAuswahl() == "MausLinks")
+ {
+ //Bei Linksklick erhöhen um $100
+ zielBetrag += 10000;
+ int TempMax;
+ if(geldZielFiliale != null)
+ {
+ if (zielBetrag > geldQuellenFiliale.BUDGET)
+ TempMax = geldQuellenFiliale.BUDGET;
+ }
+ else
+ {
+ if (zielBetrag > geldQuellenSchiff.SCHIFFSBUDGET)
+ TempMax = geldQuellenSchiff.SCHIFFSBUDGET;
+ }
+
+
+ }
+ else
+ {
+ //bei rechtsklick vermindern um $100
+ zielBetrag -= 10000;
+
+ //Min kriterium
+ if (zielBetrag < 0)
+ {
+ zielBetrag = 0;
+ }
+ }
+
+ TempQueue.Clear();
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.Name == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ //2. Zeile Zielgeldquelle
+ if (möglicheGeldQuellen[geldZielIndex] == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldZielFiliale = f;
+ geldZielSchiff = null;
+ zielNamen = "INS LAGER";
+ break;
+ }
+ }
+ TempQueue.Enqueue("DAS LAGER");
+ }
+ else
+ {
+
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldZielIndex])
+ {
+ geldZielSchiff = s;
+ geldZielFiliale = null;
+ zielNamen = "AUF DIE " + geldZielSchiff.NAME;
+ break;
+ }
+ }
+
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldZielIndex]);
+ }
+ //3. Zeile möglicher Betrag (max der Geldquelle)
+ TempQueue.Enqueue((zielBetrag / 100).ToString());
+ TempQueue.Enqueue((zielBetrag % 100).ToString());
+
+ //4. Zeile Bestätigung + Zielnamen
+ TempQueue.Enqueue(zielNamen);
+
+ TextLieferant.wechsleAuswahlText("1.4", TempQueue, false);
+
+ break;
+ case 4:
+ //Bestätigung
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ break;
+ case 5:
+ //Abbruch
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TempSprachText.Clear();
+ TempSprachText.Enqueue("Bar_Abbruch");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth - 25, 150);
+
+ überprüfeGeldquellen();
+ geldQuellenIndex = 0;
+ //1. Zeile Quellen Name und Geldbetrag
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ geldQuellenFiliale = f;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ geldQuellenSchiff = s;
+ break;
+ }
+ }
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((geldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+
+ }
+ TextLieferant.wechsleAuswahlText("1", TempQueue, false);
+ break;
+ }
+ #endregion
+ break;
+ }
+ }
+
+ private string überprüfeHinweise()
+ {
+ string TempString = "";
+ switch (aktuellerHafen.NAME)
+ {
+ //Hier pflegen welche Häfen Hinweise Vergeben und wie diese lauten (sowie Rückgabe des Strings dazu)
+ case "LIVERPOOL":
+ break;
+ }
+
+ if (TempString == "")
+ {
+ return "";
+ }
+ else
+ {
+ return TempString;
+ }
+ }
+
+ private void überprüfeGeldquellen()
+ {
+ //Liste möglicher Geldquellen (Für einige Auswahlbäume notwendig)
+ // MöglicheGeldQuelle wird im Verkaufsstrang als ZielKasse benutzt
+ möglicheGeldQuellen.Clear();
+ geldQuellenIndex = 0;
+ aktuellerHafen.überprüfeAktuelleFilialeVorhanden(Globals.AktuellerSpieler);
+
+ if (aktuellerHafen.filialeVorhanden)
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ möglicheGeldQuellen.Add("LAGER");
+
+ }
+ }
+
+ }
+
+ //Wenn Schiffe vorhanden -> Schiff ist mögliche Quelle
+ foreach (Schiff Boot in aktuellerHafen.angedockteSchiffe)
+ {
+ if (Boot.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ //Mögliche Geldziele sind alle Schiffe des Spielers
+ möglicheGeldQuellen.Add(Boot.NAME);
+
+ }
+ }
+ }
+
+ private class EventSorter : IComparer
+ {
+ //Sortier Comparer -> Sortiert alle Events nach Datum (muss immer aufgerfen werden wenn datum abgefragt wird)
+ public int Compare(WeltEvent e1, WeltEvent e2)
+ {
+ if (e1.EventDate.CompareTo(e2.EventDate) == 0)
+ {
+ //Wenn beide Events gleich dann nach Spieler Sortieren
+ switch (e1.BetroffenerSpielerName)
+ {
+ case "System":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "System": return 0;
+ default: return -1;
+ }
+ case "Spieler1":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "System": return 1;
+ case "Spieler1": return 0;
+ default: return -1;
+ }
+
+ case "Spieler2":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "System": return 1;
+ case "Spieler1": return 1;
+ case "Spieler2": return 0;
+ default: return -1;
+ }
+ case "Spieler3":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "Spieler3": return 0;
+ case "Spieler4": return -1;
+ default: return 1;
+ }
+ case "Spieler4":
+ switch (e2.BetroffenerSpielerName)
+ {
+ case "Spieler4": return 0;
+ default: return 1;
+ }
+ default: return 0;
+ }
+ }
+ else
+ return e1.EventDate.CompareTo(e2.EventDate);
+ }
+ }
+ }
+
+}
diff --git a/1869_Remake/Scenes/ConfigScreen.cs b/1869_Remake/Scenes/ConfigScreen.cs
new file mode 100644
index 0000000..ab8fced
--- /dev/null
+++ b/1869_Remake/Scenes/ConfigScreen.cs
@@ -0,0 +1,890 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+using _1869_Remake.ToolKlassen;
+using _1869_Remake.Entities;
+
+namespace _1869_Remake.Scenes
+{
+ public class ConfigScreen : Scene
+ {
+
+ // Imageobjekte mit dem Config Bildschirm
+ public Image ConfigImage = new Image(Assets.CONFIGSCREEN);
+ public Image FadeInBlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image FadeOutBlackScreen = new Image(Assets.BLACKSCREEN);
+
+ // Welche Einstellungsseite gerade gezeigt wird
+ // 0 = Moduswahl
+ // 1 = Ladebildschirm
+ // 2 = Anzahl Spieler
+ // 3 = Name der Spieler
+ // 4 = Geschlechterwahl
+ // 5 = Firma der Spieler
+ // 6 = Starthafen wählen
+ // 7 = Bestätigung der Daten
+ // 8 = Spieldauer
+
+ public int configSeite = 0;
+
+ //Nur wenn wahl abgeschlossen wird nächster Text angezeigt
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+
+ //Anzahl Spieler : 1-4 möglich
+
+ public int aktuellerSpieler = 0;
+ public int spielerIndex = 1;
+ public Hafen startFiliale;
+
+ public Text[] anzeigeTexte = new Text[10];
+ //Textbox zum Eingeben der Texte
+
+ public TextBox textFeld;
+
+ //Geschlecht: M = Männlich, W = Weiblich
+ public String geschlecht;
+
+ //Name der Firma und des Spielers
+ string spielerName;
+ public string nameFirma;
+ public int ersteFiliale;
+
+ public int spielDauer;
+ public bool bestätigt = false;
+ private bool beginner = false;
+ private Hafen tempHafen;
+
+ public const float TIMER_GRENZE = 45f;
+ //AnzeigeTimer muss hoch starten damit sofort erstes bild angezeigt wird
+ public float szenenTimer = 0f;
+ public int counter = 0;
+
+ public ConfigScreen()
+ {
+ Globals.aktuelleSzene = "Config";
+
+ //Initialisieren des Hauptbildschirms und einblenden
+ ConfigImage.CenterOrigin();
+ ConfigImage.X = Globals.Remake.HalfWidth;
+ ConfigImage.Y = Globals.Remake.HalfHeight;
+
+ ConfigImage.Alpha = 1f;
+
+ AddGraphic(ConfigImage);
+ Tween(ConfigImage, new { Alpha = 1f }, 120f, 0f).Ease(Ease.BackInOut);
+
+ //Vorbereiten des Blackscreens
+ FadeInBlackScreen.CenterOrigin();
+ FadeInBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeInBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeInBlackScreen.Alpha = 1f;
+
+ AddGraphic(FadeInBlackScreen);
+ Tween(FadeInBlackScreen, new { Alpha = 0f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ FadeOutBlackScreen.CenterOrigin();
+ FadeOutBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeOutBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeOutBlackScreen.Alpha = 0f;
+
+
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ //Erst nach Timer sind aktionen möglich
+ if (szenenTimer >= TIMER_GRENZE)
+ {
+
+ // Nach dem timer alle unsichtbaren Texte einblenden um Zeit zwischen Texten zu simulieren => Kein flackern durch schnell eingeblendete Texte
+ // Nur neu erstellen wenn notwendig für bessere Performance
+ if (!anzeigeFertig)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ t.Alpha = 1f;
+ t.Color = Globals.ConfigGrau;
+ }
+ }
+
+ if (configSeite == 3 || configSeite == 5)
+ {
+ textFeld.Focus();
+ }
+ anzeigeFertig = true;
+ }
+
+
+ if (wahlFertig)
+ {
+ //Initialisieren der Grafiken erst ab 2. Durchgang (Nurentfernen der Texte nicht des Hintergrundbildes)
+ if (configSeite != 0)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ RemoveGraphic(t);
+ }
+
+ if (configSeite == 4 || configSeite == 6)
+ Remove(textFeld);
+ }
+
+
+ //Initialisieren des Arrays
+ counter = 0;
+ foreach (var t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ counter++;
+ }
+ }
+
+ for (int i = 0; i < counter; i++)
+ {
+ anzeigeTexte[i] = null;
+ }
+
+ //Anzeige des aktuellen Textes
+ switch (configSeite)
+ {
+ //Versionsscreen
+ case 0:
+ anzeigeTexte[0] = Globals.CONFIGTEXT0;
+ anzeigeTexte[1] = Globals.CONFIGTEXT0_1;
+ anzeigeTexte[2] = Globals.CONFIGTEXT0_2;
+ break;
+ //Spiel laden oder Neu
+ case 1:
+ anzeigeTexte[0] = Globals.CONFIGTEXT1;
+ break;
+ //Anzahl Spieler
+ case 2:
+ anzeigeTexte[0] = Globals.CONFIGTEXT2;
+
+ break;
+ // Name Spieler
+ case 3:
+ switch (aktuellerSpieler)
+ {
+ case 1: anzeigeTexte[0] = Globals.CONFIGTEXT3_A; break;
+ case 2: anzeigeTexte[0] = Globals.CONFIGTEXT3_B; break;
+ case 3: anzeigeTexte[0] = Globals.CONFIGTEXT3_C; break;
+ case 4: anzeigeTexte[0] = Globals.CONFIGTEXT3_D; break;
+
+ }
+
+ //Eingabefeld für Texteingabe
+ textFeld = new TextBox(Globals.Remake.HalfWidth - 50, Globals.Remake.HalfHeight, 100, 20, 15, true);
+ this.Add(textFeld);
+
+ break;
+ // Geschlecht
+ case 4:
+
+ anzeigeTexte[0] = Globals.CONFIGTEXT4;
+ break;
+ // Name Firma
+ case 5:
+ switch (aktuellerSpieler)
+ {
+ case 1: anzeigeTexte[0] = Globals.CONFIGTEXT5_A; break;
+ case 2: anzeigeTexte[0] = Globals.CONFIGTEXT5_B; break;
+ case 3: anzeigeTexte[0] = Globals.CONFIGTEXT5_C; break;
+ case 4: anzeigeTexte[0] = Globals.CONFIGTEXT5_D; break;
+
+ }
+
+ //Eingabefeld für Texteingabe
+ textFeld = new TextBox(Globals.Remake.HalfWidth - 50, Globals.Remake.HalfHeight, 100, 20, 15, true);
+ this.Add(textFeld);
+
+ break;
+ //Starthafen
+ case 6:
+ anzeigeTexte[0] = Globals.CONFIGTEXT6_A;
+ anzeigeTexte[1] = Globals.CONFIGTEXT6_B;
+ anzeigeTexte[2] = Globals.CONFIGTEXT6_C;
+ anzeigeTexte[3] = Globals.CONFIGTEXT6_D;
+ anzeigeTexte[4] = Globals.CONFIGTEXT6_E;
+ anzeigeTexte[5] = Globals.CONFIGTEXT6_F;
+ break;
+ // Zusammenfassung der Daten
+ case 7:
+
+ anzeigeTexte[0] = new Text("SPIELERNAME: " + spielerName, Assets.FONT_AMIGA4EVER2, 10);
+ anzeigeTexte[1] = new Text("GESCHLECHT : " + geschlecht, Assets.FONT_AMIGA4EVER2, 10);
+ anzeigeTexte[2] = new Text("FIRMENNAME : " + nameFirma, Assets.FONT_AMIGA4EVER2, 10);
+ anzeigeTexte[3] = new Text("STARTHAFEN : " + startFiliale.NAME, Assets.FONT_AMIGA4EVER2, 10);
+ anzeigeTexte[4] = new Text("", Assets.FONT_AMIGA4EVER2, 10);
+ anzeigeTexte[5] = Globals.CONFIGTEXT7;
+
+ //Hier Kopieren der Spieler in die Globalen Daten einfügen Wenn daten struktur bestimmt ist
+
+ break;
+ // Spieldauer wählen 5-26 Jahre
+ case 8:
+ anzeigeTexte[0] = Globals.CONFIGTEXT8_A;
+ anzeigeTexte[1] = Globals.CONFIGTEXT8_B;
+ anzeigeTexte[2] = Globals.CONFIGTEXT8_C;
+ anzeigeTexte[3] = Globals.CONFIGTEXT8_D;
+ anzeigeTexte[4] = Globals.CONFIGTEXT8_E;
+ anzeigeTexte[5] = Globals.CONFIGTEXT8_F;
+ anzeigeTexte[6] = Globals.CONFIGTEXT8_G;
+ anzeigeTexte[7] = Globals.CONFIGTEXT8_H;
+ break;
+ }
+
+ //Aufbau der Texte in der mitte des Bildschirms (transparent)
+ int indexer = 0;
+ foreach (Text t in anzeigeTexte)
+ {
+
+ if (t != null)
+ {
+ if (configSeite == 6)
+ {
+ //ohne Center origin damit linksbündigkeit bleibt
+ t.X = 150;
+ t.Y = Globals.Remake.HalfHeight - 60 + (indexer * 15);
+
+ t.Alpha = 0f;
+ AddGraphic(t);
+ }
+ else
+ if (configSeite == 7 && indexer != 5)
+ {
+ //ohne Center origin damit linksbündigkeit bleibt
+ t.X = 200;
+ t.Y = Globals.Remake.HalfHeight - 60 + (indexer * 15);
+
+ t.Alpha = 0f;
+ AddGraphic(t);
+
+ }
+ else
+ {
+ t.CenterOrigin();
+ t.X = Globals.Remake.HalfWidth + 50 - (t.ToString().Length * 5);
+ t.Y = Globals.Remake.HalfHeight - 30 + (indexer * 15);
+
+
+ t.Alpha = 0f;
+ AddGraphic(t);
+ }
+ indexer++;
+
+ }
+
+ }
+
+ //Wechsel des Textes fertig und timer neu reseten; Nach wechsel muss erst Eingabe des Users erfolgen für nächsten Wechsel
+ wahlFertig = false;
+ anzeigeFertig = false;
+ szenenTimer = 0f;
+
+ }
+
+ switch (configSeite)
+ {
+ //Versionsscreen
+ case 0:
+ if (Globals.PlayerSession.Controller.Button("O").Pressed)
+ {
+ Globals.SpielModus = 1;
+
+ configSeite++;
+ wahlFertig = true;
+ setzeHäfen(Globals.SpielModus);
+ setzenWare(Globals.SpielModus);
+ setzeSchiffsTypen(Globals.SpielModus);
+ setzenWarenAufstockung(Globals.SpielModus);
+ setzenMeeresKnoten(Globals.SpielModus);
+ setzenMeeresStraßen(Globals.SpielModus);
+ setzePreisListeUnerwünscht(Globals.SpielModus);
+
+
+ }
+
+ if (Globals.PlayerSession.Controller.Button("R").Pressed)
+ {
+ //Solange keine erweiterung der Häfen/WAREN geplant weiterhin die reguläre Palette setzen
+ Globals.SpielModus = 1;
+ configSeite++;
+ wahlFertig = true;
+
+ setzeHäfen(Globals.SpielModus);
+ setzeSchiffsTypen(Globals.SpielModus);
+ setzenWare(Globals.SpielModus);
+ setzenMeeresKnoten(Globals.SpielModus);
+ setzenMeeresStraßen(Globals.SpielModus);
+ setzenWarenAufstockung(Globals.SpielModus);
+ setzePreisListeUnerwünscht(Globals.SpielModus);
+
+ }
+
+ break;
+ //Spiel laden oder Neu
+ case 1:
+ if (Globals.PlayerSession.Controller.Button("Leer").Pressed)
+ {
+ configSeite++;
+ wahlFertig = true;
+
+ }
+ else
+
+ if (Globals.PlayerSession.Controller.Button("J").Pressed)
+ {
+ configSeite++;
+ wahlFertig = true;
+
+
+ }
+
+ break;
+ //Anzahl Spieler
+ case 2:
+ if (Globals.PlayerSession.Controller.Button("1").Pressed)
+ {
+ Globals.AnzahlSpieler = 1;
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("2").Pressed)
+ {
+ Globals.AnzahlSpieler = 2;
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("3").Pressed)
+ {
+ Globals.AnzahlSpieler = 3;
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("4").Pressed)
+ {
+ Globals.AnzahlSpieler = 4;
+ wahlFertig = true;
+
+ }
+
+ if (wahlFertig)
+ {
+ configSeite++;
+ //Setzen des ersten Spielers
+ aktuellerSpieler = 1;
+
+
+ }
+
+ break;
+ // Name Spieler
+ case 3:
+ if (Globals.PlayerSession.Controller.Button("Enter").Pressed)
+ {
+ spielerName = textFeld.getInput();
+ configSeite++;
+ wahlFertig = true;
+
+ }
+ break;
+ // Geschlecht
+ case 4:
+ if (Globals.PlayerSession.Controller.Button("M").Pressed)
+ {
+ geschlecht = "MÄNNLICH";
+ configSeite++;
+ wahlFertig = true;
+
+ }
+ else
+ if (Globals.PlayerSession.Controller.Button("W").Pressed)
+ {
+ geschlecht = "WEIBLICH";
+ configSeite++;
+ wahlFertig = true;
+
+ }
+
+ break;
+ // Name Firma
+ case 5:
+ if (Globals.PlayerSession.Controller.Button("Enter").Pressed)
+ {
+ nameFirma = textFeld.getInput();
+ configSeite++;
+ wahlFertig = true;
+
+ }
+ break;
+
+ //Starthafen
+ case 6:
+ if (Globals.PlayerSession.Controller.Button("1").Pressed)
+ {
+
+ Globals.AlleHäfen.TryGetValue("LIVERPOOL", out tempHafen);
+
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("2").Pressed)
+ {
+ Globals.AlleHäfen.TryGetValue("LONDON", out tempHafen);
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("3").Pressed)
+ {
+ Globals.AlleHäfen.TryGetValue("LES HAVRES", out tempHafen);
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("4").Pressed)
+ {
+ Globals.AlleHäfen.TryGetValue("NEW YORK", out tempHafen);
+ wahlFertig = true;
+ }
+ if (Globals.PlayerSession.Controller.Button("5").Pressed)
+ {
+ Globals.AlleHäfen.TryGetValue("SAVANNAH", out tempHafen);
+ wahlFertig = true;
+
+ }
+
+ if (wahlFertig)
+ {
+ startFiliale = tempHafen;
+ configSeite++;
+
+ }
+ break;
+ // Zusammenfassung der Daten (Bestätigung J/N) -> wenn J dann nächster Spieler oder Spieldauerwahl/ Wenn N dann zu case 3 mit selbem Spieler
+ case 7:
+ if (Globals.PlayerSession.Controller.Button("J").Pressed)
+ {
+ wahlFertig = true;
+ bestätigt = true;
+ Spieler tempSpieler = new Spieler(spielerName, nameFirma, geschlecht,spielerIndex++);
+ tempSpieler.gründetFiliale(startFiliale,0);
+ // Testschiffe hinzufügen (Zu testzwecken) -> Alle starten am Starthafen
+ /*
+ tempSpieler.erhalteSchiff(startFiliale.NAME,1);
+ tempSpieler.erhalteSchiff(startFiliale.NAME, 2);
+ tempSpieler.erhalteSchiff(startFiliale.NAME, 3);
+ tempSpieler.erhalteSchiff(startFiliale.NAME, 4);
+ tempSpieler.erhalteSchiff(startFiliale.NAME, 5);
+ */
+
+
+ }
+
+ if (Globals.PlayerSession.Controller.Button("N").Pressed)
+ {
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ if (bestätigt)
+ {
+ bestätigt = false;
+ if (aktuellerSpieler == Globals.AnzahlSpieler)
+ {
+ configSeite++;
+
+ }
+ else
+ {
+ aktuellerSpieler++;
+ configSeite = 3;
+ }
+ }
+ else
+ {
+ configSeite = 3;
+
+ }
+
+
+
+ }
+ break;
+
+ // Spieldauer wählen 5-26 Jahre
+ case 8:
+
+ if (Globals.PlayerSession.Controller.Button("A").Pressed)
+ {
+ Globals.Spieldauer = 5;
+ wahlFertig = true;
+
+ }
+ if (Globals.PlayerSession.Controller.Button("B").Pressed)
+ {
+ Globals.Spieldauer = 10;
+ wahlFertig = true;
+ }
+ if (Globals.PlayerSession.Controller.Button("C").Pressed)
+ {
+ Globals.Spieldauer = 15;
+ wahlFertig = true;
+ }
+ if (Globals.PlayerSession.Controller.Button("D").Pressed)
+ {
+ Globals.Spieldauer = 20;
+ wahlFertig = true;
+ }
+ if (Globals.PlayerSession.Controller.Button("E").Pressed)
+ {
+ Globals.Spieldauer = 26;
+ wahlFertig = true;
+ }
+
+ if (Globals.PlayerSession.Controller.Button("F").Pressed)
+ {
+ Globals.Spieldauer = 5;
+ //Bei beginnerspiel wird mehr startkapital festgelegt
+ beginner = true;
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+
+ foreach (Spieler aktuellerSpieler in Globals.SpielerListe)
+ {
+ //Wenn Spieldauer bestimmt wurde, erhöhe das Budget der Startfiliale(erste und einzige Filiale bisher) um 7000 [da ohne floats gearbeitet werden soll geben wir 70000 ein]
+ if (beginner)
+ aktuellerSpieler.FILIALEN.First().erhöheBudget(1200000);
+ else
+ aktuellerSpieler.FILIALEN.First().erhöheBudget(700000);
+ }
+
+ Tween(FadeOutBlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+ AddGraphic(FadeOutBlackScreen);
+
+
+ }
+
+ if (FadeOutBlackScreen.Alpha >= 0.999f)
+ {
+ //Setzen des Startdatums (StartDatum ist immer 01.01.1854
+ //Einfügen der festen WeltEvents in die Queue (Original Version)
+ setzenBasisEvents(1);
+
+ switch (Globals.SpielerListe[0].FILIALEN[0].HEIMATHAFEN.NAME)
+ {
+ case "LIVERPOOL":
+ case "LONDON":
+ case "LES HAVRES":
+ Globals.weltKarte = "EUROPA"; break;
+ case "SAVANNAH":
+ case "NEW YORK":
+ Globals.weltKarte = "AMERIKA"; break;
+ }
+
+ //Szenenwechsel
+ Globals.LetzteSzene = "Config";
+ this.RemoveAll();
+ this.ClearGraphics();
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ break;
+ }
+
+
+ }
+
+
+ }
+
+ public void setzeHäfen(int Version)
+ {
+ // Original Version
+ if (Version == 1)
+ {
+
+ //Anlegen aller Originalhäfen (39 Stück)
+
+ //Amerika
+ new Hafen("SAN FRANZISKO", "VEREINIGTE STAATEN", 0, 0, false);
+ new Hafen("NEW ORLEANS", "VEREINIGTE STAATEN", 0, 0, false);
+ new Hafen("SAVANNAH", "VEREINIGTE STAATEN", 0, 0, false);
+ new Hafen("NEW YORK", "KUBA", 0, 0, false);
+ new Hafen("LOS ANGELES", "VEREINIGTE STAATEN", 0, 0, false);
+ new Hafen("PUERTO BELLO", "PANAMA", 0, 0, false);
+ new Hafen("CEYENNE", "GUAYANA", 0, 0, false);
+ new Hafen("CALLAO", "PERU", 0, 0, false);
+ new Hafen("ARICA", "CHILE", 0, 0, false);
+ new Hafen("RIO DE JANEIRO", "KÖNIGREICH BRASILIEN", 0, 0, false);
+
+ //Afrika
+ new Hafen("AKKRA", "NIGERIA", 0, 0, false);
+ new Hafen("LAGOS", "GOLDKÜSTE", 0, 0, false);
+ new Hafen("LUANDA", "ANGOLA", 0, 0, false);
+ new Hafen("KAPSTADT", "KAPLAND", 0, 0, false);
+ new Hafen("MOCAMBIQUE", "MOCAMBIQUE", 0, 0, false);
+ new Hafen("TANGA", "DEUTSCH-OSTAFRIKA", 0, 0, false);
+ //Europa Punkt
+ new Hafen("PORT SAID", "ÄGYPTEN", 555, 350, false);
+ new Hafen("ADEN", "ARABIEN", 0, 0, false);
+ //Europa Punkt
+ new Hafen("TUNIS", "TUNESIEN", 355, 285, false);
+
+ //Europa
+ new Hafen("ODESSA", "KAISERREICH RUSSLAND", 500, 185, false);
+ new Hafen("TRIEST", "KAISERREICH ÖSTERREICH / KOLONIE DER MAX-GRUPPE", 385, 185, false);
+ new Hafen("BARCELONA", "KÖNIGREICH SPANIEN", 290, 235, false);
+ new Hafen("LISSABON", "KÖNIGREICH PORTUGAL", 225, 245, false);
+ new Hafen("LE HAVRE", "KAISERREICH FRANKREICH", 290, 145, true);
+ new Hafen("AMSTERDAM", "KÖNIGREICH NIEDERLANDE", 315, 125, false);
+ new Hafen("HAMBURG", "KÖNIGREICH HANNOVER", 335, 110, false);
+ new Hafen("LONDON", "KÖNIGREICH ENGLAND", 285, 115, true);
+ new Hafen("LIVERPOOL", "KÖNIGREICH ENGLAND", 260, 100, true);
+
+ //Asien/Australien
+ new Hafen("DIU", "INDIEN/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("BOMBAY", "INDIEN/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("COLOMBO", "CEYLON/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("RANGOON", "BURMA/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("MACAO", "CHINA/ENGLISCHER VERTRAGSHAFEN", 0, 0, false);
+ new Hafen("SHANGHAI", "CHINA/ENGLISCHER VERTRAGSHAFEN", 0, 0, false);
+ new Hafen("SINGAPORE", "MALAISIEN/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("MANDAO", "CELEBES/NIEDERLÄNDISCHE KOLONIE", 0, 0, false);
+ new Hafen("PERTH", "AUSTRALIEN/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("MELBOURNE", "AUSTRALIEN/ENGLISCHE KOLONIE", 0, 0, false);
+ new Hafen("SIDNEY", "AUSTRALIEN/ENGLISCHE KOLONIE", 0, 0, false);
+ }
+ }
+
+ public void setzenMeeresKnoten(int Version)
+ {
+ // Original Version
+ if (Version == 1)
+ {
+ new MeeresKnotenpunkt("Test GB");
+ new MeeresKnotenpunkt("Test Spanien");
+ }
+ }
+
+ public void setzenMeeresStraßen(int Version)
+ {
+ // Original Version
+ if (Version == 1)
+ {
+ // To Do: System einführen bei dem alle Straßen zu allen Jahreszeiten bekannt sind und je nach dem ob user diese bereits befahren ist,
+ // zeigen sie mittels farbe an ob man günstige Strömungsverhältnisse hat (schneller am Ziel)
+ new SeeStraße("GB - Spanien",50,50,150,150,2);
+ new SeeStraße("Spanien - GB",150,150,50,50,1);
+ }
+ }
+
+ public void setzenBasisEvents(int Version)
+ {
+ // Da zu Begin des Spiels die Liste leer ist können wir die aktuellen Basis Events beretis eins nach dem anderen hier einfügen
+ // es muss nur sicher gestellt werden, dass in jeder eventabhängigen Instanz eine EventHandler aktiv ist
+ // Original Version
+ if (Version == 1)
+ {
+ //Setzen des Startdatums
+ Globals.AktuellerTag_E = 1;
+ Globals.AktuellerTag_Z = 0;
+ Globals.AktuellerMonat = 1;
+ Globals.AktuellesJahr_E = 4;
+ Globals.AktuellesJahr_Z = 5;
+ Globals.AktuellesJahr_H = 8;
+ Globals.AktuellesJahr_T = 1;
+ Globals.AktuellesDatum = new DateTime(1854, 01, 01);
+
+
+ // Hinweis: Bei Laden des Startevents müssen die Häfen ihr "Initial Lager" erstellen, Beispiel -> Tunis hat zu beginn nur früchte geladen, Kein Pflanzen öl!! (das wird erst gegen März) verfügbar
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "START"),"EINFÜGEN");
+
+ //Für Jeden Spieler muss für den 1.1.1854 ein Spielerwechsel initiiert werden damit die Spieler alle am 1. Tag einmal dran kommen
+ for (int spielerIndex = 0; spielerIndex < Globals.SpielerListe.Count(); spielerIndex++)
+ {
+ Globals.EventAktion(new WeltEvent(new DateTime(1854, 1, 1), "SPIELERWECHSEL", Globals.SpielerListe[spielerIndex]), "EINFÜGEN");
+ }
+
+ //SpielEnde je nach gewählter Spieldauer
+ switch (Globals.Spieldauer)
+ {
+ case 5:
+ Globals.EventAktion(new WeltEvent(new DateTime(1859, 1, 1), "ENDE"),"EINFÜGEN");
+ break;
+ case 10:
+ Globals.EventAktion(new WeltEvent(new DateTime(1864, 1, 1), "ENDE"), "EINFÜGEN");
+ break;
+ case 15:
+ Globals.EventAktion(new WeltEvent(new DateTime(1869, 1, 1), "ENDE"), "EINFÜGEN");
+ break;
+ case 20:
+ Globals.EventAktion(new WeltEvent(new DateTime(1874, 1, 1), "ENDE"), "EINFÜGEN");
+ break;
+ case 26:
+ Globals.EventAktion( new WeltEvent(new DateTime(1880, 1, 1), "ENDE"), "EINFÜGEN");
+ break;
+ }
+
+ }
+ }
+
+ public void setzenWare(int Version)
+ {
+ // Original Version
+ if (Version == 1)
+ {
+ //ToDo: Vervollständigen aller möglichen Waren
+ Globals.AlleWarenTypen = new List();
+ //Anlegen aller Originalwaren (XX Stück)
+ Globals.registriereWarenTyp("BAUMWOLLE");
+ Globals.registriereWarenTyp("EDELHOLZ");
+ Globals.registriereWarenTyp("ELFENBEIN");
+ Globals.registriereWarenTyp("FRÜCHTE");
+ Globals.registriereWarenTyp("GEWÜRZE");
+ Globals.registriereWarenTyp("KAFFEE");
+ Globals.registriereWarenTyp("KAKAO");
+ Globals.registriereWarenTyp("KAUTSCHUK");
+ Globals.registriereWarenTyp("KOHLE");
+ Globals.registriereWarenTyp("MASCHINEN");
+ Globals.registriereWarenTyp("PFLANZENÖL");
+ Globals.registriereWarenTyp("SALPETER");
+ Globals.registriereWarenTyp("SEIDE");
+ Globals.registriereWarenTyp("TABAK");
+ Globals.registriereWarenTyp("TEXTILIEN");
+ Globals.registriereWarenTyp("TEE");
+ Globals.registriereWarenTyp("WAFFEN");
+ Globals.registriereWarenTyp("WEIN");
+ Globals.registriereWarenTyp("WERKZEUG");
+ Globals.registriereWarenTyp("WOLLE");
+ Globals.registriereWarenTyp("ZUCKER");
+
+ }
+ }
+
+ public void setzeSchiffsTypen(int Version)
+ {
+ // Original Version
+ if (Version == 1)
+
+ {
+ Globals.AlleSchiffsTypen = new List();
+ //Anlegen aller möglichenSchiffstypen als Refferenz
+ Globals.registriereSchiffsTyp(new Schiff("SCHONERSCHABLONE","SCHONER",0));
+ Globals.registriereSchiffsTyp(new Schiff("BARKSCHABLONE", "BARK", 0));
+ Globals.registriereSchiffsTyp(new Schiff("HOLZDAMPFSCHIFFSCHABLONE", "HOLZDAMPFSCHIFF", 0));
+ Globals.registriereSchiffsTyp(new Schiff("EISENDAMPFSCHIFFSCHABLONE", "EISENDAMPFSCHIFF", 0));
+ Globals.registriereSchiffsTyp(new Schiff("BRIGGSCHABLONE", "BRIGG", 0));
+ Globals.registriereSchiffsTyp(new Schiff("FREGATTESCHABLONE", "FREGATTE", 0));
+ Globals.registriereSchiffsTyp(new Schiff("KLIPPERSCHABLONE", "KLIPPER", 0));
+
+
+ }
+ }
+
+ // To Do: Sonderpreis logik herausfinden (Wenn sehr Hoher Import von etwas ist)
+ public void setzePreisListeSonder(int Version)
+ {
+ if (Version == 1)
+ {
+ // Wenn richtige Werte berechnet sind muss eingefügt werden; Bis dahin kostet alles pauschal 5 Dollar
+ Globals.PreisListe_UnerwünschteWare.Add("BAUMWOLLE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("EDELHOLZ", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("ELFENBEIN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("FRÜCHTE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("GEWÜRZE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KAFFEE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KAKAO", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KAUTSCHUK", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KOHLE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("MASCHINEN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("PFLANZENÖL", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("SALPETER", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("SEIDE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("TABAK", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("TEXTILIEN", 1850);
+ Globals.PreisListe_UnerwünschteWare.Add("TEE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WAFFEN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WEIN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WERKZEUG", 8480);
+ Globals.PreisListe_UnerwünschteWare.Add("WOLLE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("ZUCKER", 500);
+ }
+ }
+
+ public void setzePreisListeUnerwünscht(int Version)
+ {
+ //Original Version
+ //Anlegen aller PreiseOriginalwaren (XX Stück)
+ //ToDo: Mit jeder Ware in einem Hafen verkaufen gehn in dem die Ware nich gewünscht ist
+
+ if(Version == 1)
+ {
+ // Wenn richtige Werte berechnet sind muss eingefügt werden; Bis dahin kostet alles pauschal 5 Dollar
+ Globals.PreisListe_UnerwünschteWare.Add("BAUMWOLLE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("EDELHOLZ", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("ELFENBEIN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("FRÜCHTE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("GEWÜRZE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KAFFEE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KAKAO", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KAUTSCHUK", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("KOHLE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("MASCHINEN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("PFLANZENÖL", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("SALPETER", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("SEIDE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("TABAK", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("TEXTILIEN", 1140);
+ Globals.PreisListe_UnerwünschteWare.Add("TEE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WAFFEN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WEIN", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WERKZEUG", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("WOLLE", 500);
+ Globals.PreisListe_UnerwünschteWare.Add("ZUCKER", 500);
+ }
+
+
+ }
+
+ public void setzenWarenAufstockung(int Version)
+ {
+ // Original Version
+ if (Version == 1)
+ {
+ //Hinzufügen der AufstockSchablonen für alle Häfen und deren jeweiligen Monaten siehe Restock-Recherchen
+
+ //Amerika
+ //Afrika
+ //Europa
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR",new Ware("MASCHINEN",14520, 100,0,"KISTE"),"EXPORT");
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("TEXTILIEN", 1320, 100, 0, "KISTE"), "EXPORT");
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("BAUMWOLLE", 540, 100, 0, "KISTE"), "IMPORT");
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("TEE", 2290, 100, 0, "KISTE"), "IMPORT");
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("ELFENBEIN", 6980, 100, 0, "KISTE"), "IMPORT");
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("EDELHOLZ", 1420, 100, 0, "KISTE"), "IMPORT");
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("WEIN", 1400, 100, 0, "KISTE"), "IMPORT");
+ //Für Testzwecke auch Textilien Importieren (zum testen von reduziertem Preis und vollem Import Preis)
+ Globals.AlleHäfen["LIVERPOOL"].setzeRestockListe("JANUAR", new Ware("TEXTILIEN", 1000, 75, 0, "KISTE"), "IMPORT");
+ //Asien/Australien
+ }
+ }
+ }
+}
+
diff --git a/1869_Remake/Scenes/HallOfFameScene.cs b/1869_Remake/Scenes/HallOfFameScene.cs
new file mode 100644
index 0000000..8afcf3c
--- /dev/null
+++ b/1869_Remake/Scenes/HallOfFameScene.cs
@@ -0,0 +1,222 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Scenes
+{
+ public class HallOfFameScene : Scene
+ {
+ public Image BlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image HoFScreen = new Image(Assets.HOFSCREEN);
+
+ //AnzeigeTimer aktuell nur für warten vor dem 1. Text (später direkt nach tween)
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+
+ //aktuelle Seite im Hall of Fame "Katalog"
+ public int HoFSeite = 0;
+ public bool ersterAufbau = true;
+
+ public Text[] anzeigeTexte = new Text[10];
+ public Text WeiterText = Globals.TEXT_WEITER;
+ public Text EndeText = Globals.TEXT_ENDE;
+
+ public HallOfFameScene()
+ {
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Hall of Fame";
+
+ HoFScreen.CenterOrigin();
+ HoFScreen.X = Globals.Remake.HalfWidth;
+ HoFScreen.Y = Globals.Remake.HalfHeight;
+
+ HoFScreen.Alpha = 0f;
+
+ AddGraphic(HoFScreen);
+ Tween(HoFScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ WeiterText.X = 200;
+ WeiterText.Y = 390;
+ //Anmerkung wenn .Color nach .Alpha verändert wird , wird anscheinend der Alpha wert wieder zurück auf 1 gesetzt = Vorsicht bei Zuordnung
+ WeiterText.Color = Globals.StdGrün;
+ WeiterText.Alpha = 0f;
+
+
+ AddGraphic(WeiterText);
+ Tween(WeiterText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ EndeText.X = 410;
+ EndeText.Y = 390;
+ EndeText.Color = Globals.StdGrün;
+ EndeText.Alpha = 0f;
+
+
+ AddGraphic(EndeText);
+ Tween(EndeText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ //Vorbereiten des Blackscreens
+ BlackScreen.CenterOrigin();
+ BlackScreen.X = Globals.Remake.HalfWidth;
+ BlackScreen.Y = Globals.Remake.HalfHeight;
+ BlackScreen.Alpha = 0f;
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ //BlackScreen Durchsichtigkeit 1 ist wurde die nächste Szene getriggert -> wechsel zum Hauptbildschirm
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Hall of Fame";
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ //Erst nach Timer sind aktionen möglich
+ if (szenenTimer >= TIMER_GRENZE)
+ {
+ // Nach dem timer alle unsichtbaren Texte einblenden um Zeit zwischen Texten zu simulieren => Kein flackern durch schnell eingeblendete Texte
+ // Nur neu erstellen wenn notwendig für bessere Performance
+ if (!anzeigeFertig)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ t.Alpha = 1f;
+ t.Color = Globals.StdGrün;
+
+ }
+ }
+
+ anzeigeFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ //Initialisieren der Grafiken erst ab 2. Durchgang (Nurentfernen der Texte nicht des Hintergrundbildes)
+ if (!ersterAufbau)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ RemoveGraphic(t);
+ }
+
+ }
+ else
+ {
+ ersterAufbau = false;
+ }
+
+
+ //Initialisieren des Arrays
+ int counter = 0;
+ foreach (var t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ counter++;
+ }
+ }
+
+ for (int i = 0; i < counter; i++)
+ {
+ anzeigeTexte[i] = null;
+
+ }
+
+
+
+ //Anzeige des aktuellen Textes
+ switch (HoFSeite)
+ {
+ //Jede Seite einzeln
+ case 0:
+
+ break;
+
+ case 1:
+
+
+
+ break;
+ case 2:
+
+ break;
+ }
+
+
+
+ //Wechsel des Textes fertig und timer neu reseten; Nach wechsel muss erst Eingabe des Users erfolgen für nächsten Wechsel
+ wahlFertig = false;
+
+
+ }
+
+ //Überprüfen der Buttons
+ //Weiter
+ if (Util.InRect(this.MouseX, this.MouseY, 200, 390, 50, 15))
+ {
+
+ WeiterText.Color = Globals.HighLightMagenta;
+
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ //HOFSeite = 1;
+ anzeigeFertig = false;
+
+ szenenTimer = 0;
+ }
+ }
+
+ else
+ {
+ WeiterText.Color = Globals.StdGrün;
+ }
+
+ //Ende
+ if (Util.InRect(this.MouseX, this.MouseY, 410, 390, 50, 15))
+ {
+
+ EndeText.Color = Globals.HighLightMagenta;
+
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+
+ anzeigeFertig = false;
+
+ szenenTimer = 0;
+ }
+ }
+
+ else
+ {
+ EndeText.Color = Globals.StdGrün;
+ }
+ }
+ }
+ }
+}
diff --git a/1869_Remake/Scenes/HandelScene.cs b/1869_Remake/Scenes/HandelScene.cs
new file mode 100644
index 0000000..ec21c74
--- /dev/null
+++ b/1869_Remake/Scenes/HandelScene.cs
@@ -0,0 +1,2064 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using _1869_Remake;
+using _1869_Remake.ToolKlassen;
+using _1869_Remake.Entities;
+using Otter;
+
+namespace _1869_Remake.Scenes
+{
+ public class HandelScene : Scene
+ {
+ // Der Handelsscreen ist etwas Tricky da hier bei jedem neuen Mal des Aufrufens, eine neue Konstellation an Elementen gen werden muss
+ // -> Beispiel Konstellationen : BG: Holzhütte, Tafelwand: Ziegel mit Fass, Hintergrund: Tür geschlossen, Verkäufer: alter Mann
+
+ //TO Do: a) Sprites für Baukasten extrahieren -> erster Schritt screens aller Einkaufszimmer für alle Häfen & Positionen bei den Sprites auslooten(möglichst vereinheitlichen sonst muss alles feinjustiert werden)
+
+
+ Dictionary BG = new Dictionary();
+ Dictionary BG_Rechts = new Dictionary();
+ Dictionary Verkäufer_Gesicht = new Dictionary();
+ Dictionary Verkäufer_OKörper = new Dictionary();
+ Dictionary Verkäufer_Hände = new Dictionary();
+ Dictionary Verkäufer_DekoVerkäufer = new Dictionary();
+ Dictionary Fenster_Tür = new Dictionary();
+ Dictionary Tisch = new Dictionary();
+ Dictionary TischFachL = new Dictionary();
+ Dictionary TischFachM = new Dictionary();
+ Dictionary TischFachR = new Dictionary();
+ Dictionary Tisch_Deko_Boden = new Dictionary();
+ Dictionary Tür_FeldL = new Dictionary();
+ Dictionary Tür_FeldR = new Dictionary();
+ Dictionary Decke_L = new Dictionary();
+ Dictionary Decke_M = new Dictionary();
+ Dictionary Decke_R = new Dictionary();
+ Dictionary DekoTisch_L = new Dictionary();
+ Dictionary DekoTisch_M = new Dictionary();
+ Dictionary DekoTisch_R = new Dictionary();
+ Dictionary Tafel = new Dictionary();
+ Dictionary Tafel_BG = new Dictionary();
+ Dictionary Tafel_VG = new Dictionary();
+
+ //Liste aller Images, die angezeigt werden müssen in diesem Screen
+ List AnzeigeListe = new List();
+
+ TextBuilder TextLieferant;
+
+ public Image FadeInBlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image FadeOutBlackScreen = new Image(Assets.BLACKSCREEN);
+
+ //AnzeigeTimer
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+
+ //Temporärer Speicherort für die im Auswahlbaum gewählte Ware
+ public Ware gewählteHandelsWare;
+ //Temporärer Speicherort für die Filiale die aktuell verfügbar ist
+ public Filiale gewählteSpielerFiliale;
+ //Temporärer Speicherort für die Filiale die aktuell verfügbar ist
+ public Schiff gewähltesSpielerSchiff;
+ public string gewählteGeldQuelle;
+ //Menge an Waren und Preis die gehandelt werden
+ public int gewählteMenge;
+ public int gewählterPreis;
+ public string gewähltesZiel;
+ public bool WareLeer = false;
+ public bool GeldLeer = false;
+ //Temporäre Liste der möglichen Geldquellen
+ public List möglicheGeldQuellen = new List();
+ public int geldQuellenIndex = 0;
+ //Letzte dem Textbuilder übergebene Liste an Paramtern (Wird nur für Shortcut funktionalität verwender)
+ private List letzteÜbergebeneListe = new List();
+
+ public Hafen aktuellerHafen;
+
+ //TempTextVariablen
+ Queue TempSprachText = new Queue();
+ Queue TempSprachParams = new Queue();
+ Queue TempQueue = new Queue();
+ Schiff TempGeldQuellenSchiff;
+ Filiale TempGeldQuellenFiliale;
+
+
+ public HandelScene(string Preset)
+ {
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Handel";
+
+ //Informationen zum aktuellen Hafen wird geladen, Alle Handlungen beeinflussen den globalen Zustand des Hafens
+ aktuellerHafen = Globals.AlleHäfen[Preset];
+ //TestLogging
+ Console.WriteLine("Aktueller Hafen ist " + aktuellerHafen.NAME);
+
+ //Presets über die Dictionaries vorbereiten
+ setzePresets();
+
+ //Gewähltes Preset aus dem Pool in die anzeigeliste schreiben
+ importierePresetInListe(Preset);
+
+ //anzeigen der anzeigeListe
+ ladePresets();
+
+ //TextBuilder einbinden (POS = Unterer RAND)
+ TextLieferant = new TextBuilder(Globals.aktuelleSzene);
+ Add(TextLieferant);
+
+ //Einleitungssprachtexte
+ Queue WillkommensText = new Queue();
+ WillkommensText.Enqueue("Helfen");
+ TextLieferant.erzeugeSprachText(WillkommensText, new Queue(), Globals.Remake.HalfWidth, 100);
+
+ //Auswahltexte
+ TextLieferant.erzeugeAuswahlText(new Queue(), 25, 410);
+
+ //Tafeltexte
+ List TempWarenListeExport = new List();
+ List TempWarenListeImport = new List();
+
+ //Füllen aller vorhanden Waren in eine Liste für die TafelTexte(Export zuerst)
+ foreach (Ware item in Globals.AlleHäfen[Preset].EXPORTWARE)
+ {
+ TempWarenListeExport.Add(item);
+ }
+
+ foreach (Ware item in Globals.AlleHäfen[Preset].IMPORTWARE)
+ {
+ TempWarenListeImport.Add(item);
+ }
+
+ //Erzeuge Tafeltexte mit Position der Tafel -> Texte werden intern im Builder richtig Positioniert und mit den Filler-Texten versehen
+ TextLieferant.erzeugeTafelText(TempWarenListeExport, TempWarenListeImport);
+
+ //Vorbereiten des Blackscreens
+ FadeInBlackScreen.CenterOrigin();
+ FadeInBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeInBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeInBlackScreen.Alpha = 1f;
+
+ FadeOutBlackScreen.CenterOrigin();
+ FadeOutBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeOutBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeOutBlackScreen.Alpha = 0f;
+
+ Tween(FadeInBlackScreen, new { Alpha = 0f }, 64f, 0f).Ease(Ease.BackInOut);
+ AddGraphics(FadeInBlackScreen);
+ AddGraphic(FadeOutBlackScreen);
+ }
+
+ public override void Update()
+ {
+ base.Update();
+ // In der Klasse wird nur anzeige logik behandelt -> Klicklogik wird von Textbuilder abgefangen
+ // Resultat eines Klicks wird hier aber gecheckt und bei richtiger Situation in andere Szene gewechselt
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ if (FadeOutBlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Handel";
+ this.RemoveAll();
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ //Bei Tick überprüfen, ob etwas im Textbuilder geklickt wurde (1 = Obere Auswahl, 2 = Mitlere Auswahl, 3 = Untere Auswahl, 4 = Oberer Pfeil, 5 = unterer Pfeil)
+ //Zuerst überprüfen auf welcher Ebene wir uns aktuell befinden und danach was dort geklickt wurde
+
+ int tempAuswahl = TextLieferant.checkAuswahl();
+ string auswahlMouseButton = TextLieferant.checkButtonAuswahl();
+
+ switch (TextLieferant.aktuelleEbene)
+ {
+ // Textbaum - Root
+ case "1":
+ #region RootLogik
+
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+
+ // Hier muss für jede Auswahl immer alle Möglichen Baumstränge abgedeckt werden, wenn neuer Baumzweig hinzukommt muss hier seine Auswahl verwaltet werdenkd
+ case 1:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+
+ //Auswahl Angebot
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ TempQueue.Enqueue(item.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(item.BEZEICHNUNG);
+ }
+
+ Queue TempSprachText = new Queue();
+
+ // Wenn Hafen keine Waren für Export hat kann keine Einkaufslogik erfolgen
+ if (TempQueue.Count() == 0)
+ {
+
+ TempSprachText.Enqueue("Ausverkauft");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ else
+ {
+ // Wenn dieser Übergang kein Shortcut ist Sprachtext auslösen
+ if (TempQueue.Count() > 1)
+ {
+ TempSprachText.Enqueue("Wählen_EINKAUF");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ else
+ {
+ // Wenn nur eine Auswahlmöglichkeit im nächsten Baumzweig zu erwarten wäre, wird eine Auswahl vorgewählt (Shortcut Funktion)
+ if (TempQueue.Count() == 1)
+ {
+ TextLieferant.setAuswahl(1);
+ }
+ }
+ TextLieferant.wechsleAuswahlText("1.1A", TempQueue, true);
+
+ }
+
+ break;
+ case 2:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Auswahl Verkauf
+
+ //Sammeln aller möglichen Warenquellen
+ //Wenn Filiale vorhanden -> Lager ist mögliche Quelle
+
+ // MöglicheGeldQuelle wird im Verkaufsstrang als ZielKasse benutzt
+ möglicheGeldQuellen.Clear();
+ if (aktuellerHafen.filialeVorhanden)
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler && f.LAGER.IsNotEmpty())
+ {
+ TempQueue.Enqueue("Verkauf aus Lager");
+ möglicheGeldQuellen.Add("LAGER");
+ letzteÜbergebeneListe.Add("LAGER");
+ }
+ }
+
+ }
+
+ //Wenn Schiffe vorhanden -> Schiff ist mögliche Quelle
+ foreach (Schiff Boot in aktuellerHafen.angedockteSchiffe)
+ {
+ if (Boot.COMMANDEUR == Globals.AktuellerSpieler)
+ {
+ if (Boot.LADUNG.IsNotEmpty())
+ {
+ TempQueue.Enqueue(Boot.NAME);
+
+ letzteÜbergebeneListe.Add(Boot.NAME);
+ }
+ //Mögliche Geldziele sind alle Schiffe des Spielers
+ möglicheGeldQuellen.Add(Boot.NAME);
+
+ }
+ }
+
+ // Wenn nur eine Auswahlmöglichkeit im nächsten Baumzweig zu erwarten wäre, wird eine Auswahl vorgewählt (Shortcut Funktion)
+ TempSprachText = new Queue();
+
+ // Wenn Hafen keine Waren für Import hat -> kann keine Verkaufslogik erfolgen
+ if (TempQueue.Count() == 0)
+ {
+
+ TempSprachText.Enqueue("Warenlos");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ else
+ {
+ // Wenn dieser Übergang kein Shortcut ist Sprachtext auslösen
+ if (TempQueue.Count() == 1)
+ {
+ TextLieferant.setAuswahl(1);
+ }
+ else
+ {
+ TempSprachText.Enqueue("HANDEL_VERKAUFSQUELLE");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ TextLieferant.wechsleAuswahlText("1.2A", TempQueue, true);
+ }
+ break;
+
+ case 3:
+ Console.WriteLine("Auswahl 3 Logik des Handelsfensters");
+
+ //Untere Auswahl im ersten MenüBaum = Verlassen
+ //FadeOut zu WorldMap
+ Tween(FadeOutBlackScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ TextLieferant.setzeFadeOut();
+
+ break;
+
+ }
+
+ #endregion
+
+ break;
+ //Auswahlmöglichkeiten Angebot (Hier werden die Exportwaren angezeigt)
+ case "1.1A":
+ #region AngebotsLogik - Warenauswahl
+ // Hier wird die Ware ausgewählt und die anzeige des Ziels vorbereitet
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+
+ case 999:
+ // 999 bei variablen Listen ist immer Abbruch
+ // Wenn abbruch erfolgen soll -> zurück zu Root
+ letzteÜbergebeneListe.Clear();
+ gewählteHandelsWare = null;
+ gewählteSpielerFiliale = null;
+ gewähltesSpielerSchiff = null;
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ break;
+
+ default:
+ // Bei allen anderen werten übernahme des aktuellen Wertes
+ // Es können nur max. 2 Exportwaren angezeigt werden trotzdem werden unendlich viele (außer 999 abgefangen)
+
+ // Übernahme der gewählten Ware (-1 hier weil der Textbuilder von 1 beginnt zu zählen
+ gewählteHandelsWare = aktuellerHafen.EXPORTWARE[tempAuswahl - 1];
+ letzteÜbergebeneListe.Clear();
+ möglicheGeldQuellen.Clear();
+
+ // Aufbau der Auswahlliste, je nach dem was vorhanden ist (Keine Absicherung, da mindestens 1 Eintrag da sein muss sonst wäre man nicht in diesem Menü)
+ // Wenn aber nur 1 Eintrag vorhanden ist, direkt diesen auswählen (Shortcut Funktion)
+ if (aktuellerHafen.filialeVorhanden)
+ {
+ TempQueue.Enqueue("Die Ware soll ins Lager!");
+ letzteÜbergebeneListe.Add("LAGER");
+ möglicheGeldQuellen.Add("LAGER");
+
+ }
+
+ foreach (Schiff Boot in aktuellerHafen.angedockteSchiffe)
+ {
+ TempQueue.Enqueue(Boot.NAME);
+ letzteÜbergebeneListe.Add(Boot.NAME);
+ möglicheGeldQuellen.Add(Boot.NAME);
+
+ }
+
+ // Da hier immer mindestens 1 ist brauchen wir auf keine gefunden nicht abfangen
+ if (TempQueue.Count() == 1)
+ {
+ //Shortcut zu Mengenbestimmungsscreen setzen
+ TextLieferant.setAuswahl(1);
+ }
+ else
+ {
+ // Wenn kein Shortcut erfolgen soll muss ein Text angezeigt werden
+ TempSprachText.Enqueue("Wählen_ZIEL");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+
+ }
+ //Wechsel zu Auswahl von Ziellagerort
+ TextLieferant.wechsleAuswahlText("1.1B", TempQueue, true);
+ break;
+ }
+ #endregion
+ break;
+ //Auswahlmöglichkeiten Ziellagerort (Hier werden die im Hafen vorhandenen Ziele angezeigt)
+ case "1.1B":
+ #region Angebotslogik - Ziellagerort
+ //Auswahl des Ziels und Vorbereitung für Handelsbestätigung
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 999:
+ // 999 bei variablen Listen ist immer Abbruch
+
+ // Wenn abbruch erfolgen soll -> zurück zu Root
+ letzteÜbergebeneListe.Clear();
+ gewählteHandelsWare = null;
+ gewählteSpielerFiliale = null;
+ gewähltesSpielerSchiff = null;
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ break;
+
+ default:
+ // Bei allen anderen Werten
+ // Übernahme der letzen Auswahl (Überprüfen ob letzte Auswahl eine Filiale oder Schiff war)
+ gewähltesSpielerSchiff = null;
+ gewählteSpielerFiliale = null;
+ TempGeldQuellenSchiff = null;
+ TempGeldQuellenFiliale = null;
+
+ bool TempWareMinKauf = false;
+
+ // Übernahme des gewählten Ortes als default Geldquelle
+ geldQuellenIndex = tempAuswahl - 1;
+ gewählteGeldQuelle = möglicheGeldQuellen[geldQuellenIndex];
+
+ if (letzteÜbergebeneListe[tempAuswahl - 1] == "LAGER")
+ {
+ gewählteSpielerFiliale = aktuellerHafen.überprüfeAktuelleFilialeVorhanden(Globals.AktuellerSpieler);
+ TempGeldQuellenFiliale = gewählteSpielerFiliale;
+ }
+ else
+ {
+ // Wenn nicht die Filiale gewählt wurde sondern ein bestimmtes Schiff -> Finden des Schiffs
+ List TempListe = aktuellerHafen.überprüfeEigeneSchiffeVorhanden(Globals.AktuellerSpieler);
+
+ foreach (Schiff s in TempListe)
+ {
+ if (s.NAME == letzteÜbergebeneListe[tempAuswahl - 1])
+ {
+ gewähltesSpielerSchiff = s;
+ TempGeldQuellenSchiff = s;
+ break;
+ }
+
+ }
+ }
+
+ // Wenn der ZielLagerort bekannt ist muss die maximal Einkaufsmenge errechnet werden
+ gewählteMenge = 0;
+ gewählterPreis = 0;
+ if (gewählteSpielerFiliale != null)
+ {
+
+ gewählteMenge = gewählteSpielerFiliale.BUDGET / (gewählteHandelsWare.LAGERPREIS);
+ if (gewählteMenge == 0)
+ {
+ TempWareMinKauf = true;
+ }
+
+ //überprüfen, wie viel maximalware im Hafenlager ist
+ WareLeer = false;
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ if (item.MENGE < gewählteMenge)
+ {
+ // Wenn im Hafen verfügbare Menge kleiner der errechneten max budget Menge dann nur soviel verkaufen als auch im Hafen ist
+ gewählteMenge = item.MENGE;
+ //setzen Indikator, dass Mengengrenze erreicht ist
+ WareLeer = true;
+ }
+ }
+ }
+ gewählterPreis = gewählteMenge * gewählteHandelsWare.LAGERPREIS;
+ gewähltesZiel = "LAGER";
+
+ }
+ else
+ {
+ gewählteMenge = gewähltesSpielerSchiff.SCHIFFSBUDGET / (gewählteHandelsWare.LAGERPREIS);
+ if (gewählteMenge == 0)
+ {
+ TempWareMinKauf = true;
+ }
+
+ //überprüfen, wie viel maximalware im Hafenlager ist
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ if (item.MENGE < gewählteMenge)
+ {
+ // Wenn im Hafen verfügbare Menge kleiner der errechneten max budget Menge dann nur soviel verkaufen als auch im Hafen ist
+ gewählteMenge = item.MENGE;
+ //setzen Indikator, dass Mengengrenze erreicht ist
+ WareLeer = true;
+ }
+ }
+ }
+ gewählterPreis = gewählteMenge * gewählteHandelsWare.LAGERPREIS;
+ gewähltesZiel = gewähltesSpielerSchiff.NAME;
+ }
+
+ // Alte Übergabeliste wird nicht mehr benötigt und verworfen
+ letzteÜbergebeneListe.Clear();
+
+ // Aufbau der Auswahlliste, je nach dem was vorhanden ist (Keine Absicherung, da mindestens 1 Eintrag da sein muss sonst wäre man nicht in diesem Menü)
+ // Wenn aber nur 1 Eintrag vorhanden ist, direkt diesen auswählen (Shortcut Funktion)
+
+ // 1. Param ist errechnete max Menge im Bezug auf vorhandenem Budget sein
+ TempQueue.Enqueue(gewählteMenge.ToString());
+ letzteÜbergebeneListe.Add(gewählteMenge.ToString());
+
+ // 2. Param ist Lademittel der Ware
+ if (gewählteMenge > 1)
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ else
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.LADEMITTEL);
+
+ // 3. Param ist der Name der Ware
+ TempQueue.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.BEZEICHNUNG);
+
+ // 4. Param ist der Zielort
+ if (gewähltesZiel == "LAGER")
+ {
+ TempQueue.Enqueue("INS " + gewähltesZiel);
+ }
+ else
+ {
+ TempQueue.Enqueue("AUF DIE " + gewähltesZiel);
+ }
+ letzteÜbergebeneListe.Add(gewähltesZiel);
+
+ // 5. Param ist der GeldQuelle
+ if (gewähltesZiel == "LAGER")
+ {
+ TempQueue.Enqueue("IM " + gewähltesZiel + " VERFÜGE ICH");
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + gewähltesZiel + " VERFÜGT");
+ }
+ letzteÜbergebeneListe.Add(gewähltesZiel);
+
+ // 6. Param Budget des Ziels in EURO
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ }
+
+
+ // 7. Param Budget des Ziels in CENT
+ if (gewählteSpielerFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ // Veranlassen eines Initialsprachtextes mit Erläuterung zum Preis -> Preisbildung wird zuerst erläutert
+
+ // Überprüfen ob das gewählte Ziel genügend geld hat für wenigstens 1 Kiste Ware
+ if (TempWareMinKauf)
+ {
+ TempSprachText.Enqueue("Geldlos");
+ TempSprachText.Enqueue("Geldlos2");
+ TempSprachText.Enqueue("Geldlos3");
+
+ // Füllen der Sprachparameter
+ // # VERFÜGT NICHT ÜBER GENÜGEND GELD FÜR MINDESTENS 1 #
+ // 1. # = Geldquelle ("IHR LAGER" || "DIE "), 2. # = Lademittel
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempSprachParams.Enqueue("IHR LAGER");
+ }
+ else
+ {
+ TempSprachParams.Enqueue("DIE " + TempGeldQuellenSchiff.NAME);
+ }
+
+ TempSprachParams.Enqueue((gewählteHandelsWare.LADEMITTEL));
+
+ }
+ else
+ {
+ // Wenn mehr als 1 Kiste gekauft werden kann wird dieser Text angezeigt
+ TempSprachText.Enqueue("Erläuterung1");
+ TempSprachText.Enqueue("Erläuterung2");
+
+ // Füllen der Sprachparameter
+ // 1. Text: # ERHALTEN SIE FÜR $ #,# je # !
+ // 1. # = Warenbezeichnung, 2. # = Preis Dollar, 3. # = Preis Cent, 4. # = Lademittel
+
+ TempSprachParams.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ TempSprachParams.Enqueue((gewählteHandelsWare.LAGERPREIS / 100).ToString());
+ TempSprachParams.Enqueue((gewählteHandelsWare.LAGERPREIS % 100).ToString());
+ TempSprachParams.Enqueue((gewählteHandelsWare.LADEMITTEL));
+ // 2. Text: DIE # # KOSTEN SIE DAHER $ #,#
+ // 1. # = Menge, 2. # = Lademittel, 3. # = Preis Dollar, 4. # = Preis Cent
+ TempSprachParams.Enqueue(gewählteMenge.ToString());
+ if (gewählteMenge > 1)
+ {
+ TempSprachParams.Enqueue((gewählteHandelsWare.LADEMITTEL + "N"));
+ }
+ else
+ {
+ TempSprachParams.Enqueue((gewählteHandelsWare.LADEMITTEL));
+ }
+
+ TempSprachParams.Enqueue((gewählterPreis / 100).ToString());
+ TempSprachParams.Enqueue((gewählterPreis % 100).ToString());
+
+ }
+
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.1.1", TempQueue, false);
+
+ break;
+ }
+
+ #endregion
+ break;
+ //Auswahlmöglichkeiten Abschluss des Handels (Hier wird Preis/Menge)
+ case "1.1.1":
+ #region Abschluss Einkauf
+
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 1:
+ // Auswahl 1: Mengenregulierung (Links klick mehr Menge/Rechtsklick weniger Menge)
+ //Neu Berechnung der Menge und überprüfen ob Max oder Min Menge erreicht
+
+ // Indikator resetten
+ WareLeer = false;
+ GeldLeer = false;
+
+ if (auswahlMouseButton == "MausLinks")
+ {
+ // Logik fürs erhöhen der Menge
+ if (TempGeldQuellenFiliale != null)
+ {
+ // Logik bei gewählter Filiale
+
+ // Überprüfen, ob mindestens 1 Lademittel gekauft werden kann
+ int TempMaxMenge = TempGeldQuellenFiliale.BUDGET / (gewählteHandelsWare.LAGERPREIS);
+
+ // Erhöhen der Menge(Wenn Warenmenge > im Hafen vorhandener Menge wird erhöhung nicht erlaubt + Sprachtext als hinweis)
+ gewählteMenge++;
+
+ if (TempMaxMenge == 0)
+ {
+ gewählteMenge = 0;
+ }
+
+ //Sprachtext vorbereiten
+ if (gewählteMenge == 0)
+ {
+ //Minimalmenge erreicht -> Ausgabe Sprachtext für zu keine Berechnung
+ TempSprachText.Enqueue("KeineKosten");
+ }
+ else
+ {
+
+ //überprüfen, wie viel maximalware im Hafenlager ist
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ if (item.MENGE < gewählteMenge)
+ {
+ // Wenn im Hafen verfügbare Menge kleiner der errechneten max budget Menge dann nur soviel verkaufen als auch im Hafen ist
+ gewählteMenge = item.MENGE;
+ //setzen Indikator, dass Mengengrenze erreicht ist
+ WareLeer = true;
+ }
+ }
+ }
+
+ // Wenn gewählte Menge größer als maximale Menge ist muss wieder zurückreduziert werden und budget reicht nicht text eingeblendet werden
+ if (TempMaxMenge < gewählteMenge)
+ {
+ gewählteMenge--;
+ //Maximalmenge erreicht -> Ausgabe Sprachtext für zu viel Menge
+ GeldLeer = true;
+ }
+ }
+
+
+ }
+ else
+ {
+ // Logik bei gewähltem Schiff
+ // Überprüfen, ob mindestens 1 Lademittel gekauft werden kann
+ int TempMaxMenge = TempGeldQuellenSchiff.SCHIFFSBUDGET / (gewählteHandelsWare.LAGERPREIS);
+
+ // Erhöhen der Menge(Wenn Warenmenge > im Hafen vorhandener Menge wird erhöhung nicht erlaubt + Sprachtext als hinweis)
+ gewählteMenge++;
+
+ if (TempMaxMenge == 0)
+ {
+ gewählteMenge = 0;
+ }
+
+ //Sprachtext vorbereiten
+ if (gewählteMenge == 0)
+ {
+ //Minimalmenge erreicht -> Ausgabe Sprachtext für zu keine Berechnung
+ TempSprachText.Enqueue("KeineKosten");
+ }
+ else
+ {
+ //überprüfen, wie viel maximalware im Hafenlager ist
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ if (item.MENGE < gewählteMenge)
+ {
+ // Wenn im Hafen verfügbare Menge kleiner der errechneten max budget Menge dann nur soviel verkaufen als auch im Hafen ist
+ gewählteMenge = item.MENGE;
+ //setzen Indikator, dass Mengengrenze erreicht ist
+ WareLeer = true;
+ }
+ }
+ }
+
+ // Wenn gewählte Menge größer als maximale Menge ist muss wieder zurückreduziert werden und budget reicht nicht text eingeblendet werden
+ if (TempMaxMenge < gewählteMenge)
+ {
+ gewählteMenge--;
+ GeldLeer = true;
+
+ }
+
+
+ }
+ }
+
+ }
+ else
+ {
+ if (auswahlMouseButton == "MausRechts")
+ {
+ // Logik fürs vermindern der Menge
+ // Fallunterscheidung für Filiale oder Schiff nicht nötig da beide untergrenze 0 haben
+ if (gewählteMenge <= 0)
+ {
+ //Minimalmenge erreicht -> Ausgabe Sprachtext für zu keine Berechnung
+ gewählteMenge = 0;
+ TempSprachText.Enqueue("KeineKosten");
+
+ }
+ else
+ {
+ // Wenn nicht erreicht -> Vermindere um 1 ( Im Original waren es hier Mengenabschnitte -> Ich finde einzelschritte Sinnvoller)
+ gewählteMenge--;
+ }
+ }
+ }
+
+ // Neu berechnen des Preises je nach neuer Menge
+ gewählterPreis = gewählteMenge * gewählteHandelsWare.LAGERPREIS;
+
+ // Aufbau der Auswahlliste, je nach dem was vorhanden ist (Keine Absicherung, da mindestens 1 Eintrag da sein muss sonst wäre man nicht in diesem Menü)
+ // Wenn aber nur 1 Eintrag vorhanden ist, direkt diesen auswählen (Shortcut Funktion)
+
+ // 1. Param ist errechnete max Menge im Bezug auf vorhandenem Budget sein
+ TempQueue.Enqueue(gewählteMenge.ToString());
+ letzteÜbergebeneListe.Add(gewählteMenge.ToString());
+
+ // 2. Param ist Lademittel der Ware
+ if (gewählteMenge > 1)
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.LADEMITTEL);
+
+ // 3. Param ist der Name der Ware
+ TempQueue.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.BEZEICHNUNG);
+
+ // 4. Param ist der Zielort
+ if (gewähltesZiel == "LAGER")
+ {
+ TempQueue.Enqueue("INS " + gewähltesZiel);
+ }
+ else
+ {
+ TempQueue.Enqueue("AUF DIE " + gewähltesZiel);
+ }
+
+ // 5. Param ist der GeldQuelle
+ if (gewählteGeldQuelle == "LAGER")
+ {
+ TempQueue.Enqueue("IM " + gewählteGeldQuelle + " VERFÜGE ICH");
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + gewählteGeldQuelle + " VERFÜGT");
+ }
+ letzteÜbergebeneListe.Add(gewählteGeldQuelle);
+
+ // 6. Param Budget des Ziels in EURO
+ if (gewählteGeldQuelle == "LAGER")
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ }
+
+ // 7. Param Budget des Ziels in CENT
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ // Veranlassen eines Sprachtextes mit Erläuterung zum neuen Preis
+ // & Füllen der Sprachparameter
+ // Besonderheit: Geldmangel > Warenmangel | D.h. Wenn Spieler sowohl zu wenig Geld hat sowie der Hafen nicht mehr Ware hat wird nur
+ // angezeigt, dass das Geld fehlt
+ if (GeldLeer)
+ {
+ TempSprachText.Enqueue("BudgetReichtNicht");
+ TempSprachText.Enqueue("Kosten");
+ TempSprachParams.Enqueue((gewählterPreis / 100).ToString());
+ TempSprachParams.Enqueue((gewählterPreis % 100).ToString());
+ GeldLeer = false;
+ }
+ else
+ {
+ if (WareLeer)
+ {
+ TempSprachText.Enqueue("Restposten1");
+ TempSprachText.Enqueue("Restposten2");
+ // Params Restposten 1
+ TempSprachParams.Enqueue(gewählteMenge.ToString());
+ if (gewählteMenge > 1)
+ {
+ TempSprachParams.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempSprachParams.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+ TempSprachParams.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ // Params Restposten 2
+ TempSprachParams.Enqueue(gewählteMenge.ToString());
+ if (gewählteMenge > 1)
+ {
+ TempSprachParams.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempSprachParams.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+ TempSprachParams.Enqueue((gewählterPreis / 100).ToString());
+ TempSprachParams.Enqueue((gewählterPreis % 100).ToString());
+ WareLeer = false;
+ }
+ else
+ {
+ if (gewählteMenge != 0)
+ {
+ TempSprachText.Enqueue("Kosten");
+ TempSprachParams.Enqueue((gewählterPreis / 100).ToString());
+ TempSprachParams.Enqueue((gewählterPreis % 100).ToString());
+ }
+ }
+ }
+
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.1.1", TempQueue, false);
+
+ break;
+ case 2:
+ // Auswahl 2: Abschluss Handel
+ // Übergeben der gekauften Ware an den Ziellagerort
+ // Nur Logik erlauben wenn links geklickt wurde nicht rechts
+ if (auswahlMouseButton == "MausLinks")
+ {
+ if (gewähltesZiel == "LAGER")
+ {
+ //Einlagern der Ware in die vorhandene Filiale im Hafen
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ f.einlagernWare(new Ware(gewählteHandelsWare.BEZEICHNUNG, 0, gewählteMenge, 0, gewählteHandelsWare.LADEMITTEL));
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ //Einlagern der Ware in das angedockte Schiff
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == gewähltesSpielerSchiff.NAME)
+ {
+ s.einlagernLadung(new Ware(gewählteHandelsWare.BEZEICHNUNG, 0, gewählteMenge, 0, gewählteHandelsWare.LADEMITTEL));
+ break;
+ }
+ }
+
+ }
+
+ // Abziehen des Budgets der Geldquelle
+ if (gewählteGeldQuelle == "LAGER")
+ {
+
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f == TempGeldQuellenFiliale)
+ {
+ f.verringereBudget(gewählterPreis);
+ break;
+ }
+ }
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s == TempGeldQuellenSchiff)
+ {
+ s.vermindernBudget(gewählterPreis);
+ break;
+ }
+ }
+
+ }
+
+ // Abziehen der Ware vom Hafenlager
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ // reduzieren der Ware vom Bestand
+ item.MENGE -= gewählteMenge;
+
+ }
+
+ }
+ // Wenn Ware durch reduzierung leer wurde -> Löschen aus dem Bestand
+ for (int index = 0; index < aktuellerHafen.EXPORTWARE.Count(); index++)
+ {
+ if (aktuellerHafen.EXPORTWARE[index].MENGE == 0)
+ {
+ aktuellerHafen.EXPORTWARE.RemoveAt(index);
+ // wenn ein Eintrag gefunden -> reset der Schleife da sich Count geändert hat (Notwendig wenn mehrere Waren je Prozess auf 0 gefallen sind)
+ index = 0;
+ }
+ }
+
+ // Zurück zu Root
+ letzteÜbergebeneListe.Clear();
+ gewählteHandelsWare = null;
+ gewählteSpielerFiliale = null;
+ gewähltesSpielerSchiff = null;
+ gewähltesZiel = "";
+
+ // Wenn abbruch erfolgen soll -> zurück zu Root (Wenn zurück zu Root haben sich evtl Tafeltexte verändert(weil leergekauft)-> neu zeichnen
+
+ List TempWarenListeExport = new List();
+ List TempWarenListeImport = new List();
+
+ //Füllen aller vorhanden Waren in eine Liste für die TafelTexte(Export zuerst)
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ TempWarenListeExport.Add(item);
+ }
+
+ foreach (Ware item in aktuellerHafen.IMPORTWARE)
+ {
+ TempWarenListeImport.Add(item);
+ }
+ TextLieferant.erzeugeTafelText(TempWarenListeExport, TempWarenListeImport);
+
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ }
+ break;
+ case 3:
+ // Auswahl 3: Auswahl Bezahlungsquelle
+
+ // Untersuchen, ob es noch andere Bezahlungsquellen gibt(angedockte Schiffe oder einer Filiale)
+ if (möglicheGeldQuellen.Count() > 1)
+ {
+ if (auswahlMouseButton == "MausRechts")
+ {
+ geldQuellenIndex--;
+ }
+ else
+ {
+ geldQuellenIndex++;
+ }
+
+ if (geldQuellenIndex == möglicheGeldQuellen.Count())
+ {
+ geldQuellenIndex = 0;
+ }
+
+ if (geldQuellenIndex < 0)
+ {
+ geldQuellenIndex = möglicheGeldQuellen.Count() - 1;
+ }
+
+ gewählteGeldQuelle = möglicheGeldQuellen[geldQuellenIndex];
+ TempGeldQuellenFiliale = null;
+ TempGeldQuellenSchiff = null;
+
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempGeldQuellenFiliale = f;
+ break;
+ }
+
+
+ }
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempGeldQuellenSchiff = s;
+ break;
+ }
+
+
+ }
+ }
+
+ // Zuerst überprüfen ob neue Geldquelle genug Geld für mindestens 1 Lademittel hat
+ int TempMaxMenge = 0;
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempMaxMenge = TempGeldQuellenFiliale.BUDGET / (gewählteHandelsWare.LAGERPREIS);
+
+ }
+ else
+ {
+ TempMaxMenge = TempGeldQuellenSchiff.SCHIFFSBUDGET / (gewählteHandelsWare.LAGERPREIS);
+ }
+
+ // neue gewählte Menge ist immer die Maximalmenge der neuen Geldquelle
+ //Überprüfen ob Hafenlager großgenug ist für Budget der neuen Quelle
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ if (item == gewählteHandelsWare)
+ {
+ if (item.MENGE >= TempMaxMenge)
+ {
+ gewählteMenge = TempMaxMenge;
+ }
+ else
+ {
+ gewählteMenge = item.MENGE;
+ }
+ break;
+ }
+ }
+
+ gewählterPreis = gewählteMenge * gewählteHandelsWare.LAGERPREIS;
+
+ // Da Geldquelle geändert wurde -> neu Zeichnen und berechnen der des Auswahltextes
+ // Aufbau der Auswahlliste, je nach dem was vorhanden ist (Keine Absicherung, da mindestens 1 Eintrag da sein muss sonst wäre man nicht in diesem Menü)
+ // Wenn aber nur 1 Eintrag vorhanden ist, direkt diesen auswählen (Shortcut Funktion)
+
+ // 1. Param ist errechnete max Menge im Bezug auf vorhandenem Budget sein
+ TempQueue.Enqueue(gewählteMenge.ToString());
+ letzteÜbergebeneListe.Add(gewählteMenge.ToString());
+
+ // 2. Param ist Lademittel der Ware
+ if (gewählteMenge > 1)
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.LADEMITTEL);
+
+ // 3. Param ist der Name der Ware
+ TempQueue.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.BEZEICHNUNG);
+
+ // 4. Param ist der Zielort
+ if (gewähltesZiel == "LAGER")
+ {
+ TempQueue.Enqueue("INS " + gewähltesZiel);
+ }
+ else
+ {
+ TempQueue.Enqueue("AUF DIE " + gewähltesZiel);
+ }
+
+ // 5. Param ist der GeldQuelle -> Übernahme der geänderten Geldquelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+
+ TempQueue.Enqueue("IM " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGE ICH");
+ letzteÜbergebeneListe.Add(möglicheGeldQuellen[geldQuellenIndex]);
+
+ }
+ else
+ {
+
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ letzteÜbergebeneListe.Add(möglicheGeldQuellen[geldQuellenIndex]);
+ }
+
+ // 6. Param Budget der Geldquelle in EURO
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ }
+
+ // 7. Param Budget der Geldquelle in CENT
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ // Veranlassen eines Sprachtextes mit Erläuterung zum neuen Preis
+ // & Füllen der Sprachparameter
+
+ // Wenn neue gewählte Menge 0 ist, wird ein spezieller Text angezeigt
+ if (gewählteMenge != 0)
+ {
+ TempSprachText.Enqueue("Kosten");
+ TempSprachParams.Enqueue((gewählterPreis / 100).ToString());
+ TempSprachParams.Enqueue((gewählterPreis % 100).ToString());
+ }
+ else
+ {
+ //Minimalmenge erreicht -> Ausgabe Sprachtext für zu keine Berechnung
+ TempSprachText.Enqueue("KeineKosten");
+ }
+
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.1.1", TempQueue, false, false);
+ }
+ // wenn nicht mehr als 1 Geldquellen vorhanden sind soll einfach nichts passieren
+
+ break;
+ case 4:
+ // Auswahl 4: Abbruch Handel
+ letzteÜbergebeneListe.Clear();
+ gewählteHandelsWare = null;
+ gewählteSpielerFiliale = null;
+ gewähltesSpielerSchiff = null;
+ gewähltesZiel = "";
+
+ // Wenn abbruch erfolgen soll -> zurück zu Root
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ break;
+ }
+ break;
+ #endregion
+
+
+ case "1.2A":
+ //Auswahlmöglichkeiten Verkauf (Hier wird der Quelllagerort gewählt)
+ #region VerkaufsLogik - Auswahl Quelle
+
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 999:
+ // 999 bei variablen Listen ist immer Abbruch
+
+ // Wenn abbruch erfolgen soll -> zurück zu Root
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ break;
+
+ default:
+ // Bei allen anderen Werten
+ // Übernahme der letzen Auswahl (Überprüfen ob letzte Auswahl eine Filiale oder Schiff war)
+ gewähltesSpielerSchiff = null;
+ gewählteSpielerFiliale = null;
+ TempGeldQuellenFiliale = null;
+ TempGeldQuellenSchiff = null;
+
+ // Übernahme des gewählten Ortes als default Warenquelle
+ if (letzteÜbergebeneListe[tempAuswahl - 1] == "LAGER")
+ {
+ gewählteSpielerFiliale = aktuellerHafen.überprüfeAktuelleFilialeVorhanden(Globals.AktuellerSpieler);
+ gewähltesZiel = "LAGER";
+
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempGeldQuellenFiliale = f;
+ geldQuellenIndex = tempAuswahl - 1;
+ break;
+ }
+
+ }
+
+ }
+ else
+ {
+ // Wenn nicht die Filiale gewählt wurde sondern ein bestimmtes Schiff -> Finden des Schiffs
+ List TempListe = aktuellerHafen.überprüfeEigeneSchiffeVorhanden(Globals.AktuellerSpieler);
+
+ // Wenn mehrere eigene Schiffe im Hafen sind -> Suchen des gewählten Schiffes
+ foreach (Schiff s in TempListe)
+ {
+ if (s.NAME == letzteÜbergebeneListe[tempAuswahl - 1])
+ {
+ gewähltesSpielerSchiff = s;
+ gewähltesZiel = s.NAME;
+ TempGeldQuellenSchiff = s;
+ geldQuellenIndex = tempAuswahl - 1;
+ }
+
+ }
+ }
+
+ TempQueue = new Queue();
+ // Alte Übergabeliste wird nicht mehr benötigt und verworfen
+ letzteÜbergebeneListe.Clear();
+
+ // Wenn Warenquelle vorhanden ist muss aus den vorhandenen Waren gewählt werden
+ if (gewählteSpielerFiliale != null)
+ {
+ foreach (Ware item in gewählteSpielerFiliale.LAGER)
+ {
+ TempQueue.Enqueue(item.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(item.BEZEICHNUNG);
+ }
+
+ }
+ else
+ {
+ foreach (Ware item in gewähltesSpielerSchiff.LADUNG)
+ {
+ TempQueue.Enqueue(item.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(item.BEZEICHNUNG);
+ }
+ }
+
+ // Veranlassen eines Initialsprachtextes mit Erläuterung zum Preis -> Preisbildung wird zuerst erläutert
+ TempSprachText = new Queue();
+ TempSprachParams = new Queue();
+
+ if (TempQueue.Count() == 1)
+ {
+ TextLieferant.setAuswahl(1);
+ }
+
+ //TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.2B", TempQueue, true);
+ break;
+
+ }
+ #endregion
+ break;
+
+ case "1.2B":
+ //Auswahlmöglichkeiten Verkauf (Hier wird Ware des Quelllagerorts gewählt)
+ #region VerkaufsLogik - Auswahl Quelle
+
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 999:
+ // 999 bei variablen Listen ist immer Abbruch
+
+ //Wenn abbruch erfolgen soll -> zurück zu Vorherigen Menü
+ //Vorheriges Menü neu Aufbauen (Auswahl Warenbezugsquelle)
+ //Wenn Filiale vorhanden -> Lager ist mögliche Quelle
+ letzteÜbergebeneListe.Clear();
+ TempQueue = new Queue();
+ if (aktuellerHafen.filialeVorhanden)
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler && f.LAGER.IsNotEmpty())
+ {
+ TempQueue.Enqueue("Verkauf aus Lager");
+ letzteÜbergebeneListe.Add("LAGER");
+ }
+ }
+
+ }
+
+ //Wenn Schiffe vorhanden -> Schiff ist mögliche Quelle
+ foreach (Schiff Boot in aktuellerHafen.angedockteSchiffe)
+ {
+ if (Boot.COMMANDEUR == Globals.AktuellerSpieler && Boot.LADUNG.IsNotEmpty())
+ {
+ TempQueue.Enqueue(Boot.NAME);
+ letzteÜbergebeneListe.Add(Boot.NAME);
+ }
+ }
+
+ TempSprachText = new Queue();
+ TempSprachParams = new Queue();
+
+ TempSprachText.Enqueue("HANDEL_VERKAUFSQUELLE");
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.2A", TempQueue, true);
+ break;
+
+ default:
+ // Bei allen anderen Werten
+ // Übernahme der letzen Auswahl (Verkaufte Ware) + Voreinstellen der MaximalMenge
+
+ if (gewähltesZiel == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ foreach (Ware item in f.LAGER)
+ {
+ if (item.BEZEICHNUNG == letzteÜbergebeneListe[tempAuswahl - 1])
+ {
+ //Kopieren der Ware für später bearbeitung
+ gewählteHandelsWare = new Ware(item);
+ // Menge ist immer die im Lager maximal vorhandene Menge
+ gewählteMenge = gewählteHandelsWare.MENGE;
+ //Wenn die Ware gefunden wurde ist die Bearbeitung abgeschlossen
+ break;
+ }
+ }
+ //Wenn die Filiale gefunden wurde ist Bearbeitung abgeschlossen
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == gewähltesZiel)
+ {
+ foreach (Ware item in s.LADUNG)
+ {
+ if (item.BEZEICHNUNG == letzteÜbergebeneListe[tempAuswahl - 1])
+ {
+ //Kopieren der Ware für spätere Bearbeitung
+ gewählteHandelsWare = new Ware(item);
+ //Menge ist immer die in der Ladung vorhandenen maximal Menge
+ gewählteMenge = gewählteHandelsWare.MENGE;
+ //Wenn Ware gefunden wurde ist Bearbeitung abgeschlossen
+ break;
+ }
+ }
+ //Wenn Zielschiff gefunden wurde ist Bearbeitung abgeschlossen
+ break;
+ }
+
+ }
+ }
+
+ // Wenn Ware übernommen ist muss Preis errechnet werden -> Als Referenz wird die ImportwarenListe (Und der Preis dazu genommen)
+ // Sollte die Importwarenliste des Hafens diese Ware nicht benötigen wird die Hälfte des Durchschnittspreises genommen (ist vordefiniert)
+ // Sonderregel: Wenn die Menge der erwünschten Ware unter eine bestimmte Menge fällt wird nur noch ein Teil des Importpreises gezahlt
+
+ //PreisReduziert status:
+ //0 = keine Reduktion -> Vollpreis
+ //1 = etwas Reduktion -> Teilpreis
+ //2 = nicht erwünscht -> mindestpreis
+ int PreisReduziert = 2;
+ gewählterPreis = 0;
+ foreach (Ware item in aktuellerHafen.IMPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ // Wenn die Ware pauschal unter 25 benötigt wird, wird nur noch 3/4 des Import preises gezahlt + anderer Sprachtext als sonst
+ if (item.MENGE <= 25)
+ {
+ PreisReduziert = 1;
+ gewählterPreis = gewählteMenge * (item.LAGERPREIS * 75 / 100);
+ }
+ else
+ {
+ PreisReduziert = 0;
+ gewählterPreis = gewählteMenge * item.LAGERPREIS;
+ }
+ }
+ }
+
+ // Wenn Ware nicht importiert wird, wird der Preis aus der globalen reduzierten Preisliste genommen
+ if (PreisReduziert == 2)
+ {
+ gewählterPreis = Globals.PreisListe_UnerwünschteWare[gewählteHandelsWare.BEZEICHNUNG];
+ }
+
+ //Aufbau der Parameter für die Auswahltexte
+ // 1. Param ist errechnete max Menge im Bezug auf vorhandenem Budget sein
+ TempQueue.Enqueue(gewählteMenge.ToString());
+ letzteÜbergebeneListe.Add(gewählteMenge.ToString());
+
+ // 2. Param ist Lademittel der Ware
+ if (gewählteMenge > 1)
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.LADEMITTEL);
+
+ // 3. Param ist der Name der Ware
+ TempQueue.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.BEZEICHNUNG);
+
+ // 4. Param ist der GeldQuelle
+ if (gewähltesZiel == "LAGER")
+ {
+ TempQueue.Enqueue("IM " + gewähltesZiel + " verfüge ich ");
+ }
+ else
+ {
+ TempQueue.Enqueue("AUF DER " + gewähltesZiel + " verfüge ich ");
+ }
+ letzteÜbergebeneListe.Add(gewähltesZiel);
+
+ // 5. Param Budget des Ziels in EURO
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ }
+
+ // 6. Param Budget des Ziels in CENT
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ // Je nachdem wie viel reduziert wurde, wird anderer Sprachtext erstellt
+ TempSprachText = new Queue();
+ TempSprachParams = new Queue();
+ switch (PreisReduziert)
+ {
+ case 0:
+ break;
+ case 1:
+ break;
+ case 2:
+ break;
+
+ }
+
+ //TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.2.1", TempQueue, false);
+ break;
+ }
+ #endregion
+ break;
+ case "1.2.1":
+
+ #region Verkaufsbestätigung
+ //TODO: Preisspannen Logik untersuchen und implementieren beim Verkauf
+ //Biserhige Erkentnis: Wenn Ware hohen Import hat gibts Sonderpreise, wenn Ware keinen Import hat gibts Standartisierten Minimalstpreis
+ // Eventuell gilt: 3 Preis zonen (Hoher Import, regulärer Import, Kein Import)
+ // Herauszufinden gilt auch die Geldbeträge im Hohen import bereich -> Sind nicht standardisiert (Z.B Früchte in Triest kosten 1$ mehr, in Sydney aber 1.50$ | evtl Prozentual?)
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 1:
+ //Auswahl 1 = Auswahl Menge
+
+ // Indikator resetten
+ WareLeer = false;
+
+ // Linksklick Erhöhung der Menge, Rechtsklick Verminderung der Menge
+ if (auswahlMouseButton == "MausLinks")
+ {
+ // Logik fürs erhöhen der Menge -> Erhöhen ist nur erlaubt wenn nicht maximum der Ware erreicht ist
+ if (gewählteSpielerFiliale != null)
+ {
+ foreach (Ware item in gewählteSpielerFiliale.LAGER)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ if (gewählteMenge < item.MENGE)
+ {
+ gewählteMenge++;
+ }
+ else
+ {
+ // Wenn nicht erhöht werden konnte hat man nicht mehr im Lager -> Erzeugt besonderen Hinweis Sprachtext
+ WareLeer = true;
+ }
+ break;
+ }
+
+ }
+
+ }
+ else
+ {
+ foreach (Ware item in gewähltesSpielerSchiff.LADUNG)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ if (gewählteMenge < item.MENGE)
+ {
+ gewählteMenge++;
+ }
+ else
+ {
+ // Wenn nicht erhöht werden konnte hat man nicht mehr in Ladung -> Erzeugt besonderen Hinweis Sprachtext
+ WareLeer = true;
+ }
+ break;
+ }
+
+ }
+ }
+
+ }
+ else
+ {
+ if (auswahlMouseButton == "MausRechts")
+ {
+ // Logik fürs vermindern der Menge -> Vermindern ist nur erlaubt wenn nicht 0 erreicht ist
+ if (gewählteMenge > 0)
+ {
+ gewählteMenge--;
+ }
+
+ }
+
+ }
+
+ // Neu berechnen des Preises je nach neuer Menge
+ int PreisReduziert = 2;
+ gewählterPreis = 0;
+ foreach (Ware item in aktuellerHafen.IMPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ // Wenn die Ware pauschal unter 25 benötigt wird, wird nur noch 3/4 des Import preises gezahlt + anderer Sprachtext als sonst
+ if (item.MENGE <= 25)
+ {
+ PreisReduziert = 1;
+ gewählterPreis = gewählteMenge * (item.LAGERPREIS * 75 / 100);
+ }
+ else
+ {
+ PreisReduziert = 0;
+ gewählterPreis = gewählteMenge * item.LAGERPREIS;
+ }
+ }
+ }
+
+ // Wenn Ware nicht importiert wird, wird der Preis aus der globalen reduzierten Preisliste genommen
+ if (PreisReduziert == 2)
+ {
+ gewählterPreis = Globals.PreisListe_UnerwünschteWare[gewählteHandelsWare.BEZEICHNUNG] * gewählteMenge;
+ }
+
+ //Aufbau der Parameter für die Auswahltexte
+ // 1. Param ist errechnete max Menge im Bezug auf vorhandenem Budget sein
+ TempQueue.Enqueue(gewählteMenge.ToString());
+ letzteÜbergebeneListe.Add(gewählteMenge.ToString());
+
+ // 2. Param ist Lademittel der Ware
+ if (gewählteMenge > 1)
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.LADEMITTEL);
+
+ // 3. Param ist der Name der Ware
+ TempQueue.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.BEZEICHNUNG);
+
+ // 4. Param ist der GeldQuelle
+ if (gewählteGeldQuelle == "LAGER")
+ {
+ TempQueue.Enqueue("IM " + gewählteGeldQuelle);
+ }
+ else
+ {
+ TempQueue.Enqueue("AUF DER " + gewählteGeldQuelle);
+ }
+ letzteÜbergebeneListe.Add(gewählteGeldQuelle);
+
+ // 5. Param Budget des Ziels in EURO
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ }
+
+ // 6. Param Budget des Ziels in CENT
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ // Je nachdem wie viel reduziert wurde, wird anderer Sprachtext erstellt
+ TempSprachText = new Queue();
+ TempSprachParams = new Queue();
+ switch (PreisReduziert)
+ {
+ case 0:
+ break;
+ case 1:
+ break;
+ case 2:
+ break;
+
+ }
+
+ //TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ TextLieferant.wechsleAuswahlText("1.2.1", TempQueue, false);
+
+ break;
+ case 2:
+ //Auswahl 2 = Bestätigen Verkauf
+ // Übergeben der Verkauften Ware an den Hafen (Abziehen vom Import)
+ // Nur Logik erlauben wenn links geklickt wurde nicht rechts
+
+ // jedes Spieler Schiff und Filiale sollten gewählt werden können -> überarbeiten der Geldziel logik im Verkauf
+ if (auswahlMouseButton == "MausLinks")
+ {
+ // Zuerst vermindern des Bestandes im Ursprungslager
+ if (gewähltesZiel == "LAGER")
+ {
+ //Auslagern der Ware von der vorhandene Filiale im Hafen
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ f.AuslagernnWare(gewählteHandelsWare.BEZEICHNUNG, gewählteMenge);
+ break;
+ }
+ }
+
+ }
+ else
+ {
+ //Auslagern der Ware in das angedockte Schiff
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == gewähltesSpielerSchiff.NAME)
+ {
+ s.löscheLadung(gewählteHandelsWare.BEZEICHNUNG, gewählteMenge);
+ break;
+ }
+ }
+
+ }
+
+ // Erhöhen des Geldes im Zielbudget
+ if (gewählteGeldQuelle == "LAGER")
+ {
+
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f == TempGeldQuellenFiliale)
+ {
+ f.erhöheBudget(gewählterPreis);
+ break;
+ }
+ }
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s == TempGeldQuellenSchiff)
+ {
+ s.erhöhenBudget(gewählterPreis);
+ break;
+ }
+ }
+
+ }
+
+ // Abziehen der Ware von der Importliste des Hafenlagers
+ // Besonderheit: Wenn der Hafen hier mehr ankauft als es eigentlich Importieren will wird trotzdem zum genannten Preis verkauft
+ // außer die gewünschte Importmenge ist schon von beginn der Verhandlungen unter 25 dann wird nur der reduzierte Preis angeboten
+ // und trotz reduziertem Preis nimmt Hafen die Ware immer an!
+ foreach (Ware item in aktuellerHafen.IMPORTWARE)
+ {
+ if (item.BEZEICHNUNG == gewählteHandelsWare.BEZEICHNUNG)
+ {
+ // reduzieren der Ware vom Bestand
+ item.MENGE -= gewählteMenge;
+ if (item.MENGE <= 0)
+ {
+ item.MENGE = 0;
+ }
+ break;
+
+
+ }
+
+ }
+ // Wenn Ware durch reduzierung leer wurde -> Löschen aus dem Bestand
+ for (int index = 0; index < aktuellerHafen.IMPORTWARE.Count(); index++)
+ {
+ if (aktuellerHafen.IMPORTWARE[index].MENGE == 0)
+ {
+ aktuellerHafen.IMPORTWARE.RemoveAt(index);
+ // wenn ein Eintrag gefunden -> reset der Schleife da sich Count geändert hat (Notwendig wenn mehrere Waren je Prozess auf 0 gefallen sind)
+ index = 0;
+ }
+ }
+
+ // Zurück zu Root
+ letzteÜbergebeneListe.Clear();
+ gewählteHandelsWare = null;
+ gewählteSpielerFiliale = null;
+ gewähltesSpielerSchiff = null;
+ gewähltesZiel = "";
+
+ // Wenn zurück zu Root haben sich evtl Tafeltexte verändert(weil leergekauft)-> neu zeichnen
+
+ List TempWarenListeExport = new List();
+ List TempWarenListeImport = new List();
+
+ //Füllen aller vorhanden Waren in eine Liste für die TafelTexte(Export zuerst)
+ foreach (Ware item in aktuellerHafen.EXPORTWARE)
+ {
+ TempWarenListeExport.Add(item);
+ }
+
+ foreach (Ware item in aktuellerHafen.IMPORTWARE)
+ {
+ TempWarenListeImport.Add(item);
+ }
+ TextLieferant.erzeugeTafelText(TempWarenListeExport, TempWarenListeImport);
+
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ }
+ break;
+ case 3:
+ // Auswahl 3 = Wechsel des Geldziels
+
+ // Untersuchen, ob es noch andere Bezahlungsquellen gibt(angedockte Schiffe oder einer Filiale)
+ if (möglicheGeldQuellen.Count() > 1)
+ {
+ if (auswahlMouseButton == "MausRechts")
+ {
+ geldQuellenIndex--;
+ }
+ else
+ {
+ geldQuellenIndex++;
+ }
+
+ if (geldQuellenIndex == möglicheGeldQuellen.Count())
+ {
+ geldQuellenIndex = 0;
+ }
+
+ if (geldQuellenIndex < 0)
+ {
+ geldQuellenIndex = möglicheGeldQuellen.Count() - 1;
+ }
+
+ gewählteGeldQuelle = möglicheGeldQuellen[geldQuellenIndex];
+ TempGeldQuellenFiliale = null;
+ TempGeldQuellenSchiff = null;
+
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempGeldQuellenFiliale = f;
+ break;
+ }
+ }
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempGeldQuellenSchiff = s;
+ break;
+ }
+ }
+ }
+
+
+ // Da Geldquelle geändert wurde -> neu Zeichnen und berechnen der des Auswahltextes
+ // Aufbau der Auswahlliste, je nach dem was vorhanden ist (Keine Absicherung, da mindestens 1 Eintrag da sein muss sonst wäre man nicht in diesem Menü)
+ // Wenn aber nur 1 Eintrag vorhanden ist, direkt diesen auswählen (Shortcut Funktion)
+
+ //Aufbau der Parameter für die Auswahltexte
+ // 1. Param ist errechnete max Menge im Bezug auf vorhandenem Budget sein
+ TempQueue.Enqueue(gewählteMenge.ToString());
+ letzteÜbergebeneListe.Add(gewählteMenge.ToString());
+
+ // 2. Param ist Lademittel der Ware
+ if (gewählteMenge > 1)
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL + "N");
+ }
+ else
+ {
+ TempQueue.Enqueue(gewählteHandelsWare.LADEMITTEL);
+ }
+
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.LADEMITTEL);
+
+ // 3. Param ist der Name der Ware
+ TempQueue.Enqueue(gewählteHandelsWare.BEZEICHNUNG);
+ letzteÜbergebeneListe.Add(gewählteHandelsWare.BEZEICHNUNG);
+
+ // 4. Param ist der Geldziel
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue("IM LAGER");
+ }
+ else
+ {
+ TempQueue.Enqueue("AUF DER " + möglicheGeldQuellen[geldQuellenIndex]);
+ }
+ letzteÜbergebeneListe.Add(möglicheGeldQuellen[geldQuellenIndex]);
+
+ // 5. Param Budget des Ziels in EURO
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET / 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET / 100).ToString());
+ }
+
+ // 6. Param Budget des Ziels in CENT
+ if (TempGeldQuellenFiliale != null)
+ {
+ TempQueue.Enqueue((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenFiliale.BUDGET % 100).ToString());
+ }
+ else
+ {
+ TempQueue.Enqueue((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ letzteÜbergebeneListe.Add((TempGeldQuellenSchiff.SCHIFFSBUDGET % 100).ToString());
+ }
+
+ TextLieferant.wechsleAuswahlText("1.2.1", TempQueue, false, false);
+ }
+ break;
+ case 4:
+ // Auswahl 4 = Abbruch
+ letzteÜbergebeneListe.Clear();
+ gewählteHandelsWare = null;
+ gewählteSpielerFiliale = null;
+ gewähltesSpielerSchiff = null;
+
+ // Wenn abbruch erfolgen soll -> zurück zu Root
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ break;
+ }
+ #endregion
+ break;
+ }
+
+
+ }
+
+ private void importierePresetInListe(string Preset)
+ {
+
+ switch (Preset)
+ { //Immer Hintergrund zu Vordergrund Hinzufügen
+ // ToDo: Alle Häfen implementieren und deren Elemente aus den Vorlage Screens extrahieren und hier einpflegen
+ case "LIVERPOOL":
+ AnzeigeListe.Add(BG["HOLZ"]);
+ AnzeigeListe.Add(Fenster_Tür["1"]);
+ AnzeigeListe.Add(Tür_FeldL["1"]);
+ AnzeigeListe.Add(Tisch["2"]);
+ AnzeigeListe.Add(Verkäufer_Gesicht["1"]);
+ AnzeigeListe.Add(Verkäufer_OKörper["1"]);
+ AnzeigeListe.Add(Verkäufer_Hände["1"]);
+ AnzeigeListe.Add(Tafel_BG["HOLZ"]);
+ AnzeigeListe.Add(Tafel["BASIC"]);
+ AnzeigeListe.Add(Tafel_VG["FASS_SCHWAMM"]);
+ break;
+ case "LONDON":
+
+ break;
+ }
+
+
+ }
+
+
+ public void ladePresets()
+ {
+ //Achtung Logik für Kontrolle der Renderreihenfolge muss nochh ausgearbeitet werden
+ foreach (Image aktuellesBild in AnzeigeListe)
+ {
+
+ aktuellesBild.Alpha = 0;
+ Tween(aktuellesBild, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ AddGraphic(aktuellesBild);
+ }
+
+
+ }
+
+
+ private void setzePresets()
+ {
+ //Sammelt und fügt alle Sprite-Bausteine des Spiels in die Listen
+
+ //TempImage für mitgeben der Image parameter wie Position
+ Image tempImage;
+
+ //Hier werden alle möglichen Sprites für den Handelsscreen bereit gelegt und in die Dictionarys geschrieben
+ //Hintergründe
+ tempImage = vorbereitenImage(Assets.HANDEL_RAUM_HOLZ, 0, 0);
+ BG.Add("HOLZ", tempImage);
+
+ //Fenster Tür
+ tempImage = vorbereitenImage(Assets.HANDEL_TÜR_1, 99, 145);
+ Fenster_Tür.Add("1", tempImage);
+
+ //Deko
+ tempImage = vorbereitenImage(Assets.HANDEL_DEKOTÜR_LINKS_1, 0, 145);
+ Tür_FeldL.Add("1", tempImage);
+
+ //Tische
+ tempImage = vorbereitenImage(Assets.HANDEL_TISCH_2, 0, 290);
+ Tisch.Add("2", tempImage);
+
+ //Gesicht
+ tempImage = vorbereitenImage(Assets.HANDEL_GESICHT_1, 234, 120);
+ Verkäufer_Gesicht.Add("1", tempImage);
+
+ //Oberkörper
+ tempImage = vorbereitenImage(Assets.HANDEL_OKÖRPER_1, 234, 175);
+ Verkäufer_OKörper.Add("1", tempImage);
+
+ //Hände
+ tempImage = vorbereitenImage(Assets.HANDEL_ARME_1, 234, 258);
+ Verkäufer_Hände.Add("1", tempImage);
+
+ //Tafel_BG
+ tempImage = vorbereitenImage(Assets.HANDEL_TAFEL_HINTERGRUND_HOLZ, 444, 19);
+ Tafel_BG.Add("HOLZ", tempImage);
+
+ //Tafel
+ tempImage = vorbereitenImage(Assets.HANDEL_TAFEL_BASIC, 444, 62);
+ Tafel.Add("BASIC", tempImage);
+
+ //Tafel_VG
+ tempImage = vorbereitenImage(Assets.HANDEL_TAFEL_VORDERGRUND_1, 444, 333);
+ Tafel_VG.Add("FASS_SCHWAMM", tempImage);
+
+
+ }
+ private Image vorbereitenImage(string Asset, int xPos, int yPos)
+ {
+ Image tempImage = new Image(Asset);
+ tempImage.X = xPos;
+ tempImage.Y = yPos;
+
+ return tempImage;
+ }
+
+ //Errechnen der darzustellenden Maximalmenge des Zielschiffes (Schiff noch durchdenken weil da auch ein Mengen Cap vorhanden ist)
+ private int errechneMaxMenge(string Ware, Schiff ZielLagerOrt)
+ {
+
+ return 0;
+ }
+
+ //Errechnen der darzustellenden Maximalmenge der Zielfiliale
+ private int errechneMaxMenge(string Ware, Filiale ZielLagerOrt)
+ {
+
+ return 0;
+ }
+ }
+}
diff --git a/1869_Remake/Scenes/Intro.cs b/1869_Remake/Scenes/Intro.cs
new file mode 100644
index 0000000..bc1c4e8
--- /dev/null
+++ b/1869_Remake/Scenes/Intro.cs
@@ -0,0 +1,222 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Scenes
+{
+
+ // Intro ist ein ImageSequenzer, welcher die aufelisteten Images nacheinander ein- und ausblendet und beim letzten stehen bleibt
+ // Hier muss der User ein letztes Mal Bestätigen um ins Hauptmenü(neue Szene) zu gelangen
+
+ public class Intro : Scene
+ {
+ // Imageobjekte mit den Intro Bildschirmen
+ public Image IntroImage = new Image(Assets.INTRO_IMG_Company);
+ public Image IntroImage2 = new Image(Assets.INTRO_IMG_ART);
+ public Image IntroImage3 = new Image(Assets.INTRO_IMG_PROGRAMMING);
+ public Image IntroImage4 = new Image(Assets.INTRO_IMG_MUSIK);
+ public Image IntroImage5 = new Image(Assets.TITLE_IMG);
+
+ public Image BlackScreen = new Image(Assets.BLACKSCREEN);
+
+ public Image aktuellesImage = null;
+
+ //Blinkender Text
+ public Text enterText1 = new Text("Drücke Enter", Assets.FONT_AMIGA4EVER2, 12);
+ public Text enterText2 = new Text("oder", Assets.FONT_AMIGA4EVER2, 12);
+ public Text enterText3 = new Text("Linke Maustaste", Assets.FONT_AMIGA4EVER2, 12);
+
+ //Intromusik
+ public Music titleSong = new Music(Assets.MUSIC_TITLE,false);
+
+ //Nummer des gerade Angezeigten Bildes
+ public int ImageNummer = 0;
+
+ public const float TIMER_ANZEIGE = 720f;
+ //AnzeigeTimer muss hoch starten damit sofort erstes bild angezeigt wird
+ public float anzeigeTimer = 280f;
+ public float TIMER_BLINK = 60f;
+ public float TIMER_BLINK_FAST = 10f;
+ public float blinkTimer = 0f;
+ //Wenn auf 1 -> User hat bestätigt
+ public int bestätigt = 0;
+ public bool soundEnde = false;
+
+
+ public Intro()
+ {
+ Globals.aktuelleSzene = "Intro";
+
+ //Vorbereiten des Blinktextes
+ enterText1.Color = new Otter.Color("a01010");
+ enterText2.Color = new Otter.Color("a01010");
+ enterText3.Color = new Otter.Color("a01010");
+
+ enterText1.CenterOrigin();
+ enterText2.CenterOrigin();
+ enterText3.CenterOrigin();
+
+ enterText1.X = Globals.Remake.Width - 200;
+ enterText2.X = Globals.Remake.Width - 200;
+ enterText3.X = Globals.Remake.Width - 200;
+
+ enterText1.Y = Globals.Remake.Height - 150;
+ enterText2.Y = Globals.Remake.Height - 125;
+ enterText3.Y = Globals.Remake.Height - 100;
+
+ enterText1.Visible = false;
+ enterText2.Visible = false;
+ enterText3.Visible = false;
+
+ //Vorbereiten des Blackscreens
+ BlackScreen.CenterOrigin();
+ BlackScreen.X = Globals.Remake.HalfWidth;
+ BlackScreen.Y = Globals.Remake.HalfHeight;
+ BlackScreen.Alpha = 0f;
+
+ //Abspielen der Musik(looped nicht sondern geht am ende einfach aus)
+ titleSong.Play();
+
+ }
+
+
+
+ public override void Update()
+ {
+ base.Update();
+
+ //Wenn Musik zuende ohne User Eingabe -> Neubeginn
+ if (!titleSong.IsPlaying)
+ {
+ if (soundEnde == false)
+ {
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+ soundEnde = true;
+ }
+
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Intro";
+ Globals.Remake.SwitchScene(new Intro());
+ }
+
+ }
+
+ //Wenn Taste gedrückt dann bei nächstem Tween weiter zu nächster Szene
+ if ((Globals.PlayerSession.Controller.Button("Enter").Released || Globals.PlayerSession.Controller.Button("MausLinks").Released) && bestätigt == 0 && ImageNummer != 5)
+ {
+ bestätigt = 1;
+
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+
+ }
+
+ if (bestätigt == 1)
+ {
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ titleSong.Stop();
+ Globals.Remake.SwitchScene(new ConfigScreen());
+ }
+ }
+
+ anzeigeTimer++;
+
+ //Daueranzeige des letzten Screens mit blinkendem text
+ if (anzeigeTimer >= TIMER_ANZEIGE/2 && ImageNummer == 5)
+ {
+ blinkTimer++;
+
+ if (Globals.PlayerSession.Controller.Button("Enter").Released || Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ bestätigt = 1;
+ TIMER_BLINK = TIMER_BLINK_FAST;
+
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+
+ }
+
+ if (blinkTimer >= TIMER_BLINK)
+ {
+ enterText1.Visible = !enterText1.Visible;
+ enterText2.Visible = !enterText2.Visible;
+ enterText3.Visible = !enterText3.Visible;
+
+ blinkTimer = 0;
+ }
+
+ if (bestätigt == 1)
+ {
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ titleSong.Stop();
+ Globals.Remake.SwitchScene(new ConfigScreen());
+ }
+ }
+
+ }
+
+ //Wechsel des Screens
+ if (anzeigeTimer >= TIMER_ANZEIGE && ImageNummer != 5)
+ {
+
+
+ //Nächstes Intro Bild
+ aktuellesImage = null;
+ ImageNummer++;
+
+ //Laden des Nächsten Bildes und beim letzten Bild Welchseln in den Titelbildschirm) [Erweiterbar um endlos viele Screens]
+ switch(ImageNummer)
+ {
+ case 1: aktuellesImage = IntroImage; break;
+ case 2: aktuellesImage = IntroImage2; break;
+ case 3: aktuellesImage = IntroImage3; break;
+ case 4: aktuellesImage = IntroImage4; break;
+ case 5: aktuellesImage = IntroImage5; break;
+ // hier eventuell einen Extra screen für Remake einfügen (evtl im Pixelstil Mensch mit Laptop und Otter symbol auf dem Laptop)
+ }
+
+ aktuellesImage.CenterOrigin();
+ aktuellesImage.X = Globals.Remake.HalfWidth;
+ aktuellesImage.Y = Globals.Remake.HalfHeight;
+
+ aktuellesImage.Alpha = 0f;
+ ClearGraphics();
+ AddGraphic(aktuellesImage);
+
+ // Tweenen des Alpha wertes für einen "Fade In & Out" effekt
+ if (ImageNummer != 5)
+ {
+ Tween(aktuellesImage, new { Alpha = 1f }, 180f, 0f)
+ .Ease(Ease.BackInOut)
+ .Reflect()
+ .Repeat(1)
+ .RepeatDelay(360f);
+ }
+ else
+ {
+ Tween(aktuellesImage, new { Alpha = 1f }, 180f, 0f)
+ .Ease(Ease.BackInOut);
+
+ AddGraphic(enterText1);
+ AddGraphic(enterText2);
+ AddGraphic(enterText3);
+ }
+
+
+ anzeigeTimer = 0f;
+
+ }
+
+ }
+
+
+ }
+}
diff --git a/1869_Remake/Scenes/OptionenScene.cs b/1869_Remake/Scenes/OptionenScene.cs
new file mode 100644
index 0000000..63a333e
--- /dev/null
+++ b/1869_Remake/Scenes/OptionenScene.cs
@@ -0,0 +1,240 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Scenes
+{
+ public class OptionenScene : Scene
+ {
+ public Image BlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image OptionScreen = new Image(Assets.OPTIONSCREEN);
+
+ //AnzeigeTimer aktuell nur für warten vor dem 1. Text (später direkt nach tween)
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+ public bool beendenGame = false;
+
+ //aktuelle Seite der Statistik
+ public int OptionSeite = 0;
+ public bool ersterAufbau = true;
+
+ public Text[] anzeigeTexte = new Text[10];
+
+ public Text WeiterText = Globals.TEXT_WEITER;
+ public Text BeendenText = Globals.TEXT_BEENDEN;
+
+ public OptionenScene()
+ {
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Optionen";
+
+ OptionScreen.CenterOrigin();
+ OptionScreen.X = Globals.Remake.HalfWidth;
+ OptionScreen.Y = Globals.Remake.HalfHeight;
+
+ OptionScreen.Alpha = 0f;
+
+ AddGraphic(OptionScreen);
+ Tween(OptionScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ //Weiter Text zum herausgehen aus der Szene
+ WeiterText.X = 520;
+ WeiterText.Y = 450;
+ //Farbe => Options dunkel Grau
+ WeiterText.Color = Globals.OptionGrau;
+ WeiterText.Alpha = 0f;
+
+
+ AddGraphic(WeiterText);
+ Tween(WeiterText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ //Beenden Text zum beenden der Applikation
+ BeendenText.X = 230;
+ BeendenText.Y = 450;
+ //Farbe => Options dunkel Grau
+ BeendenText.Color = Globals.OptionGrau;
+ BeendenText.Alpha = 0f;
+
+
+ AddGraphic(BeendenText);
+ Tween(BeendenText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ //Vorbereiten des Blackscreens
+ BlackScreen.CenterOrigin();
+ BlackScreen.X = Globals.Remake.HalfWidth;
+ BlackScreen.Y = Globals.Remake.HalfHeight;
+ BlackScreen.Alpha = 0f;
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ //BlackScreen Durchsichtigkeit 1 ist wurde die nächste Szene getriggert -> wechsel zum Hauptbildschirm
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ if ( !beendenGame)
+ {
+ Globals.LetzteSzene = "Optionen";
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+ else
+ {
+ Globals.Remake.Close();
+ }
+
+ }
+
+ //Erst nach Timer sind aktionen möglich
+ if (szenenTimer >= TIMER_GRENZE)
+ {
+ // Nach dem timer alle unsichtbaren Texte einblenden um Zeit zwischen Texten zu simulieren => Kein flackern durch schnell eingeblendete Texte
+ // Nur neu erstellen wenn notwendig für bessere Performance
+ if (!anzeigeFertig)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ t.Alpha = 1f;
+ t.Color = Globals.OptionGrau; ;
+
+ }
+ }
+
+ anzeigeFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ //Initialisieren der Grafiken erst ab 2. Durchgang (Nurentfernen der Texte nicht des Hintergrundbildes)
+ if (!ersterAufbau)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ RemoveGraphic(t);
+ }
+
+ }
+ else
+ {
+ ersterAufbau = false;
+ }
+
+
+ //Initialisieren des Arrays
+ int counter = 0;
+ foreach (var t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ counter++;
+ }
+ }
+
+ for (int i = 0; i < counter; i++)
+ {
+ anzeigeTexte[i] = null;
+
+ }
+
+
+
+ //Anzeige des aktuellen Textes
+ switch (OptionSeite)
+ {
+ //Jede Seite einzeln
+ case 0:
+
+ break;
+
+ case 1:
+
+
+
+ break;
+ case 2:
+
+ break;
+ }
+
+
+
+ //Wechsel des Textes fertig und timer neu reseten; Nach wechsel muss erst Eingabe des Users erfolgen für nächsten Wechsel
+ wahlFertig = false;
+
+
+ }
+
+ //Überprüfen der Buttons
+
+ //Weiter
+ if (Util.InRect(this.MouseX, this.MouseY, 520, 450, 50, 15))
+ {
+
+ WeiterText.Color = Globals.HighLightMagenta;
+
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+
+ anzeigeFertig = false;
+
+ szenenTimer = 0;
+ }
+ }
+
+ else
+ {
+ WeiterText.Color = Globals.OptionGrau;
+ }
+
+ //Beenden
+ if (Util.InRect(this.MouseX, this.MouseY, 230, 450, 50, 15))
+ {
+
+ BeendenText.Color = Globals.HighLightMagenta;
+
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+
+ anzeigeFertig = false;
+ beendenGame = true;
+
+ szenenTimer = 0;
+ }
+ }
+
+ else
+ {
+ BeendenText.Color = Globals.OptionGrau;
+ }
+ }
+
+ }
+ }
+}
diff --git a/1869_Remake/Scenes/StatistikScene.cs b/1869_Remake/Scenes/StatistikScene.cs
new file mode 100644
index 0000000..cf875c7
--- /dev/null
+++ b/1869_Remake/Scenes/StatistikScene.cs
@@ -0,0 +1,188 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Otter;
+using _1869_Remake;
+
+namespace _1869_Remake.Scenes
+{
+ public class StatistikScene : Scene
+ {
+ public Image BlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image StatScreen = new Image(Assets.STATISTIKSCREEN);
+
+ //AnzeigeTimer aktuell nur für warten vor dem 1. Text (später direkt nach tween)
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+
+ //aktuelle Seite der Statistik
+ public int StatSeite = 0;
+ public bool ersterAufbau = true;
+
+ public Text[] anzeigeTexte = new Text[10];
+
+ public Text EndeText = Globals.TEXT_ENDE;
+ public StatistikScene()
+ {
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Statistik";
+
+ StatScreen.CenterOrigin();
+ StatScreen.X = Globals.Remake.HalfWidth;
+ StatScreen.Y = Globals.Remake.HalfHeight;
+
+ StatScreen.Alpha = 0f;
+
+ AddGraphic(StatScreen);
+ Tween(StatScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ //Ende Text zum herausgehen aus der Szene
+ EndeText.X = 395;
+ EndeText.Y = 445;
+ //Farbe => Statistik dunkel grün
+ EndeText.Color = Globals.StatGrün;
+ EndeText.Alpha = 0f;
+
+
+ AddGraphic(EndeText);
+ Tween(EndeText, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ //Vorbereiten des Blackscreens
+ BlackScreen.CenterOrigin();
+ BlackScreen.X = Globals.Remake.HalfWidth;
+ BlackScreen.Y = Globals.Remake.HalfHeight;
+ BlackScreen.Alpha = 0f;
+ }
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ //BlackScreen Durchsichtigkeit 1 ist wurde die nächste Szene getriggert -> wechsel zum Hauptbildschirm
+ if (BlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Hall of Fame";
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ //Erst nach Timer sind aktionen möglich
+ if (szenenTimer >= TIMER_GRENZE)
+ {
+ // Nach dem timer alle unsichtbaren Texte einblenden um Zeit zwischen Texten zu simulieren => Kein flackern durch schnell eingeblendete Texte
+ // Nur neu erstellen wenn notwendig für bessere Performance
+ if (!anzeigeFertig)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ t.Alpha = 1f;
+ t.Color = Globals.StatGrün; ;
+
+ }
+ }
+
+ anzeigeFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ //Initialisieren der Grafiken erst ab 2. Durchgang (Nurentfernen der Texte nicht des Hintergrundbildes)
+ if (!ersterAufbau)
+ {
+ foreach (Text t in anzeigeTexte)
+ {
+ RemoveGraphic(t);
+ }
+
+ }
+ else
+ {
+ ersterAufbau = false;
+ }
+
+
+ //Initialisieren des Arrays
+ int counter = 0;
+ foreach (var t in anzeigeTexte)
+ {
+ if (t != null)
+ {
+ counter++;
+ }
+ }
+
+ for (int i = 0; i < counter; i++)
+ {
+ anzeigeTexte[i] = null;
+
+ }
+
+
+
+ //Anzeige des aktuellen Textes
+ switch (StatSeite)
+ {
+ //Jede Seite einzeln
+ case 0:
+
+ break;
+
+ case 1:
+
+
+
+ break;
+ case 2:
+
+ break;
+ }
+
+
+
+ //Wechsel des Textes fertig und timer neu reseten; Nach wechsel muss erst Eingabe des Users erfolgen für nächsten Wechsel
+ wahlFertig = false;
+
+
+ }
+
+ //Überprüfen der Buttons
+
+ //Ende
+ if (Util.InRect(this.MouseX, this.MouseY, 395, 445, 50, 15))
+ {
+
+ EndeText.Color = Globals.HighLightMagenta;
+
+
+ if (Globals.PlayerSession.Controller.Button("MausLinks").Released)
+ {
+ wahlFertig = true;
+ }
+
+ if (wahlFertig)
+ {
+ AddGraphic(BlackScreen);
+ Tween(BlackScreen, new { Alpha = 1f }, 64f, 0f).Ease(Ease.BackInOut);
+
+ anzeigeFertig = false;
+
+ szenenTimer = 0;
+ }
+ }
+
+ else
+ {
+ EndeText.Color = Globals.StatGrün;
+ }
+ }
+ }
+ }
+}
diff --git a/1869_Remake/Scenes/WerftScene.cs b/1869_Remake/Scenes/WerftScene.cs
new file mode 100644
index 0000000..be51627
--- /dev/null
+++ b/1869_Remake/Scenes/WerftScene.cs
@@ -0,0 +1,3567 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using _1869_Remake;
+using _1869_Remake.ToolKlassen;
+using _1869_Remake.Entities;
+using Otter;
+
+
+namespace _1869_Remake.Scenes
+{
+ public class WerftScene : Scene
+ {
+
+ TextBuilder TextLieferant;
+
+ public Image WerftScreen_Büro = new Image(Assets.WERFTBÜROSCREEN);
+ public Image WerftScreen_Reparatur = new Image(Assets.WERFTREPERATURSCREEN);
+ public Image WerftScreen_SchiffsAuswahl = new Image(Assets.WERFTSCHIFFSAUSWAHLSCREEN);
+ public Image FadeInBlackScreen = new Image(Assets.BLACKSCREEN);
+ public Image FadeOutBlackScreen = new Image(Assets.BLACKSCREEN);
+
+ //Schiffsscreens
+ public Image Schiffsauswahl_Schoner = new Image(Assets.WERFT_SCHIFF_SCHONER);
+ public Image Schiffsauswahl_Bark = new Image(Assets.WERFT_SCHIFF_BARK);
+ public Image Schiffsauswahl_Fregatte = new Image(Assets.WERFT_SCHIFF_FREGATTE);
+ public Image Schiffsauswahl_Brigg = new Image(Assets.WERFT_SCHIFF_BRIGG);
+ public Image Schiffsauswahl_Holzdampfschiff = new Image(Assets.WERFT_SCHIFF_HOLZDAMPFSCHIFF);
+ public Image Schiffsauswahl_Eisendampfschiff = new Image(Assets.WERFT_SCHIFF_EISENDAMPFSCHIFF);
+ public Image Schiffsauswahl_Klipper = new Image(Assets.WERFT_SCHIFF_KLIPPER);
+ public Image Schiffsauswahl_Name = new Image(Assets.WERFT_SCHIFF_BAU_NAME);
+ private List SchiffsSchemaListe = new List();
+ private List gebrauchteSchiffe = new List();
+ private int SchiffsIndex = 0;
+ //AnzeigeTimer
+ public const float TIMER_GRENZE = 90f;
+ public float szenenTimer = 0f;
+ public bool wahlFertig = true;
+ public bool anzeigeFertig = false;
+
+ //TempTextVariablen
+ Queue TempSprachText = new Queue();
+ Queue TempSprachParams = new Queue();
+ Queue TempQueue = new Queue();
+
+ //Letzte dem Textbuilder übergebene Liste an Paramtern (Wird nur für Shortcut funktionalität verwender)
+ private List letzteÜbergebeneListe = new List();
+
+ public Hafen aktuellerHafen;
+ private Image aktuellerBG;
+ private string aktuellGewählterSchiffstyp = "SCHONER";
+ //Standard Aufbereitungszeit für gebrauchte Schiffe ist 4 Tage
+ private TimeSpan StandardLieferZeit = new TimeSpan(4, 0, 0, 0);
+
+ //Temporäre Liste der möglichen Geldquellen
+ public List möglicheGeldQuellen = new List();
+ public int geldQuellenIndex = 0;
+ public int betragAbbezahlen = 0;
+ private int GebrauchtWert;
+ private int WunschRestBetrag;
+ bool kannBezahlen;
+
+ //Textbox zum Eingeben der Schiffsnamen
+ public TextBox textFeld;
+
+
+ public WerftScene(string Preset)
+ {
+ //Initialisieren des Hauptbildschirms und einblenden
+ Globals.aktuelleSzene = "Werft";
+
+ //Informationen zum aktuellen Hafen wird geladen, Alle Handlungen beeinflussen den globalen Zustand des Hafens
+ aktuellerHafen = Globals.AlleHäfen[Preset];
+ //TestLogging
+ Console.WriteLine("Aktueller Hafen ist " + aktuellerHafen.NAME);
+
+ //TextBuilder einbinden (POS = Unterer RAND)
+ TextLieferant = new TextBuilder(Globals.aktuelleSzene);
+ Add(TextLieferant);
+
+ überprüfeGeldquellen();
+
+ //Einleitungssprachtexte
+ Queue WillkommensText = new Queue();
+ WillkommensText.Enqueue("Helfen");
+ TextLieferant.erzeugeSprachText(WillkommensText, new Queue(), Globals.Remake.HalfWidth, 100);
+
+ //Auswahltexte
+ TextLieferant.erzeugeAuswahlText(new Queue(), 25, 410);
+
+ //Vorbeireiten des Hintergrundes Büro und der NebenScreens
+ //Büro
+ WerftScreen_Büro.CenterOrigin();
+ WerftScreen_Büro.X = Globals.Remake.HalfWidth;
+ WerftScreen_Büro.Y = Globals.Remake.HalfHeight;
+ WerftScreen_Büro.Alpha = 1f;
+ //bei Start der Szene wird der aktuelle BG weg gespeichert um diesen Später aus/einzublenden
+ aktuellerBG = WerftScreen_Büro;
+ AddGraphic(aktuellerBG);
+
+ //Reperatur Screen
+ WerftScreen_Reparatur.CenterOrigin();
+ WerftScreen_Reparatur.X = Globals.Remake.HalfWidth;
+ WerftScreen_Reparatur.Y = Globals.Remake.HalfHeight;
+ WerftScreen_Reparatur.Alpha = 0f;
+
+ //Schiffsauswahl Screen
+ WerftScreen_SchiffsAuswahl.CenterOrigin();
+ WerftScreen_SchiffsAuswahl.X = Globals.Remake.HalfWidth;
+ WerftScreen_SchiffsAuswahl.Y = Globals.Remake.HalfHeight;
+ WerftScreen_SchiffsAuswahl.Alpha = 0f;
+
+ //SchiffsScreens
+ Schiffsauswahl_Schoner.CenterOrigin();
+ Schiffsauswahl_Schoner.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Schoner.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Schoner.Alpha = 0f;
+
+ Schiffsauswahl_Bark.CenterOrigin();
+ Schiffsauswahl_Bark.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Bark.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Bark.Alpha = 0f;
+
+ Schiffsauswahl_Holzdampfschiff.CenterOrigin();
+ Schiffsauswahl_Holzdampfschiff.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Holzdampfschiff.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Holzdampfschiff.Alpha = 0f;
+
+ Schiffsauswahl_Eisendampfschiff.CenterOrigin();
+ Schiffsauswahl_Eisendampfschiff.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Eisendampfschiff.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Eisendampfschiff.Alpha = 0f;
+
+ Schiffsauswahl_Brigg.CenterOrigin();
+ Schiffsauswahl_Brigg.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Brigg.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Brigg.Alpha = 0f;
+
+ Schiffsauswahl_Fregatte.CenterOrigin();
+ Schiffsauswahl_Fregatte.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Fregatte.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Fregatte.Alpha = 0f;
+
+
+ Schiffsauswahl_Klipper.CenterOrigin();
+ Schiffsauswahl_Klipper.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Klipper.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Klipper.Alpha = 0f;
+
+ Schiffsauswahl_Name.CenterOrigin();
+ Schiffsauswahl_Name.X = Globals.Remake.HalfWidth;
+ Schiffsauswahl_Name.Y = Globals.Remake.HalfHeight;
+ Schiffsauswahl_Name.Alpha = 0f;
+
+ //Vorbereiten des Blackscreens
+ FadeInBlackScreen.CenterOrigin();
+ FadeInBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeInBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeInBlackScreen.Alpha = 1f;
+
+ FadeOutBlackScreen.CenterOrigin();
+ FadeOutBlackScreen.X = Globals.Remake.HalfWidth;
+ FadeOutBlackScreen.Y = Globals.Remake.HalfHeight;
+ FadeOutBlackScreen.Alpha = 0f;
+
+ Tween(FadeInBlackScreen, new { Alpha = 0f }, 64f, 0f).Ease(Ease.BackInOut);
+ AddGraphics(FadeInBlackScreen);
+ AddGraphic(FadeOutBlackScreen);
+ }
+
+
+ public override void Update()
+ {
+ base.Update();
+
+ //hochzählendes Zeitelement um Aktionen in der Szene zu Takten
+ szenenTimer++;
+
+ if (FadeOutBlackScreen.Alpha >= 0.999f)
+ {
+ Globals.LetzteSzene = "Werft";
+ this.RemoveAll();
+ Globals.Remake.SwitchScene(new worldMap());
+ }
+
+ //Bei Tick überprüfen, ob etwas im Textbuilder geklickt wurde (1 = Obere Auswahl, 2 = Mitlere Auswahl, 3 = Untere Auswahl, 4 = Oberer Pfeil, 5 = unterer Pfeil)
+ //Zuerst überprüfen auf welcher Ebene wir uns aktuell befinden und danach was dort geklickt wurde
+ int tempAuswahl = TextLieferant.checkAuswahl();
+ Text TempText;
+ List anzeigeTextListe = new List();
+ Schiff SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ string gewählterSchiffsName = " ";
+ switch (TextLieferant.aktuelleEbene)
+ {
+ // Textbaum - Root
+ case "1":
+ #region RootLogik (Demo Ready)
+
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+
+ // Hier muss für jede Auswahl immer alle Möglichen Baumstränge abgedeckt werden, wenn neuer Baumzweig hinzukommt muss hier seine Auswahl verwaltet werdenkd
+ case 1:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ //Auswahl Reparatur
+ WechsleBG("Reparatur");
+
+ TextLieferant.wechsleAuswahlText("1.1", new Queue());
+
+ break;
+ case 2:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ aktuellGewählterSchiffstyp = Globals.AlleSchiffsTypen[SchiffsIndex].SCHIFFSTYP;
+ //Auswahl Schiff bauen
+
+ int tempSchiffeInBau = 0;
+ //Vorabüberprüfen ob bereits 2 zu bauende Schiffe im Hafen sind
+ //Jede Werft baut maximal 2 Schiffe (spielerübergreifend)
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.inBau)
+ {
+ tempSchiffeInBau++;
+ }
+ }
+ if (tempSchiffeInBau >= 2)
+ {
+ TempSprachText.Clear();
+ TempSprachText.Enqueue("BAU_KEINPLATZ1");
+ TempSprachText.Enqueue("BAU_KEINPLATZ2");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ break;
+ }
+ else
+ {
+ // Es könenn pro Werft maximal 2 Schiffe gebaut werden unabhängig von welchem Spieler
+ switch (SchiffsIndex)
+ {
+ #region SchiffsParams
+ //Erzeugen der jeweiligen Anzeigen Texte je nach Schiffstyp
+ case 0:
+ WechsleBG("Schiffsauswahl_Schoner");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 1:
+ WechsleBG("Schiffsauswahl_Bark");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 2:
+ WechsleBG("Schiffsauswahl_Holzdampfschiff");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(4), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 3:
+ WechsleBG("Schiffsauswahl_Eisendampfschiff");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(5), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 4:
+ WechsleBG("Schiffsauswahl_Brigg");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 280;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 300;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 5:
+ WechsleBG("Schiffsauswahl_Fregatte");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 220;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 6:
+ WechsleBG("Schiffsauswahl_Klipper");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 340;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ #endregion
+ }
+
+ TextLieferant.erzeugeAnzeigeTexte(anzeigeTextListe);
+ TextLieferant.wechsleAuswahlText("1.2", new Queue());
+ break;
+ }
+ case 3:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Auswahl Verlassen
+ //FadeOut zu WorldMap
+ Tween(FadeOutBlackScreen, new { Alpha = 1f }, 180f, 0f).Ease(Ease.BackInOut);
+
+ TextLieferant.setzeFadeOut();
+ break;
+
+ case 4:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ //Auswahl Gebrauchtes Schiff
+
+ //Zusammensuchen der Liste aller gebrauchten Schiffe
+ // Gebrauchtes Schiff = Schiff ohne Commandeur angedockt im aktuellen Hafen
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == null)
+ {
+ gebrauchteSchiffe.Add(s);
+ }
+ }
+ if (gebrauchteSchiffe.IsEmpty())
+ {
+ TempSprachText.Clear();
+ TempSprachText.Enqueue("Gebraucht_KEINESCHIFFE");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ else
+ {
+ SchiffsIndex = 0;
+ aktuellGewählterSchiffstyp = gebrauchteSchiffe[SchiffsIndex].SCHIFFSTYP;
+
+ GebrauchtWert = gebrauchteSchiffe[SchiffsIndex].NEUWERT;
+ //Verlaufswert muss berechnet werden
+ //-> Normalerweise wird prozentual zur Abnutzung die Differenz aus Neuwert-(Grad der Abnutzung in %) gerechnet
+ //-> Da Reparatur noch nich einbaut ist wird Altersabhängig bestimmt ((1/2)* Alter in jahren)
+ for (int Alter = 0; Alter < gebrauchteSchiffe[SchiffsIndex].ALTER; Alter++)
+ {//halbiere den NeuWert pro jahr
+ GebrauchtWert /= 2;
+ }
+ switch (aktuellGewählterSchiffstyp)
+ {
+ #region SchiffsParams
+ //Erzeugen der jeweiligen Anzeigen Texte je nach Schiffstyp
+
+ case "SCHONER":
+ WechsleBG("Schiffsauswahl_Schoner");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "BARK":
+ WechsleBG("Schiffsauswahl_Bark");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "HOLZDAMPFSCHIFF":
+ WechsleBG("Schiffsauswahl_Holzdampfschiff");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(4), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "EISENDAMPFSCHIFF":
+ WechsleBG("Schiffsauswahl_Eisendampfschiff");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(5), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "BRIGG":
+ WechsleBG("Schiffsauswahl_Brigg");
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 280;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 300;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 320;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "FREGATTE":
+ WechsleBG("Schiffsauswahl_Fregatte");
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 220;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 240;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "KLIPPER":
+ WechsleBG("Schiffsauswahl_Klipper");
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 340;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 190;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ #endregion
+ }
+
+ //Geldquellen paramter
+ TempQueue.Clear();
+ geldQuellenIndex = 0;
+
+ // Paramter1: Quellort Geld
+ // Parameter2: Geldmenge der Quelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempQueue.Enqueue((f.BUDGET / 100).ToString());
+ TempQueue.Enqueue((f.BUDGET % 100).ToString());
+ }
+ }
+
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempQueue.Enqueue((s.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((s.SCHIFFSBUDGET % 100).ToString());
+ }
+ }
+ }
+ TextLieferant.erzeugeAnzeigeTexte(anzeigeTextListe);
+ TextLieferant.wechsleAuswahlText("1.4", TempQueue, false);
+ }
+
+ break;
+ case 5:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ //Auswahl Schiff verkaufen
+
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ //Alle Schiffe des aktuellen Spielers anbieten (außer die noch in Bau befindlichen oder präpariert werden)
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && s.inBau != true && s.inBereitstellung != true)
+ {
+ TempQueue.Enqueue(s.NAME);
+ letzteÜbergebeneListe.Add(s.NAME);
+ }
+
+ }
+
+ TempSprachText = new Queue();
+ if (TempQueue.Count() > 0)
+ {
+ if (TempQueue.Count() == 1)
+ {
+ //Shortcut zu Mengenbestimmungsscreen setzen
+ TextLieferant.setAuswahl(1);
+ }
+ else
+ {
+ TempSprachText.Enqueue("Verkauf_WelchesSchiff");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+
+ }
+
+ TextLieferant.wechsleAuswahlText("1.5A", TempQueue, true);
+ }
+ else
+ {
+
+ //Spieler hat keine angedockten Schiffe in diesem Hafen
+ TempSprachText.Enqueue("Verkauf_KeinSchiff1");
+ TempSprachText.Enqueue("Verkauf_KeinSchiff2");
+
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+
+ break;
+ case 6:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ letzteÜbergebeneListe.Clear();
+ //Auswahl Schiff bezahlen wenn bestellt wurde
+ bool hatSchiffeInBau = false;
+ string bezahlterSchiffsName = "";
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ //Alle Schiffe des aktuellen Spielers anbieten (außer die noch in Bau befindlichen)
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && s.inBau)
+ {
+ hatSchiffeInBau = true;
+ //Spieler hat Schiff welches
+ if (bezahlterSchiffsName == "")
+ {
+ bezahlterSchiffsName = s.NAME;
+ }
+ else
+ {
+ bezahlterSchiffsName = "ALLE";
+ }
+
+ //Nur in die Liste nehmen wenn Schiff noch nicht bezahlt ist
+ if(!s.bezahlt)
+ {
+ TempQueue.Enqueue(s.NAME);
+ letzteÜbergebeneListe.Add(s.NAME);
+ }
+
+
+ }
+
+ }
+
+ TempSprachText = new Queue();
+ TempSprachParams = new Queue();
+ if (TempQueue.Count() > 0)
+ {
+ if (TempQueue.Count() == 1)
+ {
+ //Shortcut zu Mengenbestimmungsscreen setzen
+ TextLieferant.setAuswahl(1);
+ }
+ else
+ {
+ TempSprachText.Enqueue("Verkauf_WelchesSchiff");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+
+ }
+
+ TextLieferant.wechsleAuswahlText("1.6A", TempQueue, true);
+ }
+ else
+ {
+ if(hatSchiffeInBau)
+ {
+ if(bezahlterSchiffsName=="ALLE")
+ {
+ TempSprachText.Enqueue("Bezahlen_AlleBezahlt");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ else
+ {
+ TempSprachParams.Enqueue(bezahlterSchiffsName);
+ TempSprachText.Enqueue("Bezahlen_XBezahlt");
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+ }
+
+ }
+ else
+ {
+ TempSprachText.Enqueue("Bezahlen_KeineSchiffe");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+
+ }
+ break;
+
+ }
+ #endregion
+ break;
+ case "1.1":
+ #region Reparatur Logik (Demo ready)
+ // In der Demo deaktiviert (überall die selbe Nachricht)
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 3:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ WechsleBG("Büro");
+ break;
+ default:
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TempSprachText.Enqueue("Demo_KeineReparatur");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ break;
+ }
+ #endregion
+ break;
+ case "1.2":
+ #region Bauen Logik (Demo ready)
+ // Bauen eines neuen Schiffes - Typauswahl
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 1:
+ // Nächstes Model zeigen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ SchiffsIndex++;
+
+ if (SchiffsIndex > 6)
+ SchiffsIndex = 6;
+ aktuellGewählterSchiffstyp = Globals.AlleSchiffsTypen[SchiffsIndex].SCHIFFSTYP;
+ switch (SchiffsIndex)
+ {
+ #region Schiffsparams
+ case 0:
+ WechsleBG("Schiffsauswahl_Schoner");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 1:
+ WechsleBG("Schiffsauswahl_Bark");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 2:
+ WechsleBG("Schiffsauswahl_Holzdampfschiff");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(4), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 3:
+ WechsleBG("Schiffsauswahl_Eisendampfschiff");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(5), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 4:
+ WechsleBG("Schiffsauswahl_Brigg");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 280;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 300;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 5:
+ WechsleBG("Schiffsauswahl_Fregatte");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 220;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 6:
+ WechsleBG("Schiffsauswahl_Klipper");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 340;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ #endregion
+ }
+ TextLieferant.erzeugeAnzeigeTexte(anzeigeTextListe);
+ break;
+ case 2:
+ // Letztes Model zeigen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ SchiffsIndex--;
+ if (SchiffsIndex < 0)
+ SchiffsIndex = 0;
+ aktuellGewählterSchiffstyp = Globals.AlleSchiffsTypen[SchiffsIndex].SCHIFFSTYP;
+ switch (SchiffsIndex)
+ {
+ #region Schiffsparams
+ case 0:
+ WechsleBG("Schiffsauswahl_Schoner");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+
+ break;
+ case 1:
+ WechsleBG("Schiffsauswahl_Bark");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+
+ break;
+ case 2:
+ WechsleBG("Schiffsauswahl_Holzdampfschiff");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(4), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+
+ break;
+ case 3:
+ WechsleBG("Schiffsauswahl_Eisendampfschiff");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(5), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 4:
+ WechsleBG("Schiffsauswahl_Brigg");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 280;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 300;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 5:
+ WechsleBG("Schiffsauswahl_Fregatte");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 220;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case 6:
+ WechsleBG("Schiffsauswahl_Klipper");
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempText = new Text("KABINEN FÜR " + SchablonenSchiff.KABINEN + " PASSAGIERE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + SchablonenSchiff.MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + SchablonenSchiff.LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + SchablonenSchiff.LIEFERZEIT + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + SchablonenSchiff.BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 340;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (SchablonenSchiff.NEUWERT / 100).ToString() + "," + (SchablonenSchiff.NEUWERT % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ANZAHLUNG: $" + (SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString() + "," + (SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ #endregion
+ }
+ TextLieferant.erzeugeAnzeigeTexte(anzeigeTextListe);
+ break;
+ case 3:
+ // Bestätigung - Schiff bauen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+
+ //Anzeigetext muss gelöscht werden
+ TextLieferant.erzeugeAnzeigeTexte(new List());
+
+ //Je nachdem welcher Index aktuell gewählt ist wird ein Bau-Event erzeugt mit dem jeweiligen Schiffstyp und Spieler
+ switch (SchiffsIndex)
+ {
+ case 0:
+ aktuellGewählterSchiffstyp = "SCHONER";
+ break;
+ case 1:
+ aktuellGewählterSchiffstyp = "BARK";
+ break;
+ case 2:
+ aktuellGewählterSchiffstyp = "HOLZDAMPFSCHIFF";
+ break;
+ case 3:
+ aktuellGewählterSchiffstyp = "EISENDAMPFSCHIFF";
+ break;
+ case 4:
+ aktuellGewählterSchiffstyp = "BRIGG";
+ break;
+ case 5:
+ aktuellGewählterSchiffstyp = "FREGATTE";
+ break;
+
+ case 6:
+ aktuellGewählterSchiffstyp = "KLIPPER";
+ break;
+ }
+ Console.WriteLine("Schiffstyp gewählt: " + aktuellGewählterSchiffstyp);
+
+ //Eingabefeld für Texteingabe
+ textFeld = new TextBox(Globals.Remake.HalfWidth - 65, Globals.Remake.HalfHeight - 60, 150, 20, 15, false);
+ this.Add(textFeld);
+ textFeld.Focus();
+
+ TextLieferant.wechsleAuswahlText("1.2.3A", TempQueue, false);
+ WechsleBG("Schiffsauswahl_Name");
+
+ break;
+ case 4:
+ // Abbruch
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ WechsleBG("Büro");
+ break;
+ }
+ #endregion
+ break;
+ case "1.2.3A":
+ #region Bauen_Namenswahl (Demo ready)
+ if (Globals.PlayerSession.Controller.Button("Enter").Pressed)
+ {
+ TempSprachText.Clear();
+ gewählterSchiffsName = textFeld.getInput();
+
+ //TODO namens einzigartigkeit einabauen
+
+ if (textFeld.Text.ToString().IsEmpty())
+ {
+ TempSprachText.Enqueue("Bau_KeinName");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ //Wenn Eingabe erfolgt, Textfeld nicht leer und Eingabe kein Duplikater Schiffsname ist -> zu Bestätigung Szene
+ bool nameIstDuplikat = false;
+ foreach (Schiff s in Globals.AktuellerSpieler.SCHIFFE)
+ {
+ if (s.NAME == textFeld.Text.ToString())
+ {
+ nameIstDuplikat = true;
+ }
+ }
+
+ if (!nameIstDuplikat)
+ {
+ letzteÜbergebeneListe.Clear();
+ letzteÜbergebeneListe.Add(gewählterSchiffsName);
+
+ //Variable Texte füllen
+ TempQueue = new Queue();
+
+ geldQuellenIndex = 0;
+
+ // Paramter1: Quellort Geld
+ // Parameter2: Geldmenge der Quelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempQueue.Enqueue((f.BUDGET / 100).ToString());
+ TempQueue.Enqueue((f.BUDGET % 100).ToString());
+ }
+ }
+
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempQueue.Enqueue((s.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((s.SCHIFFSBUDGET % 100).ToString());
+ }
+ }
+ }
+
+ //Sprachtexte erzeugen
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ TempSprachText.Enqueue("Bezahlen_ANZAHLUNG1");
+ TempSprachText.Enqueue("Bezahlen_ANZAHLUNG2");
+
+ //Parameter 1 & 2: $ Betrag der Anzahlung
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempSprachParams.Enqueue((SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString());
+ TempSprachParams.Enqueue((SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString());
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ //Texteingabe muss gelöscht werden sonst verbleibt die eingabe auf dem screen
+ Remove(textFeld);
+
+ TextLieferant.wechsleAuswahlText("1.2.3B", TempQueue, false);
+ WechsleBG("Büro");
+ }
+ else
+ {
+ if (TempSprachText.IsEmpty())
+ {
+ TempSprachText.Enqueue("Bau_NameDuplikat");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ }
+ }
+ #endregion
+ break;
+ case "1.2.3B":
+ #region Bauen_Bezahlen (Demo ready)
+ switch (tempAuswahl)
+ {
+ case 0:
+ break;
+ case 1:
+ //Wiederholung des Anzahlungsbetrages
+ //Sprachtexte erzeugen
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ TempSprachText.Enqueue("Bezahlen_ANZAHLUNG1");
+ TempSprachText.Enqueue("Bezahlen_ANZAHLUNG2");
+
+ //Parameter 1 & 2: $ Betrag der Anzahlung
+ SchablonenSchiff = suchenSchablone(aktuellGewählterSchiffstyp);
+ TempSprachParams.Enqueue((SchablonenSchiff.ANZAHLUNGSPREIS / 100).ToString());
+ TempSprachParams.Enqueue((SchablonenSchiff.ANZAHLUNGSPREIS % 100).ToString());
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+ break;
+ case 2:
+ //Anzahlung muss vorab bezahlt werden
+ //WEnn nicht genug geld -> Fehlermeldung
+ Filiale GeldQuelleLager = null;
+ Schiff GeldQuelleSchiff = null;
+ kannBezahlen = true;
+
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (Globals.AktuellerSpieler == f.BESITZER)
+ {
+ GeldQuelleLager = f;
+ }
+ }
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ GeldQuelleSchiff = s;
+ }
+ }
+ }
+
+ if (GeldQuelleLager != null)
+ {
+ //Geldquelle ist Lager -> Geld hier abziehen
+ if (GeldQuelleLager.BUDGET < SchablonenSchiff.ANZAHLUNGSPREIS)
+ {
+ kannBezahlen = false;
+ }
+ }
+ else
+ {
+ //Geldquelle ist Schiff -> geld hier abziehen
+ if (GeldQuelleSchiff.SCHIFFSBUDGET < SchablonenSchiff.ANZAHLUNGSPREIS)
+ {
+ kannBezahlen = false;
+ }
+ }
+
+ if (kannBezahlen)
+ {
+ //Vorraussichtliches Fertigstellungsdatum
+ DateTime TempDatum = Globals.AktuellesDatum.Add(new TimeSpan(SchablonenSchiff.LIEFERZEIT, 0, 0));
+
+ //Erstellen des Schiffs als reales Objekt und anmelden im aktuellen Hafen
+ Schiff TempSchiff = new Schiff(letzteÜbergebeneListe[0], aktuellGewählterSchiffstyp, 0, Globals.AktuellerSpieler);
+ TempSchiff.initiereBau(TempDatum);
+ TempSchiff.fahreInHafenEin(aktuellerHafen.NAME);
+ aktuellerHafen.schiffsAktivität("Einfahren", TempSchiff);
+ Globals.AktuellerSpieler.erhalteSchiff(TempSchiff);
+ //Geld muss beigeldquelle abgezogen werden und mögliche Geldquellen müssen eventuell upgedated werden
+ if (GeldQuelleLager != null)
+ {//Geldquelle ist Filiale
+ GeldQuelleLager.verringereBudget(TempSchiff.ANZAHLUNGSPREIS);
+ }
+ else
+ {//Geldquelle ist Schiff
+ GeldQuelleSchiff.vermindernBudget(TempSchiff.ANZAHLUNGSPREIS);
+ }
+ überprüfeGeldquellen();
+
+ //Hinzufügen des SchiffsAktivierungsEvent
+ //Hinweis: Wenn dieses Event nicht mit dem bool bezahlt = true versehen ist wird es am gegebenen Datum dem Hafen übergeben
+ Globals.EventListe.Add(new WeltEvent(TempDatum, "SCHIFFBAU-FERTIGSTELLUNG", Globals.AktuellerSpieler, null, TempSchiff, aktuellerHafen, 0, null, null));
+ Globals.EventListe.Sort(new EventSorter());
+
+ //Sprachtext erzeugen
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ //1. Text Param Anzahl Bau 2.Param Zeitfaktor(Monate/Tage)
+ TempSprachParams.Enqueue((TempSchiff.LIEFERZEIT / 30).ToString());
+ TempSprachParams.Enqueue("MONATE");
+ TempSprachText.Enqueue("Bezahlen_Abschluss1");
+ TempSprachText.Enqueue("Bezahlen_Abschluss2");
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ //Wechsel zu root Menü
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ WechsleBG("Büro");
+ }
+ else
+ {
+ //Wenn nicht genug geld dann kurze Warnmeldung
+ TempSprachText.Enqueue("Bezahlen_KEINGELD");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+ break;
+ case 3:
+ //Wechsle die Geldquelle
+ geldQuellenIndex++;
+ if (geldQuellenIndex >= möglicheGeldQuellen.Count())
+ {
+ geldQuellenIndex = 0;
+ }
+ // Paramter1: Quellort Geld
+ // Parameter2: Geldmenge der Quelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempQueue.Enqueue((f.BUDGET / 100).ToString());
+ TempQueue.Enqueue((f.BUDGET % 100).ToString());
+ }
+ }
+
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempQueue.Enqueue((s.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((s.SCHIFFSBUDGET % 100).ToString());
+ }
+ }
+ }
+ TextLieferant.wechsleAuswahlText("1.2.3B", TempQueue, false);
+ break;
+ case 4:
+ // Abbruch
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ WechsleBG("Büro");
+ break;
+ }
+ #endregion
+ break;
+ case "1.4":
+ #region Gebraucht kaufen Logik
+ //TODO: Multi-Kauf des gleichen Schiffs ist möglich
+ // Kaufen eines gebrauchten Schiffes - Typauswahl
+ switch (tempAuswahl)
+ {
+ case 0:
+ //Noch keine Auswahl getroffen
+ break;
+ case 1:
+ // Nächstes Model zeigen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+
+ SchiffsIndex++;
+
+ if (SchiffsIndex >= gebrauchteSchiffe.Count())
+ SchiffsIndex = gebrauchteSchiffe.Count() - 1;
+
+ aktuellGewählterSchiffstyp = gebrauchteSchiffe[SchiffsIndex].SCHIFFSTYP;
+
+ GebrauchtWert = gebrauchteSchiffe[SchiffsIndex].NEUWERT;
+ //Verlaufswert muss berechnet werden
+ //-> Normalerweise wird prozentual zur Abnutzung die Differenz aus Neuwert-(Grad der Abnutzung in %) gerechnet
+ //-> Da Reparatur noch nich einbaut ist wird Altersabhängig bestimmt ((1/2)* Alter in jahren)
+ for (int Alter = 0; Alter < gebrauchteSchiffe[SchiffsIndex].ALTER; Alter++)
+ {//halbiere den NeuWert pro jahr
+ GebrauchtWert /= 2;
+ }
+ switch (aktuellGewählterSchiffstyp)
+ {
+ #region SchiffsParams
+ //Erzeugen der jeweiligen Anzeigen Texte je nach Schiffstyp
+
+ case "SCHONER":
+ WechsleBG("Schiffsauswahl_Schoner");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "BARK":
+ WechsleBG("Schiffsauswahl_Bark");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "HOLZDAMPFSCHIFF":
+ WechsleBG("Schiffsauswahl_Holzdampfschiff");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(4), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "EISENDAMPFSCHIFF":
+ WechsleBG("Schiffsauswahl_Eisendampfschiff");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(5), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "BRIGG":
+ WechsleBG("Schiffsauswahl_Brigg");
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 280;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 300;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 320;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "FREGATTE":
+ WechsleBG("Schiffsauswahl_Fregatte");
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 220;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 240;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "KLIPPER":
+ WechsleBG("Schiffsauswahl_Klipper");
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 340;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 190;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ #endregion
+ }
+
+ TextLieferant.erzeugeAnzeigeTexte(anzeigeTextListe);
+
+ break;
+ case 2:
+ // Letztes Model zeigen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ SchiffsIndex--;
+
+ if (SchiffsIndex < 0)
+ SchiffsIndex = 0;
+
+ aktuellGewählterSchiffstyp = gebrauchteSchiffe[SchiffsIndex].SCHIFFSTYP;
+
+ GebrauchtWert = gebrauchteSchiffe[SchiffsIndex].NEUWERT;
+ //Verlaufswert muss berechnet werden
+ //-> Normalerweise wird prozentual zur Abnutzung die Differenz aus Neuwert-(Grad der Abnutzung in %) gerechnet
+ //-> Da Reparatur noch nich einbaut ist wird Altersabhängig bestimmt ((1/2)* Alter in jahren)
+ for (int Alter = 0; Alter < gebrauchteSchiffe[SchiffsIndex].ALTER; Alter++)
+ {//halbiere den NeuWert pro jahr
+ GebrauchtWert /= 2;
+ }
+ switch (aktuellGewählterSchiffstyp)
+ {
+ #region SchiffsParams
+ //Erzeugen der jeweiligen Anzeigen Texte je nach Schiffstyp
+
+ case "SCHONER":
+ WechsleBG("Schiffsauswahl_Schoner");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "BARK":
+ WechsleBG("Schiffsauswahl_Bark");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "HOLZDAMPFSCHIFF":
+ WechsleBG("Schiffsauswahl_Holzdampfschiff");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(4), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 160;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 180;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "EISENDAMPFSCHIFF":
+ WechsleBG("Schiffsauswahl_Eisendampfschiff");
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 80;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp.Substring(5), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "BRIGG":
+ WechsleBG("Schiffsauswahl_Brigg");
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 40;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 280;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 300;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 320;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "FREGATTE":
+ WechsleBG("Schiffsauswahl_Fregatte");
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 60;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 80;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 100;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 350;
+ TempText.Y = 120;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 140;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 200;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 220;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 240;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ case "KLIPPER":
+ WechsleBG("Schiffsauswahl_Klipper");
+ TempText = new Text("KABINEN FÜR " + gebrauchteSchiffe[SchiffsIndex].KABINEN + " PASSAGIERE.", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 300;
+ TempText.Y = 30;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("BESATZUNG: " + gebrauchteSchiffe[SchiffsIndex].MANNSCHAFT_MAXGRÖßE + " MANN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 50;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LADERAUM: " + gebrauchteSchiffe[SchiffsIndex].LADERAUM + " TONNEN", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 70;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("LIEFERZEIT: " + StandardLieferZeit.TotalDays + " TAGE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 320;
+ TempText.Y = 90;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("RUMPF: " + gebrauchteSchiffe[SchiffsIndex].BAUMATERIAL, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 340;
+ TempText.Y = 110;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("PREIS: $" + (GebrauchtWert / 100).ToString() + "," + (GebrauchtWert % 100).ToString(), Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 130;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("ALTER: " + gebrauchteSchiffe[SchiffsIndex].ALTER.ToString() + " JAHRE", Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 360;
+ TempText.Y = 150;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("TYPE: " + aktuellGewählterSchiffstyp, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 170;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ TempText = new Text("NAME: " + gebrauchteSchiffe[SchiffsIndex].NAME, Assets.FONT_AMIGA4EVER2, 12);
+ TempText.X = 380;
+ TempText.Y = 190;
+ TempText.Color = Globals.AnzeigeBraun;
+ anzeigeTextListe.Add(TempText);
+ break;
+ #endregion
+ }
+
+ TextLieferant.erzeugeAnzeigeTexte(anzeigeTextListe);
+ break;
+ case 3:
+ // Nächste Geldquelle
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ //Wechsle die Geldquelle
+ geldQuellenIndex++;
+ TempQueue.Clear();
+
+ if (geldQuellenIndex >= möglicheGeldQuellen.Count())
+ {
+ geldQuellenIndex = 0;
+ }
+ // Paramter1: Quellort Geld
+ // Parameter2: Geldmenge der Quelle
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ TempQueue.Enqueue("IM LAGER VERFÜGE ICH");
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (f.BESITZER == Globals.AktuellerSpieler)
+ {
+ TempQueue.Enqueue((f.BUDGET / 100).ToString());
+ TempQueue.Enqueue((f.BUDGET % 100).ToString());
+ }
+ }
+
+ }
+ else
+ {
+ TempQueue.Enqueue("DIE " + möglicheGeldQuellen[geldQuellenIndex] + " VERFÜGT");
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.COMMANDEUR == Globals.AktuellerSpieler && s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ TempQueue.Enqueue((s.SCHIFFSBUDGET / 100).ToString());
+ TempQueue.Enqueue((s.SCHIFFSBUDGET % 100).ToString());
+ }
+ }
+ }
+ TextLieferant.wechsleAuswahlText("1.4", TempQueue, false);
+ break;
+ case 4:
+ // Bestätigung - Schiff kaufen
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+
+ Filiale GeldQuelleLager = null;
+ Schiff GeldQuelleSchiff = null;
+ kannBezahlen = true;
+
+ if (möglicheGeldQuellen[geldQuellenIndex] == "LAGER")
+ {
+ foreach (Filiale f in aktuellerHafen.vorhandeneFilialen)
+ {
+ if (Globals.AktuellerSpieler == f.BESITZER)
+ {
+ GeldQuelleLager = f;
+ }
+ }
+ }
+ else
+ {
+ foreach (Schiff s in aktuellerHafen.angedockteSchiffe)
+ {
+ if (s.NAME == möglicheGeldQuellen[geldQuellenIndex])
+ {
+ GeldQuelleSchiff = s;
+ }
+ }
+ }
+
+ if (GeldQuelleLager != null)
+ {
+ //Geldquelle ist Lager -> Geld hier abziehen
+ if (GeldQuelleLager.BUDGET < GebrauchtWert)
+ {
+ kannBezahlen = false;
+ }
+ else
+ {
+ //Geld muss bei Geldquelle abgezogen werden
+ GeldQuelleLager.verringereBudget(GebrauchtWert);
+ überprüfeGeldquellen();
+ }
+ }
+ else
+ {
+ //Geldquelle ist Schiff -> geld hier abziehen
+ if (GeldQuelleSchiff.SCHIFFSBUDGET < GebrauchtWert)
+ {
+ kannBezahlen = false;
+ }
+ else
+ {
+ //Geld muss bei Geldquelle abgezogen werden
+ GeldQuelleSchiff.vermindernBudget(GebrauchtWert);
+ überprüfeGeldquellen();
+ }
+ }
+
+ if (kannBezahlen)
+ {
+ //Vorraussichtliches Fertigstellungsdatum
+ //Bereitstellungsevent ist immer direkt am nächsten tag (Wenn Schiff noch gebaut wird wird dessen Datum übernommen ansonsten standard 4 Tage)
+ DateTime TempDatum = Globals.AktuellesDatum.Add(new TimeSpan(1, 0, 0, 0));
+
+ //Erstellen des Schiffs als reales Objekt und anmelden im aktuellen Hafen
+ Schiff TempSchiff = gebrauchteSchiffe[SchiffsIndex];
+
+ //Hinzufügen des SchiffsAktivierungsEvent
+ //Hinweis: Wenn dieses Event nicht mit dem bool bezahlt = true versehen ist wird es am gegebenen Datum dem Hafen übergeben
+ TempSchiff.initiereBereitstellung(Globals.AktuellesDatum + StandardLieferZeit);
+ TempSchiff.COMMANDEUR = Globals.AktuellerSpieler;
+ gebrauchteSchiffe.Remove(TempSchiff);
+
+ Globals.EventAktion(new WeltEvent(TempDatum, "SCHIFFBAU-BEREITSTELLUNG", null, null, TempSchiff, aktuellerHafen, 0, null, null), "EINFÜGEN");
+ Globals.EventAktion(new WeltEvent(TempDatum.AddDays(3), "SCHIFFBAU-FERTIGSTELLUNG", null, null, TempSchiff, aktuellerHafen, 0, null, null), "EINFÜGEN");
+ Globals.EventListe.Sort(new EventSorter());
+
+ //Kaufender Spieler erhält schiff
+ Globals.AktuellerSpieler.erhalteSchiff(TempSchiff);
+
+ //Sprachtext erzeugen
+ TempSprachText.Clear();
+ TempSprachParams.Clear();
+
+ //1. Text Param Anzahl Bau 2.Param Zeitfaktor(Monate/Tage)
+ TempSprachParams.Enqueue(StandardLieferZeit.TotalDays.ToString());
+ TempSprachParams.Enqueue("TAGE");
+ TempSprachText.Enqueue("Bezahlen_Abschluss1");
+ TempSprachText.Enqueue("Bezahlen_Abschluss2");
+ TextLieferant.erzeugeSprachText(TempSprachText, TempSprachParams, Globals.Remake.HalfWidth, 100);
+
+ //Anzeigetext muss gelöscht werden
+ TextLieferant.erzeugeAnzeigeTexte(new List());
+
+ //Wechsel zu root Menü
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ WechsleBG("Büro");
+ }
+ else
+ {
+ //Wenn nicht genug geld dann kurze Warnmeldung
+ TempSprachText.Enqueue("Bezahlen_KEINGELD");
+ TextLieferant.erzeugeSprachText(TempSprachText, new Queue(), Globals.Remake.HalfWidth, 100);
+ }
+
+
+ break;
+ case 5:
+ // Abbruch
+ Console.WriteLine("Auswahl " + tempAuswahl + " der Ebene " + TextLieferant.aktuelleEbene);
+ TextLieferant.wechsleAuswahlText("1", new Queue(), false);
+ WechsleBG("Büro");
+
+ //Anzeigetext muss gelöscht werden
+ TextLieferant.erzeugeAnzeigeTexte(new List