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.

130 lines
5.1 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 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<int> ZahlenParams { get; set; }
public List<string> 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<int> ZahlenParameter = null, List<string> 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);
}
}
}