136 lines
5.8 KiB
C#
136 lines
5.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
|
|
public class EquipmentPanelController : DraggablePanelController
|
|
{
|
|
[SerializeField] protected GameObject _panelAdditionalSlotsContent;
|
|
|
|
protected override UIBaseManager<IndexValuePair<int, EquippableItem>> FetchUiManager()
|
|
{
|
|
return GameObject.FindObjectOfType<EquipmentUIManager>();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
AllowToUseItemInPanel = false;
|
|
Type = PanelTypeEnum.Shop;
|
|
}
|
|
|
|
public override void BuildPanelSlots()
|
|
{
|
|
InitSlotsList();
|
|
}
|
|
|
|
public void InitSlotsList()
|
|
{
|
|
_panelContent.transform.Find("equipment_slot_helmet").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelContent.transform.Find("equipment_slot_armor").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelContent.transform.Find("equipment_slot_weapon").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelContent.transform.Find("equipment_slot_boots").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelAdditionalSlotsContent.transform.Find("equipment_slot_ring_i").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelAdditionalSlotsContent.transform.Find("equipment_slot_necklace_i").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelAdditionalSlotsContent.transform.Find("equipment_slot_necklace_ii").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelAdditionalSlotsContent.transform.Find("equipment_slot_ring_ii").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
_panelAdditionalSlotsContent.transform.Find("equipment_slot_ring_iii").GetComponent<EquipmentSlot>()._PanelController = this;
|
|
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelContent.transform.Find("equipment_slot_helmet").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelContent.transform.Find("equipment_slot_armor").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelContent.transform.Find("equipment_slot_weapon").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelContent.transform.Find("equipment_slot_boots").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelAdditionalSlotsContent.transform.Find("equipment_slot_ring_i").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelAdditionalSlotsContent.transform.Find("equipment_slot_necklace_i").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelAdditionalSlotsContent.transform.Find("equipment_slot_necklace_ii").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelAdditionalSlotsContent.transform.Find("equipment_slot_ring_ii").GetComponent<EquipmentSlot>()));
|
|
ChildBoxList.Add(SetupDragAndDropToSlot(_panelAdditionalSlotsContent.transform.Find("equipment_slot_ring_iii").GetComponent<EquipmentSlot>()));
|
|
}
|
|
|
|
|
|
public override GameObject BuildSlot(int key, GameObject _parent) { throw new NotImplementedException(); }
|
|
|
|
|
|
// 2. Set up panel additn items to it
|
|
|
|
//public void SetUp - in parent
|
|
/// <summary>
|
|
/// elements: List<
|
|
/// IndexValuePair<
|
|
/// int: dropped slot number,
|
|
/// EquippableItem: dragged item
|
|
/// >
|
|
/// >
|
|
/// </summary>
|
|
/// <param name="elements"></param>
|
|
public override void BuildPanelContent(List<IndexValuePair<int, EquippableItem>> elements)
|
|
{
|
|
|
|
base.BuildPanelContent(elements);
|
|
|
|
foreach (IndexValuePair<int, EquippableItem> element in elements)
|
|
{
|
|
//Debug.Log($"key: {element.Key} - {(EquipmentPanelSlotsTypeEnum)element.Key}");
|
|
|
|
if (element.Value != null)
|
|
{
|
|
|
|
// slot type != element.key
|
|
// element.Key IS DROPPED SLOT number
|
|
// ChildBoxList order IS CONSTANT
|
|
// elements HAVE mixed order
|
|
|
|
|
|
// there is error - ChildBoxList.Where(slot => ((EquipmentSlot)slot).type == (EquipmentPanelSlotsTypeEnum)element.Key).ToList().ForEach(slot => slot.SetItem((EquippableItem)element.Value));
|
|
|
|
// FIX
|
|
ChildBoxList[element.Key].SetItem((EquippableItem)element.Value);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
public override void ClearSlots()
|
|
{
|
|
foreach (ItemSlot ChestSlot in ChildBoxList)
|
|
{
|
|
ChestSlot.ResetSlot();
|
|
}
|
|
}
|
|
|
|
public override void EndDrag(ItemSlot itemSlot)
|
|
{
|
|
if (!DraggedSlotController.Instance.IsDragged()) // if there was nothing dragged - ignore event
|
|
return;
|
|
|
|
DraggedSlotController.Instance.RemoveDraggedSlot();
|
|
|
|
if (!itemSlot.Item)
|
|
((ItemSlot)ChildBoxList.Where(slot => slot.Number == itemSlot.Number).First()).ResetSlot();
|
|
else
|
|
((ItemSlot)ChildBoxList.Where(slot => slot.Number == itemSlot.Number).First()).SetItem(itemSlot.Item);
|
|
|
|
|
|
var ChildBoxListCopy = new List<IndexValuePair<int, EquippableItem>>(ChildBoxList.Where(slot => slot.Item != null).Select(slot => new IndexValuePair<int, EquippableItem>(slot.Number, slot.Item)).ToList());
|
|
|
|
UiManager.RemoveAll();
|
|
|
|
foreach (IndexValuePair<int, EquippableItem> slot in ChildBoxListCopy)
|
|
{
|
|
if (slot.Value != null)
|
|
{
|
|
// Debug.Log($"Slot nr: {slot.Key} with item: {slot.Value}");
|
|
UiManager.Add(new IndexValuePair<int, EquippableItem>(slot.Key, slot.Value));
|
|
}
|
|
else
|
|
{
|
|
UiManager.Add(new IndexValuePair<int, EquippableItem>(slot.Key, null)); // ONLY DIFFERENCE BETWEEN UpdatePanelContent()
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|