Пример #1
0
    /// <summary>
    /// 填充基础建筑信息
    /// </summary>
    private static void CalcStageBuildInfo(s_stagebuildInfo I, ref BuildInfo Info)
    {
        if (I == null || Info == null)
        {
            return;
        }
        //获取技能
        Info.m_Skill = GetSkill(Info.BuildType, Info.Quality);
        s_buildstarInfo    StarInfo    = GetBuildStar(Info.BuildType, Info.StarLevel);
        s_buildqualityInfo QualityInfo = GetBuildQuality(Info.BuildType, Info.Quality);

        int             originalStar = buildingM.GetMinBuildStar(Info.BuildType);
        s_buildstarInfo oriInfo      = buildingM.GetBuildStar(Info.BuildType, originalStar);

        //建筑物三围
        //Info.m_Solidity = CalcSolidity(I, StarInfo, oriInfo, QualityInfo, Info.Level);
        //Info.m_Intensity = CalcIntensity(I, StarInfo, oriInfo, QualityInfo, Info.Level);
        //Info.m_Tenacity = CalcTenacity(I, StarInfo, oriInfo, QualityInfo, Info.Level);
        Info.m_hp           = I.hp;
        Info.m_phyattack    = I.phy_attack;
        Info.m_magicattack  = I.magic_attack;
        Info.m_phydefend    = I.physicaldefend;
        Info.m_magicdefend  = I.magicdefend;
        Info.m_DefensePower = CalcDefendPower(Info.Quality, Info.StarLevel, Info.Level);
        Info.m_bear         = I.bear;
    }
Пример #2
0
    /// <summary>
    /// 填充基础建筑信息
    /// </summary>
    private static void CalcBuildInfo(s_building_typeInfo I, ref BuildInfo Info)
    {
        if (I == null || Info == null)
        {
            return;
        }
        //获取技能
        Info.m_Skill = GetSkill(Info.BuildType, Info.Quality);
        s_buildstarInfo    StarInfo    = GetBuildStar(Info.BuildType, Info.StarLevel);
        s_buildqualityInfo QualityInfo = GetBuildQuality(Info.BuildType, Info.Quality);

        int             originalStar = buildingM.GetMinBuildStar(Info.BuildType);
        s_buildstarInfo oriInfo      = buildingM.GetBuildStar(Info.BuildType, originalStar);

        //建筑物三围
        Info.m_Solidity     = CalcSolidity(I, StarInfo, oriInfo, QualityInfo, Info.Level);
        Info.m_Intensity    = CalcIntensity(I, StarInfo, oriInfo, QualityInfo, Info.Level);
        Info.m_Tenacity     = CalcTenacity(I, StarInfo, oriInfo, QualityInfo, Info.Level);
        Info.m_hp           = CalcHp(I, QualityInfo, Info.m_Solidity);
        Info.m_phyattack    = CalcPhyAttack(I, QualityInfo, Info.m_Intensity);
        Info.m_magicattack  = CalcMagAttack(I, QualityInfo, Info.m_Intensity);
        Info.m_phydefend    = CalcPhyDefend(I, QualityInfo, Info.m_Tenacity);
        Info.m_magicdefend  = CalcMagDefend(I, QualityInfo, Info.m_Tenacity);
        Info.m_DefensePower = CalcDefendPower(Info.Quality, Info.StarLevel, Info.Level);
        Info.m_bear         = CalcBear(I, StarInfo, QualityInfo);
    }
Пример #3
0
    /// <summary>
    /// 获取升级需要的等级.
    /// </summary>
    public static int GetUpQualityLevelNeed(BuildInfo info)
    {
        s_buildqualityInfo qualityInfo = GetBuildQuality(info.BuildType, info.Quality);

        if (qualityInfo != null)
        {
            return(qualityInfo.levellimit);
        }
        return(0);
    }
Пример #4
0
    /// <summary>
    /// 计算魔法防御
    /// </summary>
    private static int CalcMagDefend(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Tenacity)
    {
        if (TypeInfo == null)
        {
            return(0);
        }
        float k5    = ConfigM.GetBuildUpParam(5);
        float add   = (Tenacity - TypeInfo.tenacity * 0.01f) * k5;
        int   value = TypeInfo.magicdefend + (int)add;

        if (QualityInfo != null)
        {
            value += QualityInfo.addmagicdefend;
        }
        return(value);
    }
Пример #5
0
    /// <summary>
    /// 计算物理防御
    /// </summary>
    private static int CalcPhyDefend(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Tenacity)
    {
        if (TypeInfo == null)
        {
            return(0);
        }
        float k4    = ConfigM.GetBuildUpParam(4);
        float add   = (Tenacity - TypeInfo.tenacity * 0.01f) * k4;
        int   value = TypeInfo.physicaldefend + (int)add;

        if (QualityInfo != null)
        {
            value += QualityInfo.addphydefend;
        }
        return(value);
    }
Пример #6
0
    /// <summary>
    /// 计算魔法攻击
    /// </summary>
    private static int CalcMagAttack(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Intensity)
    {
        if (TypeInfo == null)
        {
            return(0);
        }
        float k3    = ConfigM.GetBuildUpParam(3);
        float add   = (Intensity - TypeInfo.intensity * 0.01f) * k3;
        int   value = TypeInfo.magic_attack + (int)add;

        if (QualityInfo != null)
        {
            value += QualityInfo.addmagicattack;
        }
        return(value);
    }
Пример #7
0
    /// <summary>
    /// 计算物理攻击
    /// </summary>
    private static int CalcPhyAttack(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Intensity)
    {
        if (TypeInfo == null)
        {
            return(0);
        }
        float k2    = ConfigM.GetBuildUpParam(2);
        float add   = (Intensity - TypeInfo.intensity * 0.01f) * k2;
        int   value = TypeInfo.phy_attack + (int)add;

        if (QualityInfo != null)
        {
            value += QualityInfo.addphyattack;
        }
        return(value);
    }
Пример #8
0
    /// <summary>
    /// 计算血量上限
    /// </summary>
    private static int CalcHp(s_building_typeInfo TypeInfo, s_buildqualityInfo QualityInfo, float Solidity)
    {
        if (TypeInfo == null)
        {
            return(0);
        }
        float k1    = ConfigM.GetBuildUpParam(1);
        float add   = (Solidity - TypeInfo.solidity * 0.01f) * k1;
        int   value = TypeInfo.hp + (int)add;

        if (QualityInfo != null)
        {
            value += QualityInfo.addhp;
        }
        return(value);
    }
Пример #9
0
    /// <summary>
    /// 获取升级需要的材料及等级
    /// </summary>
    /// <param name="BuildType">类型</param>
    /// <param name="Quality">品阶</param>
    /// <param name="NeedMaterial">需要材料,key item id,value 数量</param>
    public static void GetUpQualityNeed(int BuildType, int Quality, ref Dictionary <int, int> NeedMaterial, ref int NeedLevel)
    {
        NeedLevel = 1;
        if (NeedMaterial == null)
        {
            NeedMaterial = new Dictionary <int, int>();
        }
        NeedMaterial.Clear();

        s_buildqualityInfo Info = GetBuildQuality(BuildType, Quality);

        if (Info != null)
        {
            NeedLevel = Info.levellimit;
            if (Info.num1 != 0 && Info.material1id > 0)
            {
                NeedMaterial.Add(Info.material1id, Info.num1);
            }
            if (Info.num2 > 0 && Info.material2id > 0)
            {
                NeedMaterial.Add(Info.material2id, Info.num2);
            }
            if (Info.num3 > 0 && Info.material3id > 0)
            {
                NeedMaterial.Add(Info.material3id, Info.num3);
            }
            if (Info.num4 > 0 && Info.material4id > 0)
            {
                NeedMaterial.Add(Info.material4id, Info.num4);
            }
            if (Info.num5 > 0 && Info.material5id > 0)
            {
                NeedMaterial.Add(Info.material5id, Info.num5);
            }
            if (Info.num6 > 0 && Info.material6id > 0)
            {
                NeedMaterial.Add(Info.material6id, Info.num6);
            }
        }
    }
Пример #10
0
    /// <summary>
    /// 计算韧性
    /// </summary>
    private static float CalcTenacity(s_building_typeInfo TypeInfo, s_buildstarInfo StarInfo, s_buildstarInfo original, s_buildqualityInfo QualityInfo, int level)
    {
        if (TypeInfo == null)
        {
            return(0);
        }
        float value = TypeInfo.tenacity * 0.01f;

        if (StarInfo != null)
        {
            value += StarInfo.tenacitygrow * (level - 1) * 0.01f;
        }

        if (original != null)
        {
            value += (StarInfo.tenacitygrow - original.tenacitygrow) * 0.01f;
        }

        if (QualityInfo != null)
        {
            value += QualityInfo.addtenacity * 0.01f;
        }
        return(value);
    }
Пример #11
0
    /// <summary>
    /// 计算承受力
    /// </summary>
    private static int CalcBear(s_building_typeInfo TypeInfo, s_buildstarInfo StarInfo, s_buildqualityInfo QualityInfo)
    {
        if (TypeInfo == null)
        {
            return(0);
        }

        int value = TypeInfo.bear;

        if (StarInfo != null)
        {
            value += StarInfo.bear;
        }

        if (QualityInfo != null)
        {
            value += QualityInfo.bear;
        }
        return(value);
    }