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.
185 lines
5.9 KiB
C#
185 lines
5.9 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 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<Schiff> SCHIFFE = new List<Schiff>();
|
|
|
|
public List<Filiale> FILIALEN = new List<Filiale>();
|
|
|
|
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;
|
|
}
|
|
}
|
|
}
|