private bool Match(BaseSlot slot, ArmorType type) { if (slot is ArmorSlot armorSlot) { return(armorSlot.ArmorType == type); } return(false); }
private bool Match(BaseSlot slot, WeaponType type) { if (slot is WeaponSlot weaponSlot) { return(weaponSlot.WeaponType == type); } return(false); }
public bool ShowPopup(BasePopup.TypeOfPopup type, string message = null, BaseSlot slot = null) { if (PopupList.ContainsKey(type.ToString())) { return(PopupList[type.ToString()]); } bool check = InitPopup(type); return(check); }
public void Show(BaseSlot slot, Vector2 position) { gameObject.SetActive(true); var itemTemplate = slot.Content.Definition; RectTransform.position = position; UpdateItemInfos(itemTemplate); }
public void Remove() { if (m_currentSlot != null) { m_currentSlot.RemoveElementHolder(); m_currentSlot = null; } Reset(); }
public void Place() { m_currentSlot = m_targetSlot; m_currentSlot.SetElementHolder(this); transform.SetParent(m_currentSlot.transform); transform.position = m_currentSlot.transform.position; m_slotManager.CheckMerge(); m_targetSlot = null; }
void Constrct(AgentData agentData, NavMeshAgent navMeshAgent, SlotEnemy slotEnemy, BaseSlot slot) { _agentData = agentData; _navMeshAgent = navMeshAgent; _slotEnemy = slotEnemy; _slot = slot; _body = transform.GetChild(0); Assert.IsNotNull(_body, "_body != null"); }
public void Setup(BaseSlot slot) { if (m_element.m_icon != null) { if (m_image == null) { GetImage(); } m_image.sprite = m_element.m_icon; } m_startSlot = slot; Reset(); }
public static bool TryStackItem(this BaseSlot slot, IItem item) { var targetItem = ((StackableItem)slot.Content); var originItem = ((StackableItem)item); if (targetItem.CanStack(originItem.Quantity)) { targetItem.Stack(originItem.Quantity); slot.Refresh(); return(true); } return(false); }
private void CheckDragableItem(PointerEventData eventData) { if (ItemUtilities.TryGetSlot(eventData.pointerEnter, out var targetSlot)) { if (!targetSlot.IsEmpty) { DragItem?.Invoke(); m_selectedSlot = targetSlot; m_selectedItem = targetSlot.Content; m_selectedSlot.Remove(); EnableDragableIcon(eventData); } } }
public static bool IsStackableWith(this BaseSlot slot, IItem item) { if (!IsStackable(item)) { return(false); } if (slot.GetType() != typeof(ItemSlot)) { return(false); } var slotItem = slot.Content; return(item.Definition.Id == slotItem.Definition.Id); }
public override void OnDrag(PointerEventData eventData) { base.OnDrag(eventData); transform.position += (Vector3)eventData.delta; foreach (var slot in m_slotManager.GetMergeSlots()) { if (RectTransformUtility.RectangleContainsScreenPoint(slot.m_rect, Input.mousePosition)) { if (slot.IsEmpty()) { m_targetSlot = slot; break; } m_targetSlot = null; } } }
public override void OnPointerUp(PointerEventData eventData) { base.OnPointerUp(eventData); hit2D = Physics2D.Raycast(eventData.position, Vector2.down, 1, 1 << boxSlotLayer); hit2DSelf = Physics2D.Raycast(eventData.position, Vector2.down, 1, 1 << inventorySlotLayer); if (hit2D.collider != null) { BaseSlot otherSlot = hit2D.collider.GetComponent <BoxSlot>(); //空 if (otherSlot.storedItem == null) { BoxManager.Instance.StoreItemByType(storedItem, storedAmount, false); BoxUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount); //删除原容器原数据 InventoryManager.Instance.RemoveItemByID(storedItem.ID, storedAmount, false); InventoryUI.Instance.RemoveUIByIndex(slotIndex); } //id相同 else if (otherSlot.storedItem.ID == storedItem.ID) { //赋予新容器数据 BoxManager.Instance.StoreItemByType(storedItem, storedAmount, false); BoxUI.Instance.AddUIByIndex(storedAmount, otherSlot.slotIndex); //删除原容器原数据 InventoryManager.Instance.RemoveItemByID(storedItem.ID, storedAmount, false); InventoryUI.Instance.RemoveUIByIndex(slotIndex); } //不同 else if (otherSlot.storedItem.ID != storedItem.ID) { BaseItem tempItem = otherSlot.storedItem; int tempCount = otherSlot.storedAmount; BoxManager.Instance.StoreItemByType(storedItem, storedAmount, false); BoxManager.Instance.RemoveItemById(tempItem.ID, tempCount, false); BoxUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount); InventoryManager.Instance.RemoveItemByID(storedItem.ID, storedAmount, false); InventoryManager.Instance.AddItemByType(tempItem, tempCount, false); InventoryUI.Instance.SetUIBySlotIndex(slotIndex, tempItem, tempCount); } } else if (hit2DSelf.collider != null && isDrag) { BaseSlot otherSlot = hit2DSelf.collider.GetComponent <InventorySlot>(); //空 if (otherSlot.storedItem == null) { InventoryUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount); InventoryUI.Instance.RemoveUIByIndex(slotIndex); } else if (otherSlot.storedItem == storedItem) { //回到原格 icon.color = new Color(1, 1, 1, 1); icon.sprite = storedSprite; amountText.text = storedAmount.ToString(); } //id相同 else if (otherSlot.storedItem.ID == storedItem.ID) { InventoryUI.Instance.AddUIByIndex(storedAmount, otherSlot.slotIndex); InventoryUI.Instance.RemoveUIByIndex(slotIndex); } //不同 else if (otherSlot.storedItem.ID != storedItem.ID) { BaseItem tempItem = otherSlot.storedItem; int tempCount = otherSlot.storedAmount; InventoryUI.Instance.SetUIBySlotIndex(otherSlot.slotIndex, storedItem, storedAmount); InventoryUI.Instance.SetUIBySlotIndex(slotIndex, tempItem, tempCount); } } else { if (storedItem == null) { return; } //拖动失败,格子恢复 icon.color = new Color(1, 1, 1, 1); icon.sprite = storedSprite; amountText.text = storedAmount.ToString(); } isDrag = false; }
public void OnPointerExit(GameObject gbj) { m_previewPopup.Hide(); m_currentTarget = null; }
private void ResetSelection() { DisableDragableIcon(); m_selectedItem = null; m_selectedSlot = null; }
public void EnablePreview() { m_enablePreview = true; m_currentTarget = null; m_hoverTrigger.Reset(); }
public void DisablePreview() { m_enablePreview = false; m_currentTarget = null; m_previewPopup.Hide(); }
public static bool TryGetSlot(GameObject gbj, out BaseSlot targetSlot) { targetSlot = gbj != null?gbj.GetComponent <BaseSlot>() : null; return(targetSlot != null); }
public void PlaceResult() { GetSlotManager(); m_targetSlot = m_slotManager.GetResultSlot(); Place(); }