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); } } }