/// <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); }
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); }
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); }
void AddToTerritorySkillList(string skillID) { if (string.IsNullOrEmpty(skillID)) { return; } if (GameDataManager.territorySkillDataDic.ContainsKey(skillID)) { TerritorySkillData skillData = GameDataManager.territorySkillDataDic[skillID]; territorySkillDataList.Add(skillData); } }
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); }
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); }
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); } }
/// <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); }
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; }
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; }