/// <summary>
    /// 获取指定种族的属性
    /// </summary>
    /// <param name="roleOfRace"></param>
    /// <returns></returns>
    public RoleOfRaceInfoStruct this[RoleOfRace roleOfRace]
    {
        get
        {
            if (roleOfRaceInfoStructArray == null)
            {
                return(null);
            }
            RoleOfRaceInfoStruct roleOfRaceInfoStruct = roleOfRaceInfoStructArray.FirstOrDefault(temp => temp.roleOfRace == roleOfRace);
            return(roleOfRaceInfoStruct);
        }
#if UNITY_EDITOR
        set
        {
            if (roleOfRaceInfoStructArray == null)
            {
                roleOfRaceInfoStructArray = new RoleOfRaceInfoStruct[0];
            }
            List <RoleOfRaceInfoStruct> roleOfRaceInfoStructList = new List <RoleOfRaceInfoStruct>(roleOfRaceInfoStructArray);
            RoleOfRaceInfoStruct        roleOfRaceInfoStruct     = roleOfRaceInfoStructArray.FirstOrDefault(temp => temp.roleOfRace == roleOfRace);
            if (roleOfRaceInfoStruct == null)
            {
                roleOfRaceInfoStructList.Add(value);
            }
            else
            {
                roleOfRaceInfoStructList.Remove(roleOfRaceInfoStruct);
                roleOfRaceInfoStructList.Add(value);
            }
            roleOfRaceInfoStructArray = roleOfRaceInfoStructList.ToArray();
        }
#endif
    }
Example #2
0
    public void Init()
    {
        RoleOfRaceData       roleOfRaceData       = DataCenter.Instance.GetMetaData <RoleOfRaceData>();
        RoleOfRaceInfoStruct roleOfRaceInfoStruct = roleOfRaceData[roleOfRace];

        if (roleOfRaceInfoStruct != null)
        {
            //重置属性
            IAttributeState tempAdditional = new AttributeStateAdditional();// MonsterBaseAttribute.Clone();//赋值出来一份用来计算种族成长
            tempAdditional.SetRoleOfRaceAddition(roleOfRaceInfoStruct);
            tempAdditional.Power         = MonsterBaseAttribute.Power;
            tempAdditional.Mental        = MonsterBaseAttribute.Mental;
            tempAdditional.Quick         = MonsterBaseAttribute.Quick;
            MonsterBaseAttribute         = (AttributeStateAdditional)(MonsterBaseAttribute + tempAdditional);
            MonsterBaseAttribute.Power  /= 2;
            MonsterBaseAttribute.Quick  /= 2;
            MonsterBaseAttribute.Mental /= 2;
            //系数
            PhysicAttackFactor = new PhysicAttackFactor()
            {
                IncreaseRatioInjuryFactor = roleOfRaceInfoStruct.physicAttackToDamageRateRatio,
                MinimumDamageFactor       = roleOfRaceInfoStruct.physicQuickToMinDamageRatio
            };
            PhysicDefenseFactor = new PhysicDefenseFactor()
            {
                CoefficientRatioReducingDamageFactor = roleOfRaceInfoStruct.physicDefenseToHurtRateRatio,
                ImmunityInjury = roleOfRaceInfoStruct.physicQuickToHurtExemptRatio
            };
            MagicAttackFactor = new MagicAttackFactor()
            {
                IncreaseRatioInjuryFactor = roleOfRaceInfoStruct.magicAttackToDamageRateRatio
            };
            MagicDefenseFactor = new MagicDefenseFactor()
            {
                CoefficientRatioReducingDamageFactor = roleOfRaceInfoStruct.magicDefenseToHurtRateRatio
            };
        }
    }
Example #3
0
 /// <summary>
 /// 设置种族成长对象
 /// </summary>
 /// <param name="roleOfRaceInfoStruct">种族成长对象</param>
 public void SetRoleOfRaceAddition(RoleOfRaceInfoStruct roleOfRaceInfoStruct)
 {
     this.roleOfRaceInfoStruct = roleOfRaceInfoStruct;
 }