You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

707 lines
33 KiB
C#

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<int> TempIntParamListe = new List<int>();
List<string> TempStringParamListe = new List<string>();
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<WeltEvent>
{
//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<string>();
}
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!");
}
}
}