/// <summary>
 /// Constructs a BattleEntityModel based on the character input
 /// </summary>
 /// <param name="data"></param>
 public BattleEntityModel(CharacterModel data)
 {
     EntityType       = EntityTypeEnum.Character;
     Id               = data.Id;
     Alive            = data.Alive;
     ExperiencePoints = data.TotalExperience;
     Level            = data.Level;
     Name             = data.Name;
     Description      = data.Description;
     Speed            = data.GetSpeed();
     ImageURI         = data.ImageURI;
     CurrentHealth    = data.CurrentHealth;
     MaxHealth        = data.MaxHealth;
     Attack           = data.GetAttack();
     Defense          = data.GetDefense();
     Range            = data.GetRange();
     IconURI          = data.IconURI;
 }
        /// <summary>
        /// Create PlayerInfoModel from character
        /// </summary>
        /// <param name="data"></param>
        public PlayerInfoModel(CharacterModel data)
        {
            PlayerType          = data.PlayerType;
            Guid                = data.Guid;
            Alive               = data.Alive;
            ExperiencePoints    = data.ExperienceTotal;
            ExperienceRemaining = data.ExperienceRemaining;
            Level               = data.Level;
            Name                = data.Name;
            Description         = data.Description;
            Speed               = data.GetSpeed();
            ImageURI            = data.ImageURI;
            CurrentHealth       = data.GetCurrentHealthTotal;
            MaxHealth           = data.GetMaxHealthTotal;
            Attack              = data.GetAttack();
            Defense             = data.GetDefense();

            // Set the Base Attributes
            Speed         = data.Speed;
            Defense       = data.Defense;
            Attack        = data.Attack;
            MaxHealth     = data.MaxHealth;
            CurrentHealth = data.CurrentHealth;


            // Set the strings for the items
            Head        = data.Head;
            Feet        = data.Feet;
            Necklass    = data.Necklass;
            RightFinger = data.RightFinger;
            LeftFinger  = data.LeftFinger;
            Feet        = data.Feet;

            // Give the copy a differet quid, so it can be used in the battles as a copy
            Guid = System.Guid.NewGuid().ToString();

            // Set current experience to be 1 above minimum.
            ExperienceTotal = LevelTableHelper.Instance.LevelDetailsList[Level - 1].Experience + 1;
        }
        /// <summary>
        /// Update the BattleEntityModel with new character stats.
        /// For example, if a character levels up or gets new items that increase speed.
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public bool Update(CharacterModel data)
        {
            // should not update a monster entity with a character
            if (EntityType != EntityTypeEnum.Character)
            {
                return(false);
            }

            // reflect updates in character stats
            Alive            = data.Alive;
            ExperiencePoints = data.TotalExperience;
            Level            = data.Level;
            Name             = data.Name;
            Description      = data.Description;
            Speed            = data.GetSpeed();
            ImageURI         = data.ImageURI;
            CurrentHealth    = data.CurrentHealth;
            MaxHealth        = data.MaxHealth;
            Attack           = data.GetAttack();
            Defense          = data.GetDefense();
            Range            = data.GetRange();
            return(true);
        }