/// <summary> /// Erstellt eine neue Konfiguration. /// </summary> /// <param name="breite">Die Breite des Sichtfensters.</param> /// <param name="höhe">Die Höhe des Sichtfensters.</param> /// <param name="spielfeld">Das zugehörige Spielfeld.</param> /// <param name="spielfigur">Optional die zu verwendende Spielfigur.</param> /// <param name="umgebungAufsetzen">Wird aufgerufen, um die Spielumgebung aufzusetzen.</param> private Spiel( double breite, double höhe, Spielfeld spielfeld, Element spielfigur, Action<Spiel> umgebungAufsetzen ) { // Initialisierung abschliessen Steuerung = new Steuerung( spielfeld ); // Merken m_umgebungAufsetzen = umgebungAufsetzen; // Spielfeld und -figur als erstes übernehmen Spielfigur = spielfigur; m_Spielfeld = spielfeld; // Änderungen überwachen m_Spielfeld.Hintergrund.PropertyChanged += HintergrundBildWurdeVerändert; m_Spielfeld.PropertyChanged += SpielfeldWurdeVerändert; Spielfigur.PropertyChanged += SpielfigurZentrieren; // Übernehmen Breite = breite; Hoehe = höhe; // Schauen wir mal, ob wie schon loslegen können AufSpielumgebungPrüfen(); }
/// <summary> /// Erstellt eine neue Steuerung. /// </summary> internal Steuerung( Spielfeld spielfeld ) { // Merken m_spielfeld = spielfeld; // Befehle anlegen m_starten = new Steuerbefehl( StartenOderFortsetzen, () => SimulationIstVerfügbar && (m_simulation.Status == Ablauf.SimulationsStand.Angehalten) ); m_anhalten = new Steuerbefehl( AnhaltenOderBeenden, () => SimulationIstVerfügbar && (m_simulation.Status == Ablauf.SimulationsStand.Läuft) ); m_nachRechts = new Steuerbefehl( () => m_spieler.SchnellerNachRechtsOderLangsamerNachLinks(), SpielLäuftUndSpielfigurKannBewegtWerden ); m_nachLinks = new Steuerbefehl( () => m_spieler.SchnellerNachLinksOderLangsamerNachRechts(), SpielLäuftUndSpielfigurKannBewegtWerden ); m_stillstehen = new Steuerbefehl( () => m_spieler.Anhalten(), SpielLäuftUndSpielfigurKannBewegtWerden ); m_springen = new Steuerbefehl( () => m_spieler.Springen(), SpielLäuftUndSpielfigurKannBewegtWerden ); // Verbindungen mit untergeordneten Modellen herstellen m_spielfeld.Ergebnisse.SichtbarkeitAuslesen = BerechneSichtbarkeitDesErgebnisses; }
/// <summary> /// Erstellt eine neue Konfiguration. /// </summary> /// <param name="breite">Die Breite des Sichtfensters.</param> /// <param name="höhe">Die Höhe des Sichtfensters.</param> /// <param name="spielfeld">Das zugehörige Spielfeld.</param> /// <param name="spielfigur">Optional die zu verwendende Spielfigur.</param> /// <param name="umgebungAufsetzen">Wird aufgerufen, um die Spielumgebung aufzusetzen.</param> internal static Spiel Erzeugen( double breite, double höhe, Spielfeld spielfeld, Element spielfigur, Action<Spiel> umgebungAufsetzen ) { // Prüfen if (breite <= 0) throw new ArgumentOutOfRangeException( "breite" ); if (höhe <= 0) throw new ArgumentOutOfRangeException( "höhe" ); if (spielfeld == null) throw new ArgumentNullException( "spielfeld" ); if (umgebungAufsetzen == null) throw new ArgumentNullException( "umgebungAufsetzen" ); // Durchreichen return new Spiel( breite, höhe, spielfeld, spielfigur, umgebungAufsetzen ); }