コード例 #1
0
    public List <NItemInfo> GetBuildingUpgradeCost(NDictionary args)
    {
        if (args == null)
        {
            return(null);
        }
        int fromConfigID = args.Value <int>("configID");
        List <NItemInfo> costInfoList  = new List <NItemInfo>();
        var      buildingConfigDataMap = ConfigDataStatic.GetConfigDataTable("BUILDING");
        BUILDING buildingConfigData    = buildingConfigDataMap[fromConfigID] as BUILDING;

        for (int i = 0; i < buildingConfigData.CostTableCount; i++)
        {
            var costData = buildingConfigData.GetCostTable(i);
            int configID = costData.CostId;
            if (configID == 0)
            {
                continue;
            }
            int       number = costData.CostQty;
            NItemInfo info   = new NItemInfo();
            info.configID = configID;
            info.number   = number;
            costInfoList.Add(info);
        }
        return(costInfoList);
    }
コード例 #2
0
    public void CalculateBuildingCost(int configID)
    {
        BUILDING configData = GetBuildingConfigDataByConfigID(configID);

        if (configData == null)
        {
            return;
        }
        buildingCostList.Clear();
        //level, gold, elec
        NCostDef cost = new NCostDef();

        cost.configID = 1;
        cost.value    = configData.BldgLvLim;
        buildingCostList.Add(cost);
        if (configData.GoldCost > 0)
        {
            cost          = new NCostDef();
            cost.configID = 2;
            cost.value    = configData.GoldCost;
            buildingCostList.Add(cost);
        }
        if (configData.ElecCost > 0)
        {
            cost          = new NCostDef();
            cost.configID = 3;
            cost.value    = configData.ElecCost;
            buildingCostList.Add(cost);
        }
        //res cost
        for (int i = 0; i < configData.CostTableCount; i++)
        {
            cost = new NCostDef();
            int itemConfigID = configData.GetCostTable(i).CostId;
            if (itemConfigID == 0)
            {
                continue;
            }
            int num = configData.GetCostTable(i).CostQty;
            cost.configID = itemConfigID;
            cost.value    = num;
            buildingCostList.Add(cost);
        }
    }
コード例 #3
0
    public bool IsAbleToUnlockOrUpgrade(int configID)
    {
        int         requireVal;
        double      curVal;
        ItemPackage itemPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_Item) as ItemPackage;
        UserPackage userPackage = FacadeSingleton.Instance.RetrieveData(ConstVal.Package_User) as UserPackage;
        BUILDING    config      = GetBuildingConfigDataByConfigID(configID);

        //level
        requireVal = config.BldgLvLim;
        curVal     = userPackage.GetManorLevel();
        if (curVal < requireVal)
        {
            return(false);
        }
        //gold cost
        requireVal = config.GoldCost;
        curVal     = itemPackage.GetGoldNumber();
        if ((double)requireVal > curVal)
        {
            return(false);
        }
        //item
        for (int i = 0; i < config.CostTableCount; i++)
        {
            var cost = config.GetCostTable(i);
            if (cost.CostId == 0)
            {
                continue;
            }
            requireVal = cost.CostQty;
            NItemInfo info = itemPackage.GetItemInfo(cost.CostId);
            // ITEM_RES itemConfig = itemPackage.GetItemDataByConfigID(cost.CostId);
            // if(itemConfig == null)
            // {
            //     Debug.Log(string.Format("configID = {0} missing!!!", cost.CostId));
            //     continue;
            // }
            if (info == null || info.number < cost.CostQty)
            {
                return(false);
            }
        }
        return(true);
    }
コード例 #4
0
    void ShowCost(BUILDING configData)
    {
        int count = 0;

        //show gold & elec
        if (configData.GoldCost > 0)
        {
            int    costNum = configData.GoldCost;
            double curNum  = itemPackage.GetGoldNumber();
            costCellList[count].title.text = "黄金消耗: ";
            costCellList[count].value.text = string.Format("{0} / {1}", GlobalFunction.NumberFormat(costNum), GlobalFunction.NumberFormat(curNum));
            costCellList[count].go.SetActive(true);
            if ((double)costNum > curNum)
            {
                costCellList[count].title.color = Color.red;
                costCellList[count].value.color = Color.red;
            }
            else
            {
                costCellList[count].title.color = Color.white;
                costCellList[count].value.color = Color.white;
            }
            count++;
        }
        if (configData.ElecCost > 0)
        {
            int    costNum = configData.ElecCost;
            double curNum  = itemPackage.GetElecNumber();
            costCellList[count].title.text = "电力消耗: ";
            costCellList[count].value.text = string.Format("{0} / {1}", GlobalFunction.NumberFormat(costNum), GlobalFunction.NumberFormat(curNum));
            costCellList[count].go.SetActive(true);
            if ((double)costNum > curNum)
            {
                costCellList[count].title.color = Color.red;
                costCellList[count].value.color = Color.red;
            }
            else
            {
                costCellList[count].title.color = Color.white;
                costCellList[count].value.color = Color.white;
            }
            count++;
        }
        for (int i = 0; i < configData.CostTableCount; i++)
        {
            int itemConfigId = configData.GetCostTable(i).CostId;
            if (itemConfigId == 0)
            {
                continue;
            }
            int       num      = configData.GetCostTable(i).CostQty;
            ITEM_RES  itemData = itemPackage.GetItemDataByConfigID(itemConfigId);
            NItemInfo itemInfo = itemPackage.GetItemInfo(itemConfigId);
            int       curNum   = itemInfo == null ? 0 : itemInfo.number;
            costCellList[count].title.text = itemData.MinName + ": ";
            costCellList[count].value.text = string.Format("{0} / {1}", num.ToString(), curNum);
            costCellList[count].go.SetActive(true);
            if (itemInfo == null || itemInfo.number < num)
            {
                costCellList[count].title.color = Color.red;
                costCellList[count].value.color = Color.red;
            }
            else
            {
                costCellList[count].title.color = Color.white;
                costCellList[count].value.color = Color.white;
            }
            count++;
        }
        for (; count < 5; count++)
        {
            costCellList[count].go.SetActive(false);
        }
    }