/// <summary> /// 检查某一项能力是否到达训练上限 /// </summary> /// <param name="attributeId">对应第几项能力,ObjectCard.GetHeroData().GetTrainCount()[attributeId]</param> /// <param name="attributetrainID">返回当前当前32表id(能力升级相关)</param> /// <returns>返回是否已经到达训练上限</returns> private bool GetAttributeTrainId(ObjectCard hero, int attributeId, out int attributetrainID) { if (attributeId >= AttributeTrainArrayLength || hero == null) { attributetrainID = -1; return(true); } Func <int> GetTrainSlotX; Func <int> GetMaxTrainCount; HeroTemplate heroTemplate = hero.GetHeroRow(); switch (attributeId) { case 0: GetTrainSlotX = heroTemplate.getTrainSlot1; GetMaxTrainCount = heroTemplate.getTrainMaximum1; break; case 1: GetTrainSlotX = heroTemplate.getTrainSlot2; GetMaxTrainCount = heroTemplate.getTrainMaximum2; break; case 2: GetTrainSlotX = heroTemplate.getTrainSlot3; GetMaxTrainCount = heroTemplate.getTrainMaximum3; break; case 3: GetTrainSlotX = heroTemplate.getTrainSlot4; GetMaxTrainCount = heroTemplate.getTrainMaximum4; break; default: GetTrainSlotX = null; GetMaxTrainCount = null; break; } int _id = hero.GetHeroData().GetTrainCount()[attributeId]; if (_id != 0) { attributetrainID = _id; } else { attributetrainID = GetTrainSlotX() * 1000 + 1; } AttributetrainTemplate _dataTemplate = (AttributetrainTemplate)m_AttributeTrainTable.getTableData(attributetrainID); int allAttributetrainID = GetTrainSlotX() * 1000 + GetMaxTrainCount() - 1; return(attributetrainID >= allAttributetrainID); }
/// <summary> /// 遍历某个英雄的4种属性,返回各属性是否【到达培养上限】以及是否【有足够的资源升级】 /// </summary> /// <param name="hero"></param> /// <param name="resultArr"></param> /// <returns>是否最少有一个属性有足够的资源培养并且还没有到达培养上限</returns> private bool CheckAttributeTrain(ObjectCard hero, bool[] resultArr) { bool _result = false; for (int i = 0; i < AttributeTrainArrayLength; i++) { int _attributetrainId; resultArr[i] = !GetAttributeTrainId(hero, i, out _attributetrainId); if (resultArr[i]) { AttributetrainTemplate attr = (AttributetrainTemplate)m_AttributeTrainTable.getTableData(_attributetrainId); long _resourceCount = 0; m_ObjectSelf.TryGetResourceCountById(attr.getCostType(), ref _resourceCount); resultArr[i] = _resourceCount >= attr.getCost(); _result |= resultArr[i]; } } return(_result); }
private void ShowProperty4() { int currentValue = 0; int attributetrainID = obj.GetHeroData().GetTrainCount()[3]; if (attributetrainID != 0) { AttributetrainTemplate attrOld = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(attributetrainID); currentValue = attrOld.getAttriValue(); currentValue4.text = currentValue.ToString() + "/"; AttributetrainTemplate attr = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(attributetrainID + 1); addValue4.text = (attr.getAttriValue() - currentValue).ToString(); needValue4.text = attr.getCost().ToString(); } else { currentValue4.text = currentValue.ToString() + "/"; attributetrainID = hero.getTrainSlot4() * 1000 + 1; AttributetrainTemplate attr = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(attributetrainID); addValue4.text = (attr.getAttriValue() - currentValue).ToString(); needValue4.text = attr.getCost().ToString(); } int allAttributetrainID = hero.getTrainSlot4() * 1000 + hero.getTrainMaximum4() - 1; AttributetrainTemplate allAttr = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(allAttributetrainID); allValue4.text = allAttr.getAttriValue().ToString(); propertySlider4.value = ((float)currentValue) / allAttr.getAttriValue(); if (int.Parse(allHeroMoney.text) < int.Parse(needValue4.text)) { needValue4.color = Color.red; } else { needValue4.color = Color.white; } if (currentValue == allAttr.getAttriValue()) { needValue4.gameObject.SetActive(false); } else { needValue4.gameObject.SetActive(true); } if (attributetrainID >= allAttributetrainID) { addPropertyBtn4.gameObject.SetActive(false); maxPropertyBtn4.gameObject.SetActive(true); addValue4.gameObject.SetActive(false); } else { addPropertyBtn4.gameObject.SetActive(true); maxPropertyBtn4.gameObject.SetActive(false); addValue4.gameObject.SetActive(true); } }
private void ShowProperty2() { int[] heroType = hero.getClientSignType(); switch (heroType[1]) { case 0: propertyType2.text = GameUtils.getString("hero_train_type2"); //物攻 break; case 1: propertyType2.text = GameUtils.getString("hero_train_type3"); //法攻 break; default: break; } int currentValue = 0; int attributetrainID = obj.GetHeroData().GetTrainCount()[1]; if (attributetrainID != 0) { AttributetrainTemplate attrOld = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(attributetrainID); currentValue = attrOld.getAttriValue(); currentValue2.text = currentValue.ToString() + "/"; AttributetrainTemplate attr = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(attributetrainID + 1); addValue2.text = (attr.getAttriValue() - currentValue).ToString(); needValue2.text = attr.getCost().ToString(); } else { currentValue2.text = currentValue.ToString() + "/"; attributetrainID = hero.getTrainSlot2() * 1000 + 1; AttributetrainTemplate attr = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(attributetrainID); addValue2.text = attr.getAttriValue().ToString(); needValue2.text = attr.getCost().ToString(); } int allAttributetrainID = hero.getTrainSlot2() * 1000 + hero.getTrainMaximum2() - 1; AttributetrainTemplate allAttr = (AttributetrainTemplate)DataTemplate.GetInstance().m_AttributetrainTable.getTableData(allAttributetrainID); allValue2.text = allAttr.getAttriValue().ToString(); propertySlider2.value = ((float)currentValue) / allAttr.getAttriValue(); if (int.Parse(allHeroMoney.text) < int.Parse(needValue2.text)) { needValue2.color = Color.red; } else { needValue2.color = Color.white; } if (currentValue == allAttr.getAttriValue()) { needValue2.gameObject.SetActive(false); } else { needValue2.gameObject.SetActive(true); } if (attributetrainID >= allAttributetrainID) { addPropertyBtn2.gameObject.SetActive(false); maxPropertyBtn2.gameObject.SetActive(true); addValue2.gameObject.SetActive(false); } else { addPropertyBtn2.gameObject.SetActive(true); maxPropertyBtn2.gameObject.SetActive(false); addValue2.gameObject.SetActive(true); } }