示例#1
0
    //点击制造
    void OnCraftClick()
    {
        Helper.MoveWndToFront(this.transform); //窗口移动到前面

        //获取当前使用的合成公式
        CraftFormula formula = GetCurFormula();

        if (formula == null)
        {
            return;
        }

        for (int i = 0; i < formula.matCount; i++)
        {
            if (!bindBag.itemPack.ItemEnough(formula.rawMats[i].id, formula.rawMats[i].amount))
            {   //有一种材料不够
                return;
            }
        }

        for (int i = 0; i < formula.matCount; i++)
        {
            bindBag.itemPack.RemoveAmount(formula.rawMats[i].id, formula.rawMats[i].amount);
        }

        Item product = new Item(formula.outputId, formula.outputAmount);

        if (!bindBag.itemPack.PickUpItem(product))
        { //如果捡东西失败,丢到地上
            Helper.DropItemByPlayer(product);
        }
    }
示例#2
0
    public void SetContent(object content)
    {
        formula = content as CraftFormula;
        if (formula == null)
        {
            Debug.LogError("ItemCell.SetContent >> content error");
            return;
        }

        Image imgIcon = transform.FindChild("Icon").GetComponent <Image>();
        Text  txtName = transform.FindChild("Name").GetComponent <Text>();

        ItemType type = ItemTypeTable.GetItemType(formula.outputId);

        imgIcon.sprite = Resources.Load <Sprite>("ItemIcon/" + type.icon);
        imgIcon.SetNativeSize();
        txtName.text = type.itemName;
    }
示例#3
0
    //选中分类
    void OnClassClick(ListCell cell)
    {
        UICraftClassCell craftClass = cell as UICraftClassCell;

        if (craftClass == null)
        {
            Debug.LogError("CraftWnd.OnClassClick error");
            return;
        }
        //Debug.Log(cell.index);
        if (cell.index >= ItemTypeTable.craftFormulas.Length)
        {
            return;
        }
        CraftFormula[] list = new CraftFormula[ItemTypeTable.craftFormulas[cell.index].Count];
        for (int i = 0; i < list.Length; i++)
        {
            list[i] = ItemTypeTable.craftFormulas[cell.index][i];
        }
        craftItemPanel.SetList(list, itemCellPrefab);
    }
示例#4
0
    /// <summary>
    /// 根据材料是否足够,改变材料和按钮显示
    /// </summary>
    void ShowMatEnough()
    {
        //获取当前使用的合成公式
        CraftFormula formula = GetCurFormula();

        if (formula == null)
        {
            return;
        }

        for (int i = 0; i < formula.matCount; i++)
        {
            if (bindBag.itemPack.ItemEnough(formula.rawMats[i].id, formula.rawMats[i].amount))
            {   //材料足够
                matSlot[i].SetMatEnough(true);
            }
            else
            {  //材料不够
                matSlot[i].SetMatEnough(false);
            }
        }
    }
示例#5
0
    public static void ParseItem(ItemType type, string[] data)
    {
        //name
        type.itemName = data[(int)ItemCsvIndex.Name];
        //品质
        if (data[(int)ItemCsvIndex.Quality].Equals("白"))
        {
            type.quality = ItemQuality.White;
        }
        else if (data[(int)ItemCsvIndex.Quality].Equals("绿"))
        {
            type.quality = ItemQuality.Green;
        }
        else if (data[(int)ItemCsvIndex.Quality].Equals("蓝"))
        {
            type.quality = ItemQuality.Blue;
        }
        else if (data[(int)ItemCsvIndex.Quality].Equals("紫"))
        {
            type.quality = ItemQuality.Purple;
        }
        else if (data[(int)ItemCsvIndex.Quality].Equals("红"))
        {
            type.quality = ItemQuality.Red;
        }
        else if (data[(int)ItemCsvIndex.Quality].Equals("金"))
        {
            type.quality = ItemQuality.Golden;
        }
        //注释
        type.comment = data[(int)ItemCsvIndex.Comment];
        //图标
        type.icon = data[(int)ItemCsvIndex.Icon];
        //武器id
        if (data[(int)ItemCsvIndex.WeaponId].Length <= 0)
        {
            type.weaponId = 0;
        }
        else
        {
            type.weaponId = Int32.Parse(data[(int)ItemCsvIndex.WeaponId]);
        }
        //护甲id
        if (data[(int)ItemCsvIndex.ArmorId].Length <= 0)
        {
            type.armorId = 0;
        }
        else
        {
            type.armorId = Int32.Parse(data[(int)ItemCsvIndex.ArmorId]);
        }

        //消耗品id
        if (data[(int)ItemCsvIndex.ConsumId].Length <= 0)
        {
            type.consumId = 0;
        }
        else
        {
            type.consumId = Int32.Parse(data[(int)ItemCsvIndex.ConsumId]);
        }
        //价格
        if (data[(int)ItemCsvIndex.Price].Length <= 0)
        {
            type.originalPrice = 1;
        }
        else
        {
            type.originalPrice = Int32.Parse(data[(int)ItemCsvIndex.Price]);
        }
        //合成分类
        int craftClass = className.Count;

        if (data[(int)ItemCsvIndex.CraftStart] != null && !data[(int)ItemCsvIndex.CraftStart].Equals(""))
        {
            craftClass = Int32.Parse(data[(int)ItemCsvIndex.CraftStart]);
        }
        craftClass--; //偏移量从1开始,需要减去1
        //合成公式解析
        CraftFormula formual = new CraftFormula();

        for (int i = 1; i <= CraftFormula.maxRawMatSorts; i++) //最多6种材料
        {                                                      //表格偏移量从x开始
            string strMat = data[i + (int)ItemCsvIndex.CraftStart];
            if (strMat != null && !strMat.Equals(""))
            {
                string[] matData = strMat.Split('#');
                if (matData.Length == 2)
                {
                    RawMaterial rawMat = new RawMaterial();
                    try
                    {   //新增一种材料,添加到公式中
                        rawMat.id     = Int32.Parse(matData[0]);
                        rawMat.amount = UInt32.Parse(matData[1]);
                        formual.AddMaterial(rawMat);
                    }
                    catch
                    {   //这里应该是数据格式不对,放弃这种材料
                        rawMat = null;
                    }
                }
            }
        }
        //产出物品的id和数量
        formual.outputId = type.id;
        if (data[(int)ItemCsvIndex.CraftStart + 7] != null && !data[(int)ItemCsvIndex.CraftStart + 7].Equals(""))
        {   //解析合成公式的产出数量
            try
            {
                formual.outputAmount = UInt32.Parse(data[(int)ItemCsvIndex.CraftStart + 7]);
            }
            catch
            {
                formual.outputAmount = 0;
            }
        }
        if (formual.matCount > 0 && formual.outputAmount > 0)
        {                                          //这个合成公式有材料且有产出,添加到合成表中
            if (craftClass < craftFormulas.Length) //合成分类索引不超出范围
            {
                craftFormulas[craftClass].Add(formual);
            }
            else
            {
                Debug.LogError("" + type.id + " craft class error");
            }
        }
    }