diff --git a/MrBigsock/Assets/Code/PlayerController.cs b/MrBigsock/Assets/Code/PlayerController.cs index f7dd925ba12e9bf838e208df8071e46bba7104ab..12cbf3dae90d1cc36cd829bb2a432e60e744eee1 100644 --- a/MrBigsock/Assets/Code/PlayerController.cs +++ b/MrBigsock/Assets/Code/PlayerController.cs @@ -72,7 +72,7 @@ namespace BigSock { TryPickUpItem(ItemService.SINGLETON.Get(101)); */ //var tmp = PrefabService.SINGLETON; - var tmp = SpriteService.SINGLETON; + //var tmp = SpriteService.SINGLETON; _testAttack = (IAttack) AbilityService.SINGLETON.Get(101); _testAttack2 = (IAttack) AbilityService.SINGLETON.Get(102); diff --git a/MrBigsock/Assets/Code/UI/InventoryPanel.cs b/MrBigsock/Assets/Code/UI/InventoryPanel.cs index 68c713b7b9a191fe8d4707c43871f5fac823c3ed..958473c7cd15b8fe6cd48979f7b6398e6ded05ed 100644 --- a/MrBigsock/Assets/Code/UI/InventoryPanel.cs +++ b/MrBigsock/Assets/Code/UI/InventoryPanel.cs @@ -7,107 +7,99 @@ using UnityEngine.UI; namespace BigSock.UI { - public class InventoryPanel : MonoBehaviour - { - public PlayerController player; - public const string INVSLOT = "UI/Inventoryslot"; - public const string ITEM = "UI/Item"; + public class InventoryPanel : MonoBehaviour + { + public PlayerController player; + public const string INVSLOT = "UI/Inventoryslot"; + public const string ITEM = "UI/Item"; - public GridLayoutGroup gridBackPack; - public GridLayoutGroup gridTools; - public GridLayoutGroup gridAccessory; - public GridLayoutGroup gridEquipment; + public GridLayoutGroup gridBackPack; + public GridLayoutGroup gridTools; + public GridLayoutGroup gridAccessory; + public GridLayoutGroup gridEquipment; - //var bullet = PrefabService.SINGLETON.Instance(PROJECTILE_NAME, actor.transform.position); - //var bulletScript = bullet.GetComponent<AttackMovement>(); + public void Start() { + GenerateInv(); + } - public void Start() - { - GenerateInv(); - } - public void GenerateInv() - { - var inventory = player.Inventory; - - - for (int i = 0; i < inventory.Backpack.Count; ++i) - { - var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridBackPack.transform); - var invScript = invSlot.GetComponent<ItemSlot>(); - invScript.inventory = inventory; - invScript.inventoryType = InventoryType.Backpack; - invScript.position = i; - var item = inventory.Backpack[i]; - if (item != null) - { - var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); - var itemScript = itemPref.GetComponent<ItemPref>(); - itemScript.item = item; - itemScript.itemSlot = invScript; - invScript.item = itemScript; - itemScript.transform.position = invScript.transform.position; - - } - } - for (int i = 0; i < inventory.Tools.Count; ++i) - { - var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridTools.transform); - var invScript = invSlot.GetComponent<ItemSlot>(); - invScript.inventory = inventory; - invScript.inventoryType = InventoryType.Tool; - invScript.position = i; - var item = inventory.Tools[i]; - if (item != null) - { - var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); - var itemScript = itemPref.GetComponent<ItemPref>(); - itemScript.item = item; - itemScript.itemSlot = invScript; - invScript.item = itemScript; - itemScript.transform.position = invScript.transform.position; + public void GenerateInv() + { + var inventory = player.Inventory; + + for (int i = 0; i < inventory.Backpack.Count; ++i) + { + var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridBackPack.transform); + var invScript = invSlot.GetComponent<ItemSlot>(); + invScript.inventory = inventory; + invScript.inventoryType = InventoryType.Backpack; + invScript.position = i; + var item = inventory.Backpack[i]; + if (item != null) + { + var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); + var itemScript = itemPref.GetComponent<ItemPref>(); + itemScript.item = item; + itemScript.itemSlot = invScript; + invScript.item = itemScript; + itemScript.transform.position = invScript.transform.position; + } + } + for (int i = 0; i < inventory.Tools.Count; ++i) + { + var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridTools.transform); + var invScript = invSlot.GetComponent<ItemSlot>(); + invScript.inventory = inventory; + invScript.inventoryType = InventoryType.Tool; + invScript.position = i; + var item = inventory.Tools[i]; + if (item != null) + { + var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); + var itemScript = itemPref.GetComponent<ItemPref>(); + itemScript.item = item; + itemScript.itemSlot = invScript; + invScript.item = itemScript; + itemScript.transform.position = invScript.transform.position; + } + } + for (int i = 0; i < inventory.Equipment.Count; ++i) + { + var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridEquipment.transform); + var invScript = invSlot.GetComponent<ItemSlot>(); + invScript.inventory = inventory; + invScript.inventoryType = InventoryType.Equipment; + invScript.position = i; + var item = inventory.Equipment[i]; + if (item != null) + { + var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); + var itemScript = itemPref.GetComponent<ItemPref>(); + itemScript.item = item; + itemScript.itemSlot = invScript; + invScript.item = itemScript; + itemScript.transform.position = invScript.transform.position; + } + } + for (int i = 0; i < inventory.Accessories.Count; ++i) + { + var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridAccessory.transform); + var invScript = invSlot.GetComponent<ItemSlot>(); + invScript.inventory = inventory; + invScript.inventoryType = InventoryType.Accessory; + invScript.position = i; + var item = inventory.Accessories[i]; + if (item != null) + { + var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); + var itemScript = itemPref.GetComponent<ItemPref>(); + itemScript.item = item; + itemScript.itemSlot = invScript; + invScript.item = itemScript; + itemScript.transform.position = invScript.transform.position; + } + } - } - } - for (int i = 0; i < inventory.Equipment.Count; ++i) - { - var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridEquipment.transform); - var invScript = invSlot.GetComponent<ItemSlot>(); - invScript.inventory = inventory; - invScript.inventoryType = InventoryType.Equipment; - invScript.position = i; - var item = inventory.Equipment[i]; - if (item != null) - { - var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); - var itemScript = itemPref.GetComponent<ItemPref>(); - itemScript.item = item; - itemScript.itemSlot = invScript; - invScript.item = itemScript; - itemScript.transform.position = invScript.transform.position; - - } - } - for (int i = 0; i < inventory.Accessories.Count; ++i) - { - var invSlot = PrefabService.SINGLETON.Instance(INVSLOT, gridAccessory.transform); - var invScript = invSlot.GetComponent<ItemSlot>(); - invScript.inventory = inventory; - invScript.inventoryType = InventoryType.Accessory; - invScript.position = i; - var item = inventory.Accessories[i]; - if (item != null) - { - var itemPref = PrefabService.SINGLETON.Instance(ITEM, transform); - var itemScript = itemPref.GetComponent<ItemPref>(); - itemScript.item = item; - itemScript.itemSlot = invScript; - invScript.item = itemScript; - itemScript.transform.position = invScript.transform.position; - - } - } - - } - } + } + } } diff --git a/MrBigsock/Assets/Code/UI/ItemPref.cs b/MrBigsock/Assets/Code/UI/ItemPref.cs index 4887c581573e9a443add5f17314ce8d8eab3e6a1..d918cc5617a6fd6fc7aa89876138918cc9dbfb64 100644 --- a/MrBigsock/Assets/Code/UI/ItemPref.cs +++ b/MrBigsock/Assets/Code/UI/ItemPref.cs @@ -27,7 +27,6 @@ namespace BigSock.UI { rectTransform = GetComponent<RectTransform>(); canvasGroup = GetComponent<CanvasGroup>(); - } public void OnBeginDrag(PointerEventData eventData) { diff --git a/MrBigsock/Assets/Code/UI/ItemSlot.cs b/MrBigsock/Assets/Code/UI/ItemSlot.cs index 2acba8ea83437225efd1fec0640631c9b2e9e260..d4cbdcd1dc3120f3a1e7e43423c6088fc9f7dc15 100644 --- a/MrBigsock/Assets/Code/UI/ItemSlot.cs +++ b/MrBigsock/Assets/Code/UI/ItemSlot.cs @@ -7,33 +7,55 @@ using BigSock.Item; namespace BigSock.UI { - public class ItemSlot : MonoBehaviour, IDropHandler - { - public InventoryType inventoryType; - public int position; - public ItemPref item; - public Inventory inventory; - public void OnDrop(PointerEventData eventData) - { - if (eventData.pointerDrag != null) - { - //eventData.pointerDrag.GetComponent<DragDrop>()?.position = null; - var itemPref = eventData.pointerDrag.GetComponent<ItemPref>(); - if (itemPref != null) - { - var didMove = inventory.MoveItem(itemPref.item, itemPref.itemSlot.inventoryType, - itemPref.itemSlot.position, inventoryType, position); - if (didMove) - { - itemPref.itemSlot.item = null; - itemPref.itemSlot = this; - item = itemPref; - eventData.pointerDrag.transform.position = transform.position; - itemPref.position = null; + public class ItemSlot : MonoBehaviour, IDropHandler + { + public InventoryType inventoryType; + public int position; + public ItemPref item; + public Inventory inventory; - } - } - } - } - } + bool firstRan = false; + + public void Start() { + transform.hasChanged = false; + if(transform.hasChanged) { + //Debug.Log($"[ItemSlot.Start({GetInstanceID()})] {transform.position}"); + + } + } + + public void Update() { + // If it hasn't ran before, and the position has changed, update the ItemPref. + if(!firstRan && transform.hasChanged) { + transform.hasChanged = false; + firstRan = true; + + if(item != null) { + //Debug.Log($"[ItemSlot.Update({GetInstanceID()})] Item: {item?.transform?.position}, Slot: {transform.position}"); + item.transform.position = transform.position; + } + } + } + + public void OnDrop(PointerEventData eventData) + { + if (eventData.pointerDrag != null) + { + var itemPref = eventData.pointerDrag.GetComponent<ItemPref>(); + if (itemPref != null) + { + var didMove = inventory.MoveItem(itemPref.item, itemPref.itemSlot.inventoryType, + itemPref.itemSlot.position, inventoryType, position); + if (didMove) + { + itemPref.itemSlot.item = null; + itemPref.itemSlot = this; + item = itemPref; + eventData.pointerDrag.transform.position = transform.position; + itemPref.position = null; + } + } + } + } + } }