//点击制造 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); } }
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; }
//选中分类 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); }
/// <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); } } }
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"); } } }