/// <summary> /// UI初始化 /// </summary> /// <param name="item"></param> public void InitView(Model_Item item, int count) { gameObject.SetActive(true); icon.sprite = Resources.Load <Sprite>(item.sprite); makeCount.text = count + "X"; makeProgress.size = item.makeTime / item.makeTime; //设置当前制作进度为满 }
//丢弃物品 public void DropItem() { if (!EventSystem.current.IsPointerOverGameObject()) { Item = null; } }
private void Update() { //当前手上有物品 if (Ctrl_TootipManager.Instance.IsPickedItem) { if (Input.GetMouseButtonDown(0)) { //如果鼠标指针下不是UI界面,丢弃物品 if (!EventSystem.current.IsPointerOverGameObject()) { //丢弃物品 DropItem(); } else { if (collderObjectName == "PlayerShop") { for (int i = 0; i < Item.currentNumber; i++) { Ctrl_HeroProperty.Instance.AddGold(Item.sellPriceByGold); Ctrl_HeroProperty.Instance.AddDiamods(Item.sellPriceByDiamond); } Item = null; } } } } }
public int GetBuyItemAmountSun(Model_Item item) { int purchaseQuantity = 0; //已存在相同物品剩余格子的所和 purchaseQuantity += Ctrl_SlotManager.Instance.GetIdenticaAmount(item); //背包物品是否满了 if (Ctrl_InventoryManager.Instance.emptySlot == null) { return(purchaseQuantity); } else { if (Ctrl_InventoryManager.Instance.ActiveSlot() != null) { //剩余空的格子数量 int inventorySurplusAmount = Ctrl_InventoryManager.Instance.slotList.Length - Ctrl_InventoryManager.Instance.ActiveSlot().Count; inventorySurplusAmount = inventorySurplusAmount * (item.maxStack); return(inventorySurplusAmount); } else { return(item.maxStack * Ctrl_InventoryManager.Instance.slotList.Length); } } }
//初始化数据 public void InitModel(Model_Item value) { item = value; GetComponent <View_MakeTootip>().InitView(value); //初始化UI显示,(头像,物品名称,制作个数) productionNeeds.DisplayMaterial(value); //初始化显示制作所需的材料 GetComponent <View_MakeTootip>().UpdateMakeCount(1); //切换图纸后重新设置制作的个数为1 }
//添加物品 public bool AddItem(int itemId) { Model_Item item = Ctrl_InventoryManager.Instance.GetItemById(itemId); if (GetAllActiveSlot() != null) { foreach (Ctrl_Slot slot in GetAllActiveSlot()) { //添加的物品已经存在在"铁匠台"中,并且物品没有达到格子上限 if (slot.Item != null && slot.Item.id == item.id) { if (slot.Item.currentNumber < slot.Item.maxStack) { slot.Item.currentNumber += 1; slot.UpdateAmount(); return(true); } } } } if (GetEmptySlot() != null) { GetEmptySlot().Item = Ctrl_InventoryManager.Instance.NewItem(item.id); //检测执行的任务中是否是添加的物品 return(true); } else { return(false); } }
/// <summary> /// 显示商店购选Tootip /// </summary> /// <param name="item"></param> /// <param name="position"></param> public void ShowShopTootip(Model_Item item, Vector2 position) { ShopTootip.SetActive(true); ShopTootip.GetComponent <View_BuyTootip>().BuyItem = item; // Tootip.GetComponent<View_ToolTip>().SetLocalPotion(position + toolTipPosionOffset); ShopTootip.transform.localPosition = position; }
[SerializeField] private Text MaterialConsumptionInside; //里面的文本控制显示 public void InitView(Model_Item item) { icon.sprite = Resources.Load <Sprite>(item.sprite); itemName.text = item.itemName; DescribeInside.text = item.description; MaterialConsumptionInside.text = item.DrawingTootip(); EquipmentAttributeInside.text = item.EquipTootip() + item.ConsumableTootip(); }
[SerializeField] private Text EquipmentAttributeInside; //装备/物品属性里面控制大小 public void InitView(Model_Item item) { icon.sprite = Resources.Load <Sprite>(item.sprite); itemName.text = item.itemName; // DescribeOutside.text = item.description; DescribeInside.text = item.description; // EquipmentAttributeOutside.text = item.EquipTootip() + item.ConsumableTootip() + "\n"; EquipmentAttributeInside.text = item.EquipTootip() + item.ConsumableTootip(); }
public void Init(Model_Item item) { this.item = item; itemName.text = item.itemName; goldText.text = item.buyPriceByGold.ToString(); diamodText.text = item.buyPriceByDiamond.ToString(); icon.gameObject.SetActive(true); icon.sprite = Resources.Load <Sprite>(item.sprite); GetComponentInChildren <Ctrl_ShopSlot>().Item = item; }
/// <summary> /// 减少购买的个数 /// </summary> /// <param name="item">购买的物品</param> /// <param name="goldText">所需金币的Text</param> /// <param name="diamodText">所需钻石的Text</param> /// <param name="buyAmount">购买的个数</param> public void RemoveAmount(Model_Item item, Text goldText, Text diamodText, InputField buyAmount) { //购买的个数小于1,不执行操作 if (Int32.Parse(buyAmount.text) > 1 && buyAmount.text != "") { buyAmount.text = (Int32.Parse(buyAmount.text) - 1).ToString(); goldText.text = (Int32.Parse(buyAmount.text) * item.buyPriceByGold).ToString(); diamodText.text = (Int32.Parse(buyAmount.text) * item.buyPriceByDiamond).ToString(); } }
/// <summary> /// 所有存在并且物品未达到上限的格子中筛选指定物品未满的格子可以存储的个数 /// </summary> /// <param name="item"></param> /// <returns></returns> public int GetIdenticaAmount(Model_Item item) { int amount = 0; foreach (Model_Item modelItem in GetIdenticalSlot(item)) { amount += (modelItem.maxStack - modelItem.currentNumber); } return(amount); }
/// <summary> /// 获得一个全新的Item地址 /// </summary> /// <param name="itemID"></param> /// <returns></returns> public Model_Item NewItem(int itemID) { Model_Item item = Ctrl_InventoryManager.Instance.GetItemById(itemID); return(new Model_Item(item.id, item.itemName, item.itemType, item.materialType, item.consumption, item.equipmentType, item.maxStack, item.currentNumber, item.buyPriceByGold, item.buyPriceByDiamond, item.sellPriceByGold, item.sellPriceByDiamond, item.minLevel, item.sellable, item.tradable, item.destroyable, item.description, item.sprite, item.useDestroy, item.useHealth, item.useMagic, item.useExperience, item.equipHealthBonus, item.equipManaBonus, item.equipDamageBonus, item.equipDefenseBonus, item.equipSpeedcBonus, item.modelPrefab, item.drawing, item.drawingItemId, item.makeTime)); }
/// <summary> /// 如果newItem==null,代表脱下装备,如果不为空,判断当前装备栏是否有装备 /// 如果无,直接增加装备属性,如果有,判断是否是同一间装备,如果是跳过,如果 /// 不是,先减去之前装备的属性,在加上新装备的属性(先脱装备后穿上) /// </summary> /// <param name="currentItem">当前穿戴的装备</param> /// <param name="newItem">新装备</param> private void WearableEquipment(Model_Item currentItem, Model_Item newItem) { //都为空,直接返回 if (newItem == null && currentItem == null) { return; } //如果新装备为空,旧装备不为空,脱下装备 if (newItem == null && currentItem != null) { //脱掉装备 Ctrl_HeroProperty.Instance.DecreaseATK(currentItem.equipDamageBonus); Ctrl_HeroProperty.Instance.DecreaseDEF(currentItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.DecreaseDEX(currentItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.DecreaseMaxHealth(currentItem.equipHealthBonus); Ctrl_HeroProperty.Instance.DecreaseMaxMagic(currentItem.equipManaBonus); } //如果新装备不为空,旧装备为空,穿上装备 if (newItem != null && currentItem == null) { //穿上新装备 Ctrl_HeroProperty.Instance.AddATK(newItem.equipDamageBonus); Ctrl_HeroProperty.Instance.AddDEF(newItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.AddDEX(newItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.IncreaseMaxHealth(newItem.equipHealthBonus); Ctrl_HeroProperty.Instance.IncreaseMaxMagic(newItem.equipManaBonus); } if (currentItem != null && newItem != null) { if (currentItem.id == newItem.id) { return; } //先脱掉装备 Ctrl_HeroProperty.Instance.DecreaseATK(currentItem.equipDamageBonus); Ctrl_HeroProperty.Instance.DecreaseDEF(currentItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.DecreaseDEX(currentItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.DecreaseMaxHealth(currentItem.equipHealthBonus); Ctrl_HeroProperty.Instance.DecreaseMaxMagic(currentItem.equipManaBonus); //穿上新装备 Ctrl_HeroProperty.Instance.AddATK(newItem.equipDamageBonus); Ctrl_HeroProperty.Instance.AddDEF(newItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.AddDEX(newItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.IncreaseMaxHealth(newItem.equipHealthBonus); Ctrl_HeroProperty.Instance.IncreaseMaxMagic(newItem.equipManaBonus); } }
/// <summary> /// 所有存在并且物品未达到上限的格子中筛选指定物品未满的格子 /// </summary> /// <param name="item"></param> /// <returns></returns> public List <Model_Item> GetIdenticalSlot(Model_Item item) { List <Model_Item> itemList = new List <Model_Item>(); foreach (Model_Item Item in GetUnfilledMaxSlot()) { if (item.id == Item.id) { itemList.Add(Item); } } return(itemList); }
/// <summary> /// 添加物品 食材成熟后如果当前格子为空 则新开辟一个物品地址,不为空就直接添加个数即可 /// </summary> /// <param name="itemID"></param> public void AddItem(int itemID) { //根据ID找到与之对应的物品 如烧烤的是一块生肉 那么成品应是一块熟肉 Model_Item item = Ctrl_InventoryManager.Instance.GetItemById(GlobalParametr.GetCookingProduct(itemID)); if (Item == null) { Item = Ctrl_InventoryManager.Instance.NewItem(item.id); /* Item = new Model_Item * { * id = item.id, * itemName = item.itemName, * itemType = item.itemType, * equipmentType = item.equipmentType, * materialType = item.materialType, * consumption = item.consumption, * maxStack = item.maxStack, * currentNumber = item.currentNumber, * buyPriceByGold = item.buyPriceByGold, * buyPriceByDiamond = item.buyPriceByDiamond, * sellPriceByGold = item.sellPriceByGold, * sellPriceByDiamond = item.sellPriceByDiamond, * minLevel = item.minLevel, * sellable = item.sellable, * tradable = item.tradable, * destroyable = item.destroyable, * description = item.description, * sprite = item.sprite, * useDestroy = item.useDestroy, * useHealth = item.useHealth, * useMagic = item.useMagic, * useExperience = item.useExperience, * equipHealthBonus = item.equipHealthBonus, * equipManaBonus = item.equipManaBonus, * equipDamageBonus = item.equipDamageBonus, * equipDefenseBonus = item.equipDefenseBonus, * equipSpeedcBonus = item.equipSpeedcBonus, * modelPrefab = item.modelPrefab * };*/ } else { if (this.item.currentNumber < item.maxStack) { this.item.currentNumber += 1; UpdateAmount(); } } }
public void UseItem() { if (item != null) { if (item.itemType == "Drugs") { Ctrl_HeroProperty.Instance.IncreaseHealthValues(item.useHealth); Ctrl_HeroProperty.Instance.IncreaseMagicValues(item.useMagic); Ctrl_HeroProperty.Instance.UpgradeConition(item.useExperience); item.currentNumber -= 1; UpdateAmount(); if (item.currentNumber == 0 && item.useDestroy) { Item = null; } } else if (item.itemType == "Equipment") { foreach (string equipmentname in Ctrl_PlayerCharacter.Instance.DicEquipmentSlot.Keys) { if (equipmentname == item.equipmentType) { //如果身上无装备 if (Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(item.equipmentType).Item == null) { Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(item.equipmentType).Item = item; Item = null; } //身上有装备 else { if (Item.id == Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(item.equipmentType).Item .id) { return; } int itemID = Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(item.equipmentType).Item.id; Ctrl_PlayerCharacter.Instance.GetCtrlEquipmentSlot(item.equipmentType).Item = item; Ctrl_InventoryManager.Instance.AddItem(itemID); Item = null; } break; } } //TUDO } } }
/// <summary> /// UI初始化 /// </summary> /// <param name="item"></param> public void InitView(Model_Item item) { if (item != null) { icon.gameObject.SetActive(true); icon.GetComponent <Image>().sprite = Resources.Load <Sprite>(item.sprite); count.text = item.currentNumber.ToString(); } else { icon.gameObject.SetActive(false); count.text = " "; } }
/// <summary> /// 只能拿取 不能拖放 /// </summary> /// <param name="eventData"></param> public void OnPointerDown(PointerEventData eventData) { //手上的物品 Ctrl_PickUp pickUp = Ctrl_TootipManager.Instance.PickUpItem.GetComponent <Ctrl_PickUp>(); if (eventData.button == PointerEventData.InputButton.Right) { //手上无物品 if (pickUp.Item == null) { pickUp.Item = Item; Item = null; } } }
public void InitUI() { item = GetComponent <Ctrl_PickUp>().Item; if (item == null) { canvas.alpha = 0; Ctrl_TootipManager.Instance.IsPickedItem = false; } else { canvas.alpha = 1; _ImgIcon.sprite = Resources.Load <Sprite>(item.sprite); _Amount.text = item.currentNumber.ToString(); Ctrl_TootipManager.Instance.IsPickedItem = true; } }
[SerializeField] private GameObject materialAttribute; //材料的属性 如果没有,就不显示 public void InitView(Model_Item item) { icon.sprite = Resources.Load <Sprite>(item.sprite); itemName.text = item.itemName; if (item.MateriaTootip() == "") { materialAttribute.SetActive(false); } else { materialAttribute.SetActive(true); materialAttributeInside.text = item.MateriaTootip(); } describeInside.text = item.description; }
/// <summary> /// 增加购买的个数 /// </summary> /// <param name="item">购买的物品</param> /// <param name="goldText">所需金币的Text</param> /// <param name="diamodText">所需钻石的Text</param> /// <param name="buyAmount">购买的个数</param> public void AddBuyAmount(Model_Item item, Text goldText, Text diamodText, InputField buyAmount) { //从新计算价格 //限定一次购买物品的数量 if (Int32.Parse(buyAmount.text) <= 99) { //如果购买的数量小于已存在相同物品剩余格子的所和 if (Int32.Parse(buyAmount.text) < Ctrl_SlotManager.Instance.GetIdenticaAmount(item)) { //当前购买数量 if (buyAmount.text != "") { int currentBuyAmount = Int32.Parse(buyAmount.text); buyAmount.text = (currentBuyAmount + 1).ToString(); //当前购买所需金币 goldText.text = (Int32.Parse(buyAmount.text) * item.buyPriceByGold).ToString(); //当前购买所需钻石 diamodText.text = (Int32.Parse(buyAmount.text) * item.buyPriceByDiamond).ToString(); } } else { if (Ctrl_InventoryManager.Instance.emptySlot != null) { int inventorySurplusAmount = Ctrl_InventoryManager.Instance.slotList.Length; //剩余空的格子数量 if (Ctrl_InventoryManager.Instance.ActiveSlot() != null) { inventorySurplusAmount = Ctrl_InventoryManager.Instance.slotList.Length - Ctrl_InventoryManager.Instance.ActiveSlot().Count; } if (Int32.Parse(buyAmount.text) < inventorySurplusAmount * item.maxStack) { //当前购买数量 int currentBuyAmount = Int32.Parse(buyAmount.text); buyAmount.text = (currentBuyAmount + 1).ToString(); //当前购买所需金币 goldText.text = (Int32.Parse(buyAmount.text) * item.buyPriceByGold).ToString(); //当前购买所需钻石 diamodText.text = (Int32.Parse(buyAmount.text) * item.buyPriceByDiamond).ToString(); } } } } }
/// <summary> /// 添加物品 食材成熟后如果当前格子为空 则新开辟一个物品地址,不为空就直接添加个数即可 /// </summary> /// <param name="itemID"></param> public void AddItem(int itemID) { //根据ID找到与之对应的物品 如烧烤的是一块生肉 那么成品应是一块熟肉 Model_Item item = Ctrl_InventoryManager.Instance.GetItemById(GlobalParametr.GetCookingProduct(itemID)); if (Item == null) { Item = Ctrl_InventoryManager.Instance.NewItem(item.id); } else { if (this.item.currentNumber < item.maxStack) { this.item.currentNumber += 1; UpdateAmount(); } } }
/// <summary> /// 火源消耗 /// </summary> /// <returns></returns> IEnumerator Combustion() { yield return(new WaitForSeconds(Item.consumption)); Item.currentNumber -= 1; if (Item.currentNumber <= 0) { Item = null; Ctrl_CampfireManager.Instance.IsCombustion = false; UpdateSwitch(); StopAllCoroutines(); } else { UpdateAmount(); StartCoroutine(Combustion()); } }
/// <summary> /// 如果newItem==null,代表脱下装备,如果不为空,判断当前装备栏是否有装备 /// 如果无,直接增加装备属性,如果有,判断是否是同一间装备,如果是跳过,如果 /// 不是,先减去之前装备的属性,在加上新装备的属性(先脱装备后穿上) /// </summary> /// <param name="currentItem">当前穿戴的装备</param> /// <param name="newItem">新装备</param> private void WearableEquipment(Model_Item currentItem, Model_Item newItem) { if (newItem == null) { //脱掉装备 Ctrl_HeroProperty.Instance.DecreaseATK(currentItem.equipDamageBonus); Ctrl_HeroProperty.Instance.DecreaseDEF(currentItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.DecreaseDEX(currentItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.DecreaseMaxHealth(currentItem.equipHealthBonus); Ctrl_HeroProperty.Instance.DecreaseMaxMagic(currentItem.equipManaBonus); } else { if (currentItem == null) { Ctrl_HeroProperty.Instance.AddATK(newItem.equipDamageBonus); Ctrl_HeroProperty.Instance.AddDEF(newItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.AddDEX(newItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.IncreaseMaxHealth(newItem.equipHealthBonus); Ctrl_HeroProperty.Instance.IncreaseMaxMagic(newItem.equipManaBonus); } else { if (currentItem == newItem) { return; } //先脱掉装备 Ctrl_HeroProperty.Instance.DecreaseATK(currentItem.equipDamageBonus); Ctrl_HeroProperty.Instance.DecreaseDEF(currentItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.DecreaseDEX(currentItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.DecreaseMaxHealth(currentItem.equipHealthBonus); Ctrl_HeroProperty.Instance.DecreaseMaxMagic(currentItem.equipManaBonus); //穿上新装备 Ctrl_HeroProperty.Instance.AddATK(newItem.equipDamageBonus); Ctrl_HeroProperty.Instance.AddDEF(newItem.equipDefenseBonus); Ctrl_HeroProperty.Instance.AddDEX(newItem.equipSpeedcBonus); Ctrl_HeroProperty.Instance.IncreaseMaxHealth(newItem.equipHealthBonus); Ctrl_HeroProperty.Instance.IncreaseMaxMagic(newItem.equipManaBonus); } } }
private int itemId = -1; //上一次图纸的ID /// <summary> /// 显示制作所需材料 /// </summary> /// <param name="drawing"></param> public void DisplayMaterial(Model_Item item, int Multiple = 1) { //如果要制作的图纸跟上次制作的图纸不一样,清空制作列表 if (itemId != item.id) { ClearmakeItem(); itemId = item.id; //将现在的图纸ID赋值 //循环遍历所有的所需物品 foreach (Model_Item.Drawing draw in item.drawing) { //初始化 GameObject demandItem = Resources.Load <GameObject>("prefabs/UI/Make/DemandItem"); demandItem = Instantiate(demandItem); demandItem.GetComponent <RectTransform>().localScale = Vector3.one; demandItem.transform.parent = this.transform; //将所需物品的ID和数量赋值到一个新的类中 防止地址引用错误 Model_Item.Drawing newDraw = new Model_Item.Drawing { itemId = draw.itemId, //当前需求物品的ID itemCount = draw.itemCount //当前需求物品的个数 }; //赋值后更新UI显示 demandItem.GetComponent <Ctrl_DemandItem>().Drawing = newDraw; } } //如果这次要制作的物品和上次是一样的,就直接使用上次的数据,但是要注意一点,因这次二次使用,当个数累加时,应乘以当前物品 //需求的原始值 else { foreach (Ctrl_DemandItem demandItem in DemandItems) { //取得当前需求物品的ID,以及原始需求个数乘以倍数 Model_Item.Drawing newDraw = new Model_Item.Drawing { itemId = demandItem.Drawing.itemId, itemCount = demandItem.OriginalQuantity * Multiple }; //更新UI demandItem.Drawing = newDraw; } } }
public void InitUI() { item = GetComponent <Ctrl_PickUp>().Item; skill = GetComponent <Ctrl_PickUp>().Skill; if (item != null) { ShowIcon(); _ImgIcon.sprite = Resources.Load <Sprite>(item.sprite); _Amount.text = item.currentNumber.ToString(); } else if (skill != null) { ShowIcon(); _ImgIcon.sprite = Resources.Load <Sprite>(skill.skillSprite); _Amount.text = skill.skillCurrentLv.ToString(); } if (item == null && skill == null) { HideIcon(); } }
public void ShowItemInfo(Model_Item item) { ShowTootip(item.itemType); switch (item.itemType) { case "Drugs": equipmentTootip.GetComponent <Ctrl_EquipmentTootip>().Item = item; break; case "Equipment": equipmentTootip.GetComponent <Ctrl_EquipmentTootip>().Item = item; break; case "Material": materialTootip.GetComponent <Ctrl_MaterialTootip>().Item = item; break; case "Drawing": drawingTootip.GetComponent <Ctrl_DrawingTootip>().Item = item; break; } }
//添加物品 public bool AddItem(int itemId) { Model_Item item = GetItemById(itemId); if (ActiveSlot() != null) { foreach (Ctrl_Slot slot in ActiveSlot()) { //添加的物品已经存在在背包中,并且物品没有达到格子上限 if (slot.Item != null && slot.Item.id == item.id) { if (slot.Item.currentNumber < slot.Item.maxStack) { slot.Item.currentNumber += 1; slot.UpdateAmount(); //检测执行的任务中是否是添加的物品 foreach (Model_Quest quest in Ctrl_PlayerQuest.Instance.PlayQuestList) { foreach (Model_Quest.QuestItem questItem in quest.questItem) { if (questItem.itemId == itemId) { if (Ctrl_QuestItemManager.Instance.GetSelectOverlay().Quest.id == quest.id) { Ctrl_QuestItemManager.Instance.ShowQuestInfo(quest); } } } } return(true); } } } } if (emptySlot != null) { emptySlot.Item = Ctrl_InventoryManager.Instance.NewItem(item.id); //检测执行的任务中是否是添加的物品 foreach (Model_Quest quest in Ctrl_PlayerQuest.Instance.PlayQuestList) { foreach (Model_Quest.QuestItem questItem in quest.questItem) { if (questItem.itemId == itemId) { if (Ctrl_QuestItemManager.Instance.GetSelectOverlay().Quest.id == quest.id) { Ctrl_QuestItemManager.Instance.ShowQuestInfo(quest); } } } } return(true); } else { return(false); } }
/// <summary> /// 返回已经存个相同物品的格子的剩余数量之和 /// </summary> /// <param name="item"></param> /// <returns></returns> public int GetIdenticaAmount(Model_Item item) { return(Ctrl_SlotManager.Instance.GetIdenticaAmount(item)); }