public static ImagoEntitaet GetRandomEntitaet()
        {
            var         rand    = new Random();
            var         bereich = SpielerBereich.FromValue <SpielerBereich>(rand.Next(0, 5));
            Enumeration konkret = null;
            int         count   = 0;

            switch (bereich.Value)
            {
            case 0: count = new List <ImagoAttribut>(ImagoAttribut.GetAll <ImagoAttribut>()).Count;
                konkret   = ImagoAttribut.FromValue <ImagoAttribut>(rand.Next(0, count)); break;

            case 1:
                count   = new List <ImagoFertigkeit>(ImagoFertigkeit.GetAll <ImagoFertigkeit>()).Count;
                konkret = ImagoFertigkeit.FromValue <ImagoFertigkeit>(rand.Next(0, count)); break;

            case 2:
                count   = new List <ImagoFertigkeitsKategorie>(ImagoFertigkeitsKategorie.GetAll <ImagoFertigkeitsKategorie>()).Count;
                konkret = ImagoFertigkeitsKategorie.FromValue <ImagoFertigkeitsKategorie>(rand.Next(0, count)); break;

            case 3:
                count   = new List <ImagoKoerperTeil>(ImagoKoerperTeil.GetAll <ImagoKoerperTeil>()).Count;
                konkret = ImagoKoerperTeil.FromValue <ImagoKoerperTeil>(rand.Next(0, count)); break;

            case 4:
                count   = new List <ImagoNichtSteigerbareFertigkeit>(ImagoNichtSteigerbareFertigkeit.GetAll <ImagoNichtSteigerbareFertigkeit>()).Count;
                konkret = ImagoNichtSteigerbareFertigkeit.FromValue <ImagoNichtSteigerbareFertigkeit>(rand.Next(0, count)); break;
            }


            return(new ImagoEntitaet(bereich, konkret));
        }
Esempio n. 2
0
        public void HandleFaktischerWertAttributChanged(object sender, FaktischerWertChangedEventArgs args)
        {
            var collection = (AttributeCollection)sender;

            if (collection == null)
            {
                throw new ArgumentException("Der Sender ist keine AttributCollection oder null");
            }

            if (args == null)
            {
                throw new ArgumentException("Das sendende Attribut konnte nicht erkannt werden: args == null");
            }

            ImagoAttribut attribut = (ImagoAttribut)args.Entitaet.Identifier;

            if (attribut == null)
            {
                throw new ArgumentException("Das sendende Attribut konnte nicht erkannt werden: Casting-Fehler");
            }

#if debug
            Console.WriteLine("Event " + this.GetType().Name + ". Der faktische Wert von " + attribut.Name + " wurde geändert.")
#endif

            var values = Attribute.GetFaktischeWerte();
            foreach (var item in FertigkeitsKategorien)
            {
                var attributReferenzen = new List <ImagoAttribut>(item.AttributReferenzen);

                if (attributReferenzen.Contains(attribut))
                {
                    item.BerechneNatuerlicherWert(values);
                }
            }

            Initiative.BerechneNatuerlicherWert(values);
            SchadensMod.BerechneNatuerlicherWert(values);
            EgoRegeneration.BerechneNatuerlicherWert(values);
            Lastgrenze.BerechneNatuerlicherWert(values);

            if (attribut == ImagoAttribut.Konstitution)
            {
                foreach (var teil in Koerper)
                {
                    teil.BerechneTrefferpunkte(values[ImagoAttribut.Konstitution]);
                }
            }
        }
Esempio n. 3
0
        public void GibErfahrungAnAttribut(ImagoAttribut attribut)
        {
            var attributObject = Attribute.FirstOrDefault(attr => attr.Identifier.Equals(attribut));

            attributObject.Erfahrung++;
        }