private void BeginDrag(UISlot uiSlot) { if (uiSlot is BaseItemSlot) { BaseItemSlot itemSlot = uiSlot as BaseItemSlot; if (itemSlot.Item != null) { dragItemSlot = itemSlot; draggableIcon.sprite = itemSlot.Item.Icon; draggableIcon.transform.position = Input.mousePosition; draggableIcon.gameObject.SetActive(true); } } else if (uiSlot is BaseSkillSlot) { BaseSkillSlot skillSlot = uiSlot as BaseSkillSlot; if (skillSlot.Skill != null) { dragSkillSlot = skillSlot; draggableIcon.sprite = skillSlot.Skill.Icon; draggableIcon.transform.position = Input.mousePosition; draggableIcon.gameObject.SetActive(true); } } }
private void EventHelper(BaseSkillSlot skillSlot, Action <BaseSkillSlot> action) { if (action != null) { action(skillSlot); } }
static private SlotLevel GetLevel(BaseSkillSlot slot) { if (!slot.ParentBranch.ParentTree.BreakthroughSkill.TryAssign(out var breakthroughSlot)) { return(SlotLevel.Basic); } switch (slot.ParentBranch.Index.CompareTo(breakthroughSlot.ParentBranch.Index)) { case -1: return(SlotLevel.Basic); case 0: return(SlotLevel.Breakthrough); case +1: return(SlotLevel.Advanced); default: return(0); } }
private void Drop(UISlot dropUISlot) { if (dropUISlot is BaseItemSlot) { BaseItemSlot dropItemSlot = dropUISlot as BaseItemSlot; if (dragItemSlot == null) { return; } if (dropItemSlot.CanAddStack(dragItemSlot.Item)) { AddStacks(dropItemSlot); } else if (dropItemSlot.CanReceiveItem(dragItemSlot.Item) && dragItemSlot.CanReceiveItem(dropItemSlot.Item)) { SwapItems(dropItemSlot); } } else if (dropUISlot is BaseSkillSlot) { BaseSkillSlot dropSkillSlot = dropUISlot as BaseSkillSlot; if (dragSkillSlot == null) { return; } if (dropSkillSlot is UsableSkillSlot) { ActiveSkill holdSkill = dragSkillSlot.Skill as ActiveSkill; if (dragSkillSlot is UsableSkillSlot) { SkillWindow.RemoveSkill(holdSkill); if (dropSkillSlot.Skill) { SkillWindow.EquipSkill(dropSkillSlot.Skill as ActiveSkill, 0, dragSkillSlot as UsableSkillSlot); } } SkillWindow.EquipSkill(holdSkill, 0, dropUISlot as UsableSkillSlot); } } }
/// <summary> /// Internal use for setting a required slot. /// </summary> /// <param name="comp">The component that this SkillSlot is setting. Not the required slot.</param> public void SetRequiredSlot(BaseSkillSlot comp) { bool success = false; var reqrow = RequiredSkillSlot.x; var reqcol = RequiredSkillSlot.y; if (comp.transform.root.Find("Row" + reqrow) is Transform reqrowTrans && reqrowTrans.Find("Col" + reqcol) is Transform reqcolTrans) { var reqslot = reqcolTrans.GetComponent <BaseSkillSlot>(); if (reqslot) { At.SetField(comp, "m_requiredSkillSlot", reqslot); success = true; } } if (!success) { SL.Log("Could not set required slot. Maybe it's not set yet?"); } }
private void EndDrag(UISlot itemSlot) { dragItemSlot = null; dragSkillSlot = null; draggableIcon.gameObject.SetActive(false); }
// for creating a SkillSlot on a transform public static SkillSlot CreateSkillSlot(Transform row, string name, int refSkillID, int requiredMoney, BaseSkillSlot requiredSlot = null, bool isBreakthrough = false, int column = 1) { var slotObj = new GameObject(name); slotObj.transform.parent = row; var slot = slotObj.AddComponent <SkillSlot>(); At.SetValue(ResourcesPrefabManager.Instance.GetItemPrefab(refSkillID) as Skill, typeof(SkillSlot), slot, "m_skill"); At.SetValue(requiredMoney, typeof(SkillSlot), slot, "m_requiredMoney"); At.SetValue(column, typeof(BaseSkillSlot), slot as BaseSkillSlot, "m_columnIndex"); if (requiredSlot != null) { At.SetValue(requiredSlot, typeof(BaseSkillSlot), slot, "m_requiredSkillSlot"); } if (isBreakthrough) { slot.IsBreakthrough = true; } return(slot); }