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.
175 lines
5.4 KiB
C#
175 lines
5.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Otter;
|
|
using _1869_Remake;
|
|
using _1869_Remake.Entities;
|
|
|
|
namespace _1869_Remake.Entities
|
|
{
|
|
public class Filiale : Entity
|
|
{
|
|
|
|
public Hafen HEIMATHAFEN;
|
|
public int BUDGET { get; private set; }
|
|
int KOSTEN;
|
|
public Spieler BESITZER;
|
|
public List<Ware> LAGER = new List<Ware>();
|
|
|
|
|
|
//Standardkonstruktor
|
|
public Filiale()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
//Parameterkonstruktor
|
|
public Filiale(Hafen Heimat, Spieler Gründer, int laufendeKosten)
|
|
{
|
|
this.HEIMATHAFEN = Heimat;
|
|
this.BESITZER = Gründer;
|
|
this.KOSTEN = laufendeKosten;
|
|
// Immer Startkapital von 0 ausgehen
|
|
this.BUDGET = 0;
|
|
}
|
|
|
|
//Kopierkonstruktor
|
|
public Filiale(Filiale KopierFiliale)
|
|
{
|
|
this.HEIMATHAFEN = KopierFiliale.HEIMATHAFEN;
|
|
this.BESITZER = KopierFiliale.BESITZER;
|
|
this.BUDGET = KopierFiliale.BUDGET;
|
|
this.KOSTEN = KopierFiliale.KOSTEN;
|
|
|
|
this.LAGER = KopierFiliale.LAGER;
|
|
|
|
}
|
|
|
|
//allgemeine Geld methoden
|
|
public void erhöheBudget(int geldbetrag)
|
|
{
|
|
BUDGET += geldbetrag;
|
|
}
|
|
|
|
public void verringereBudget(int geldbetrag)
|
|
{
|
|
BUDGET -= geldbetrag;
|
|
}
|
|
|
|
//Warenverwaltungsmethoden
|
|
public void einlagernWare(Ware ware)
|
|
{
|
|
// Einlagerung von Waren benötigt immer die effektiv erzeugte Ware
|
|
Ware TempWare = new Ware(ware);
|
|
|
|
//Wenn Warentyp bereits vorhanden wird die Menge dieser ware hinzugefügt
|
|
if (ware.istVerderblich())
|
|
{
|
|
// Sonderlogik bei verderblicher Ware
|
|
// To Do: Implementieren / durchdenken!!
|
|
}
|
|
else
|
|
{
|
|
bool WareGefunden = false;
|
|
foreach (Ware item in LAGER)
|
|
{
|
|
if (ware.BEZEICHNUNG == item.BEZEICHNUNG)
|
|
{
|
|
//Ware mit diesem Namen gefunden -> Menge erhöhen
|
|
WareGefunden = true;
|
|
item.MENGE += ware.MENGE;
|
|
//Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
|
|
break;
|
|
}
|
|
}
|
|
if (!WareGefunden)
|
|
{
|
|
// Wenn es diese Ware noch nicht im Lager gab wird sie neu Eingelagert
|
|
LAGER.Add(TempWare);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
public void AuslagernnWare(string WarenName, int Menge)
|
|
{
|
|
bool verderblich = false;
|
|
|
|
// Vorabcheck ob Ware existiert und ob diese verderblich ist
|
|
foreach (Ware item in LAGER)
|
|
{
|
|
if (item.BEZEICHNUNG == WarenName)
|
|
{
|
|
verderblich = item.istVerderblich();
|
|
//Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (verderblich)
|
|
{
|
|
// Sonderlogik bei verderblicher Ware
|
|
// To Do: Implementieren / durchdenken!!
|
|
}
|
|
else
|
|
{
|
|
foreach (Ware item in LAGER)
|
|
{
|
|
if (item.BEZEICHNUNG == WarenName)
|
|
{
|
|
// Angefragte Menge Reduzieren
|
|
// Wenn nicht mehr genug ware vorhanden ist wird null ausgegeben
|
|
if (item.MENGE - Menge < 0)
|
|
{
|
|
// Wenn auszulagernder Menge unter 0 ist ist ein fehler Passiert ergo nichts tun!
|
|
}
|
|
else
|
|
{
|
|
item.MENGE -= Menge;
|
|
// Wenn wir mit der Auslagerung das Lager geleert haben wird es aus dem Bestand genommen
|
|
if (item.MENGE == 0)
|
|
LAGER.Remove(item);
|
|
}
|
|
//Wenn Ware gefunden wurde müssen wir nicht mehr weiter durchsuchen
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
public void LaufendeKostenAbziehen()
|
|
{
|
|
bool filialSchließung = false;
|
|
// diese Funktion wird abgerufen wenn die Kosten für den filialbetrieb fällig werden -> Hier kann eine Filial Schließung veranlasst werden
|
|
if (BUDGET >= KOSTEN)
|
|
{
|
|
// Laufendekosten können regulär abgezogen werden
|
|
BUDGET -= KOSTEN;
|
|
|
|
}
|
|
else
|
|
{
|
|
// Laufende Kosten übersteigen
|
|
BUDGET -= KOSTEN;
|
|
// Wegen übersteigender Kosten sind alle Waren verloren und filiale wird geschlossen
|
|
schließeFiliale();
|
|
this.RemoveSelf();
|
|
}
|
|
}
|
|
|
|
public void schließeFiliale()
|
|
{
|
|
|
|
BESITZER.schließtFiliale(this);
|
|
|
|
}
|
|
|
|
}
|
|
}
|