/// <summary> /// 通过id获取对应的合成图谱 /// </summary> /// <param name="id"></param> /// <returns></returns> public CraftingMapItem GetItemById(int id) { CraftingMapItem temp = null; mapItemDic.TryGetValue(id, out temp); return(temp); }
/// <summary> /// 生成图谱内容. /// </summary> private void CreateMapContents(int mapId) { // 重置图谱. ResetMap(); // 图谱材料回归背包. ResetMaterials(); // 合成材料生成. CraftingMapItem mapItem = m_CraftingPanelModel.GetMapDataById(mapId); if (mapItem == null) { return; } for (int i = 0; i < slotsNum; ++i) { if (mapItem.MapContents[i] != "0") { Sprite sprite = m_CraftingPanelView.GetMaterialIconByName(mapItem.MapContents[i]); slotsList[i].GetComponent <CraftingSlotController>().InitSlot(int.Parse(mapItem.MapContents[i]), sprite); } } // 最终合成物品展现. m_CraftingControler.Init(mapId, mapItem.MapName); // 获取需要的材料数. materialsCount = mapItem.MaterialsCount; }
/// <summary> /// 通过图谱编号获取图谱数据. /// </summary> public CraftingMapItem GetMapDataById(int mapId) { CraftingMapItem temp = null; mapItemDic.TryGetValue(mapId, out temp); return(temp); }
/// <summary> /// 通过mapId返回一个图谱对象 /// </summary> /// <param name="mapId"></param> /// <returns></returns> public CraftingMapItem GetCraftingMapItemByMapId(int mapId) { CraftingMapItem cmi = null; dictionary.TryGetValue(mapId, out cmi); return(cmi); }
/// <summary> /// 生成合成图谱 /// </summary> /// <param name="id"></param> private void CreateSlotContents(int id) { //Debug.Log(id); CraftingMapItem tempItem = craftingPanelModel.GetItemById(id); //重置材料 ResetSlotItems(); dragMaterialsCount = 0; //重置按钮 craftingController.InitButton(); //重置合成图谱 ResetSlotContents(); //重新生成图谱 if (tempItem != null) { for (int j = 0; j < tempItem.MapContents.Length; j++) { if (tempItem.MapContents[j] != "0") { Sprite sprite = GetItemSprite(tempItem.MapContents[j]); slotList[j].GetComponent <CraftingSlotController>().Init(sprite, int.Parse(tempItem.MapContents[j])); slotList[j].GetComponent <CraftingSlotController>().SetSlotState(true); } } //初始化需要的素材数量 materialsCount = tempItem.MaterialsCount; //显示最终合成物品 craftingController.Init(craftingPanelView.GetItemIconByName(tempItem.MapName), tempItem.MapName, tempItem.MapId, tempItem.MapBar); } else { materialsCount = 0; } }
/// <summary> /// 图谱槽数据填充 /// </summary> private void CreatSlotContents(int id) { CraftingMapItem temp = m_CraftingpanelModel.GetItemById(id); if (temp != null) { // 清空上一次的图谱类容 ResetSlotContents(); //把图谱内的材料放入背包中 ResetMaterials(); //填充图谱 for (int j = 0; j < temp.MapContents.Length; j++) { if (temp.MapContents[j] != "0") { Sprite sp = m_CraftingpanelView.ByNameGetMaterialSprite(temp.MapContents[j]); slotList[j].GetComponent <CraftingSlotController>().Init(sp, temp.MapContents[j]); } } //最终合成物品展示 m_CraftingController.Init(temp.MapId, temp.MapName); materialsCount = temp.MaterialsCount; } }
/// <summary> /// 创建某个材料的合成图谱 /// </summary> public void CreateMaps(int mapId) { //先恢复到默认状态 craftingCraft.NorCraft(); Debug.Log("item" + mapId); CraftingMapItem cmi = craftingPanelModel.GetCraftingMapItemByMapId(mapId); if (cmi == null) { return; } //先把结果槽里的合成物品丢回背包栏 for (int i = 0; i < craftingCraft.ResultNum; i++) { List <GameObject> tempList = new List <GameObject>(); tempList.Add(craftingCraft.GoodItem_Transform.gameObject); mapIsCanTAB = ResetMaterials(tempList); Debug.Log("执行了:" + tempList.Count); } //更新一下结果槽的数量 craftingCraft.CraftResultNum(); if (!mapIsCanTAB) { return; } //mapIsCanTAB等于true表示现在合成槽里的材料为0 false的话说明合成槽里还有材料 mapIsCanTAB = ResetMaterials(slotList); //如果合成槽里还有材料就直接返回 if (!mapIsCanTAB) { return; } //重置合成图谱 ResetMap(); //重新进行赋值 for (int i = 0; i < cmi.MapContents.Length; i++) { if (cmi.MapContents[i] != "0") { Sprite sprite = craftingPanelView.LoadMaterialSpriteByName(cmi.MapContents[i]); //进行赋值 slotList[i].GetComponent <CraftingMapItemManager>().SetItemValue(cmi.MapContents[i], sprite, cmi.MapName); } } craftingCraft.SetItemValue(cmi.MapId, cmi.MapName); Debug.Log("创建id为" + cmi.MapId + "雪碧图名称为:" + cmi.MapName + "的图谱"); //把需要的合成的材料总数存储到临时变量中去 needMaterialsCount = cmi.MapMaterialCount; }
/// <summary> /// 加载合成图谱Json数据 /// </summary> /// <param name="name"></param> /// <returns></returns> private Dictionary <int, CraftingMapItem> LoadMapContents(string name) { Dictionary <int, CraftingMapItem> temp = new Dictionary <int, CraftingMapItem>(); //1.构造数据容器 string jsonStr = Resources.Load <TextAsset>("JsonData/" + name).text; //2.加载Json文件,返回string数据 JsonData jsonData = JsonMapper.ToObject(jsonStr); //3.将string数据转化为JsonData(JsonMapper) for (int i = 0; i < jsonData.Count; i++) { //取临时数据 int mapId = int.Parse(jsonData[i]["MapId"].ToString()); string tempStr = jsonData[i]["MapContents"].ToString(); string[] mapContents = tempStr.Split(','); int mapCount = int.Parse(jsonData[i]["MaterialsCount"].ToString()); string mapName = jsonData[i]["MapName"].ToString(); //构造对象 CraftingMapItem item = new CraftingMapItem(mapId, mapCount, mapContents, mapName); temp.Add(mapId, item); } return(temp); }
/// <summary> /// 根据名字返回一个合成图谱对象 /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public Dictionary <int, CraftingMapItem> GetMapJsonByName(string fileName) { Dictionary <int, CraftingMapItem> dictionary = new Dictionary <int, CraftingMapItem>(); string jsonText = Resources.Load <TextAsset>("JsonData/" + fileName).text; JsonData jsonData = JsonMapper.ToObject(jsonText); for (int i = 0; i < jsonData.Count; i++) { int mapId = int.Parse(jsonData[i]["MapId"].ToString()); string tempText = jsonData[i]["MapContents"].ToString(); string[] mapContents = tempText.Split(','); int mapMaterialCount = int.Parse(jsonData[i]["MapMaterialCount"].ToString()); string mapName = jsonData[i]["MapName"].ToString(); CraftingMapItem cmi = new CraftingMapItem(mapId, mapContents, mapMaterialCount, mapName); dictionary.Add(mapId, cmi); } return(dictionary); }