/// <summary>
        /// Erstellt eine Regel aus der Konfiguration.
        /// </summary>
        /// <param name="regel">Eine beliebige Regel.</param>
        /// <param name="element">Das zugehörige Element.</param>
        /// <returns>Gesetzt, wenn die Regel ausgewertet werden konnte.</returns>
        private static bool RegelAnwenden( Energieregel regel, GrundElement element )
        {
            // Prüfen
            if (regel == null)
                return false;

            // Lebensenergie auslesen und Regel erzeugen
            var lebensenergie = regel.Lebensenergie;
            if (lebensenergie != 0)
                element.RegelAnmelden( regel.ArtDerKollision, KollisionsRegel.LebenskraftDesSpielersÄndern( lebensenergie ) );

            // Fertig
            return true;
        }
예제 #2
0
        /// <summary>
        /// Rekonstruiert ein Element aus einer älteren Konfiguration.
        /// </summary>
        /// <param name="alteDarstellung">Die ursprüngliche Konfiguration.</param>
        protected Element( V1.Element alteDarstellung )
        {
            // Abschliessen
            Kollisionsregeln = new List<Kollisionsregel>();

            // Alles kopieren
            Breite = alteDarstellung.Width;
            Hoehe = alteDarstellung.Height;
            Melodie = alteDarstellung.Melodie;
            VertikalePosition = alteDarstellung.Bottom;
            HorizontalePosition = alteDarstellung.Left;

            // Lebensenergie auswerten
            var lebensenergie = alteDarstellung.Lebensenergie;
            if (lebensenergie != 0)
            {
                // Regel anlegen
                var energieRegel = new Energieregel { Lebensenergie = lebensenergie };

                // Konfiguration der Regel abschliessen
                if (lebensenergie > 0)
                    energieRegel.ArtDerKollision = KollisionsArten.VomSpielerGetroffen;
                else if (alteDarstellung.ElementArt == V1.ElementArt.Beweglich)
                    energieRegel.ArtDerKollision = KollisionsArten.VomSpielerSeitlichGetroffen;
                else
                    energieRegel.ArtDerKollision = KollisionsArten.VomSpielerGetroffen;

                // Regel eintragen
                Kollisionsregeln.Add( energieRegel );
            }

            // Ausgang anmelden
            if (alteDarstellung.ElementArt == V1.ElementArt.Ausgang)
                Kollisionsregeln.Add( new Enderegel { Gewonnen = true, ArtDerKollision = KollisionsArten.VomSpielerGetroffen } );

            // Element ausblenden - das muss immer die letzte Regel sein
            if (alteDarstellung.ElementArt == V1.ElementArt.Beweglich)
                Kollisionsregeln.Add( new Verschwinderegel { ArtDerKollision = KollisionsArten.VomSpielerGetroffen } );
        }