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