示例#1
0
    /// <summary> 시민에게 획득하는 세금량 계산 </summary>
    double CalculateCitizenTax(HeroData hero, TerritorySkillData skill)
    {
        double result = 0;

        if (string.IsNullOrEmpty(skill.fillterCategory) == false)
        {
            string key = skill.fillterCategory;
            if (heroSkillCitizenTaxValueDic.ContainsKey(key))
            {
                heroSkillCitizenTaxValueDic[key] += CalculateHeroSkillPower(hero, skill);
            }
            else
            {
                heroSkillCitizenTaxValueDic.Add(key, CalculateHeroSkillPower(hero, skill));
            }
        }
        else if (string.IsNullOrEmpty(skill.fillterItem) == false)
        {
            string key = skill.fillterItem;
            if (heroSkillCitizenTaxValueDic.ContainsKey(key))
            {
                heroSkillCitizenTaxValueDic[key] += CalculateHeroSkillPower(hero, skill);
            }
            else
            {
                heroSkillCitizenTaxValueDic.Add(key, CalculateHeroSkillPower(hero, skill));
            }
        }
        else
        {
            result = CalculateHeroSkillPower(hero, skill);
        }

        return(result);
    }
示例#2
0
    public void InitTerritorySkillBase(TerritorySkillData data)
    {
        id = data.id;
        territorySkillData = data;

        //if (data.conditionBuildingState == ConditionBuildingState.Always)
        //    checkExecutionCondition = new ConditionAlways();
        //else if (data.conditionBuildingState == ConditionBuildingState.TimeToTime)
        //    checkExecutionCondition = new ConditionTimeToTime(data.intervalTime);
    }
示例#3
0
    double CalculateHeroSkillPower(HeroData hero, TerritorySkillData skill, int placeTier = 1)
    {
        string s       = skill.formula;
        int    formula = 0;

        int.TryParse(s, out formula);
        int level = (1 + (hero.rebirth * 100) + hero.enhance);

        double collectPower = formula * level * placeTier;

        return(collectPower);
    }
示例#4
0
    void AddToTerritorySkillList(string skillID)
    {
        if (string.IsNullOrEmpty(skillID))
        {
            return;
        }

        if (GameDataManager.territorySkillDataDic.ContainsKey(skillID))
        {
            TerritorySkillData skillData = GameDataManager.territorySkillDataDic[skillID];
            territorySkillDataList.Add(skillData);
        }
    }
示例#5
0
    void UpdateDescription(TerritorySkillData _territorySkillData)
    {
        TerritorySkillData value = _territorySkillData;

        if (value == null)
        {
            textName.text        = string.Empty;
            textDescription.text = string.Empty;
        }
        else
        {
            string name        = value.name;
            string description = value.description;

            string item     = value.fillterItem;
            string category = value.fillterCategory;
            if (GameDataManager.itemDic.ContainsKey(item))
            {
                item        = GameDataManager.itemDic[item].name;
                name        = name.Replace("[item]", "<color=#FFE57AFF>" + item + "</color>");
                description = description.Replace("[item]", "<color=#FFE57AFF>" + item + "</color>");
            }

            name        = name.Replace("[category]", "<color=#FFE57AFF>" + category + "</color>");
            description = description.Replace("[category]", "<color=#FFE57AFF>" + category + "</color>");



            double level   = (1 + (heroData.rebirth * 100) + heroData.enhance);
            int    formula = 0;
            int.TryParse(value.formula, out formula);
            level *= formula;

            description = description.Replace("[formula]", "<color=#85B8FFFF>" + level.ToStringABC() + "</color>");


            textName.text        = name;
            textDescription.text = description;
        }

        gameObject.SetActive(value != null);
    }
示例#6
0
    bool fillterChecker(TerritorySkillData skill)
    {
        bool result = true;

        if (product == null)
        {
            return(false);
        }

        if (string.IsNullOrEmpty(skill.fillterCategory) == false)
        {
            result = skill.fillterCategory == product.category;
        }

        if (string.IsNullOrEmpty(skill.fillterItem) == false)
        {
            result = skill.fillterItem == product.id;
        }

        return(result);
    }
示例#7
0
    IEnumerator InitTerritorySkillData()
    {
        JsonData jData = null;

        territorySkillDataDic = new Dictionary <string, TerritorySkillData>();

        yield return(StartCoroutine(AssetLoader.LoadJsonData("data/territoryskill", "TerritorySkill", x => jData = x)));

        if (jData == null)
        {
            Debug.LogWarning("Failed to load TerritorySkill json data");
            yield break;
        }

        for (int i = 0; i < jData.Count; i++)
        {
            TerritorySkillData skillData = new TerritorySkillData(jData[i]);

            territorySkillDataDic.Add(skillData.id, skillData);
        }
    }
示例#8
0
    /// <summary> 같은 카테고리에 배치된 영웅중 같은 등급인 영웅이 존재할 때 생산력 증가 </summary>
    double CalculateProductionPowerForSameGradeHero(HeroData hero, TerritorySkillData skill)
    {
        int count = 0;

        for (int i = 0; i < ProductManager.Instance.productionLineDataList.Count; i++)
        {
            ProductionData line = ProductManager.Instance.productionLineDataList[i];
            if (line.product != null && line.product.category == skill.fillterCategory)
            {
                for (int j = 0; j < line.heroList.Count; j++)
                {
                    if (hero.id == line.heroList[j].id)
                    {
                        continue;
                    }

                    if (hero.heroGrade == line.heroList[j].heroGrade)
                    {
                        count++;
                    }
                }
            }
        }
        if (count > 0)
        {
            count = 1;
        }

        string s       = skill.formula;
        int    formula = 0;

        int.TryParse(s, out formula);
        int level = (1 + (hero.rebirth * 100) + hero.enhance);

        double power = formula * level * count;

        return(power);
    }
示例#9
0
    void CalculateHeroSkillProductionPower(List <HeroData> heroList, Item product)
    {
        double _heroSkillProductionPower    = 0;
        double _heroSkillExpValue           = 0;
        double _heroSkillTaxValue           = 0;
        double _probabilityCitizenTaxDouble = 0;

        heroSkillCitizenExpValueDic.Clear();
        heroSkillCitizenTaxValueDic.Clear();
        for (int i = 0; i < heroList.Count; i++)
        {
            HeroData hero = heroList[i];
            List <TerritorySkillData> skilList = heroList[i].baseData.territorySkillDataList;
            for (int j = 0; j < skilList.Count; j++)
            {
                TerritorySkillData skill = skilList[j];
                if (skill.deployState != TerritoryHeroDeployState.Production && skill.deployState != TerritoryHeroDeployState.All)
                {
                    continue;
                }

                if (skill.applyType == "Production")
                {
                    if (fillterChecker(skill, product) == false)
                    {
                        continue;
                    }
                    _heroSkillProductionPower += CalculateHeroSkillPower(hero, skill);
                }
                else if (skill.applyType == "ProductionForProductLevel")
                {
                    if (fillterChecker(skill, product) == false)
                    {
                        continue;
                    }

                    _heroSkillProductionPower += CalculateHeroSkillPower(hero, skill, product.level);
                }
                else if (skill.applyType == "ProductionForSameGradeHero")
                {
                    _heroSkillProductionPower += CalculateProductionPowerForSameGradeHero(hero, skill);
                }
                else if (skill.applyType == "CitizenExp")
                {
                    _heroSkillExpValue += CalculateCitizenExp(hero, skill);
                }
                else if (skill.applyType == "CitizenTax")
                {
                    _heroSkillTaxValue += CalculateCitizenTax(hero, skill);
                }
                else if (skill.applyType == "CitizenDoubleTaxProbability")
                {
                    _probabilityCitizenTaxDouble += CalculateHeroSkillPower(hero, skill);
                }
            }
        }
        probabilityCitizenTaxDouble = (float)_probabilityCitizenTaxDouble;
        heroSkillCitizenExpValue    = _heroSkillExpValue;
        heroSkillCitizenTaxValue    = _heroSkillTaxValue;
        heroSkillProductionPower    = _heroSkillProductionPower;
    }
示例#10
0
    public void CalculateHeroSkillCollectPower(List <HeroData> heroList, Item product)
    {
        double _heroSkillCollectPower       = 0;
        double _heroSkillExpValue           = 0;
        double _heroSkillTaxValue           = 0;
        double _probabilityCitizenTaxDouble = 0;

        heroSkillCitizenExpValueDic.Clear();
        heroSkillCitizenTaxValueDic.Clear();
        for (int i = 0; i < heroList.Count; i++)
        {
            HeroData hero = heroList[i];
            List <TerritorySkillData> skilList = heroList[i].baseData.territorySkillDataList;
            for (int j = 0; j < skilList.Count; j++)
            {
                TerritorySkillData skill = skilList[j];
                if (skill.deployState != TerritoryHeroDeployState.Collect && skill.deployState != TerritoryHeroDeployState.All)
                {
                    continue;
                }

                if (skill.applyType == "Collect")
                {
                    if (fillterChecker(skill, product) == false)
                    {
                        continue;
                    }
                    _heroSkillCollectPower += CalculateHeroSkillPower(hero, skilList[j]);
                }
                else if (skill.applyType == "CollectForPlaceTierLong")
                {
                    if (fillterChecker(skill, product) == false)
                    {
                        continue;
                    }
                    int placeTier = placeData.placeBaseData.placeTier;

                    _heroSkillCollectPower += CalculateHeroSkillPower(hero, skilList[j], placeTier);
                }
                else if (skill.applyType == "CollectForPlaceTierShort")
                {
                    if (fillterChecker(skill, product) == false)
                    {
                        continue;
                    }
                    int placeTier = (maxTier + 1) - placeData.placeBaseData.placeTier;

                    _heroSkillCollectPower += CalculateHeroSkillPower(hero, skilList[j], placeTier);
                }
                else if (skill.applyType == "CitizenExp")
                {
                    _heroSkillExpValue += CalculateCitizenExp(hero, skill);
                }
                else if (skill.applyType == "CitizenTax")
                {
                    _heroSkillTaxValue += CalculateCitizenTax(hero, skill);
                }
                else if (skill.applyType == "CitizenDoubleTaxProbability")
                {
                    _probabilityCitizenTaxDouble += CalculateHeroSkillPower(hero, skill);
                }
            }
        }
        probabilityCitizenTaxDouble = (float)_probabilityCitizenTaxDouble;
        heroSkillCitizenExpValue    = _heroSkillExpValue;
        heroSkillCitizenTaxValue    = _heroSkillTaxValue;
        heroSkillCollectPower       = _heroSkillCollectPower;
    }