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#
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!");
|
|
}
|
|
}
|
|
}
|