/// <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);
    }
Example #3
0
    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);
        }
    }
Example #4
0
    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);
        }
    }