Example #1
0
        /// <summary>
        /// Judges "_that".<br/>
        /// Gets the "opinion" of character "this" towards character "_that".
        /// </summary>
        /// <param name="_that"></param>
        /// <returns></returns>
        public int Judgement(CCharacter _that, CCharacterTraitDictionary _dictionary)
        {
            List <CCharacterTrait> likeList = new List <CCharacterTrait>();
            List <CCharacterTrait> hateList = new List <CCharacterTrait>();

            foreach (CCharacterTrait trait in this.traits_)
            {
                likeList.AddRange(trait.Likes(_dictionary));
                hateList.AddRange(trait.Hates(_dictionary));
            }

            int evaluation = 0;

            foreach (CCharacterTrait trait in _that.traits_)
            {
                if (likeList.Contains(trait))
                {
                    evaluation++;
                }
                if (hateList.Contains(trait))
                {
                    evaluation--;
                }
            }
            return(evaluation);
        }
Example #2
0
 public CGame()
 {
     this.map_             = new CMap();
     this.factions_        = new List <CFaction>();
     this.cities_          = new List <CCity>();
     this.characters_      = new List <CCharacter>();
     this.traitDictionary_ = new CCharacterTraitDictionary();
 }
Example #3
0
        /// <summary>
        /// Generates a character randomly.
        /// </summary>
        /// <param name="_dictionary"></param>
        public void RandomGeneration(CCharacterTraitDictionary _dictionary)
        {
            this.leaderShip_  = rand.Next(1, 21);
            this.combatSkill_ = rand.Next(1, 21);
            this.stratagem_   = rand.Next(1, 21);
            this.politics_    = rand.Next(1, 21);

            int origin = rand.Next(18);
            int gender = rand.Next(18, 30);
            int normal = _dictionary[gender] is CCharacterTraitMale?rand.Next(30, 36) : rand.Next(30, 35);

            this.traits_.Add(_dictionary[origin]);
            this.traits_.Add(_dictionary[gender]);
            this.traits_.Add(_dictionary[normal]);
        }
Example #4
0
        /// <summary>
        /// Evaluates "_that"<br/>
        /// Gets the evaluation of attributes of character "_that", based on the judgement value.
        /// </summary>
        /// <param name="_that"></param>
        /// <returns></returns>
        public List <int> Evaluate(CCharacter _that, CCharacterTraitDictionary _dictionary)
        {
            List <int> evals = new List <int>();

            evals.Add(_that.leaderShip_);
            evals.Add(_that.combatSkill_);
            evals.Add(_that.stratagem_);
            evals.Add(_that.politics_);

            int   judgement = this.Judgement(_that, _dictionary);
            int   sign      = Math.Sign(judgement);
            float error     = (20 - this.stratagem_) / 50.0f;

            for (int i = 0; i < evals.Count; i++)
            {
                evals[i] += (int)(evals[i] * error + sign * judgement) * sign;
                if (evals[i] < 1)
                {
                    evals[i] = 1;
                }
            }

            return(evals);
        }