Beispiel #1
0
        /// <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();
        }
Beispiel #2
0
        /// <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;
        }
Beispiel #3
0
        /// <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 );
        }