diff --git a/Assets/Scenes/TestRoom.unity b/Assets/Scenes/TestRoom.unity index ebb37e36..b7f63990 100644 --- a/Assets/Scenes/TestRoom.unity +++ b/Assets/Scenes/TestRoom.unity @@ -4273,7 +4273,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 963194225} - m_LocalRotation: {x: 0.54491353, y: -0.00000002885484, z: 0.000000018751987, w: 0.8384923} + m_LocalRotation: {x: 0.54491353, y: 0.00000002885483, z: -0.00000001875198, w: 0.8384923} m_LocalPosition: {x: 0.49909282, y: 3.5104675, z: -2.911191} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -12835,7 +12835,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2110938951} - m_LocalRotation: {x: 0.54491353, y: -0.00000002885484, z: 0.000000018751987, w: 0.8384923} + m_LocalRotation: {x: 0.54491353, y: 0.00000002885483, z: -0.00000001875198, w: 0.8384923} m_LocalPosition: {x: 0.49909282, y: 3.5104675, z: -2.911191} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 diff --git a/Assets/Scripts/InteractableObjects/CashierDesk.cs b/Assets/Scripts/InteractableObjects/CashierDesk.cs index 60069b12..e5608e46 100644 --- a/Assets/Scripts/InteractableObjects/CashierDesk.cs +++ b/Assets/Scripts/InteractableObjects/CashierDesk.cs @@ -1,4 +1,3 @@ -using System.Linq; using UnityEngine; public class CashierDesk : BaseInteractableObject @@ -6,17 +5,18 @@ public class CashierDesk : BaseInteractableObject [SerializeField] private ContainerSO _containerSO; + public override void Interact(Player player) { if (player.IsHoldContainerItem()) { var playerContainer = player.GetContainerItem(); - var playerItemsList = playerContainer.GetItems(); - player.ClearContainerItem(); - if (playerItemsList.Any()) + if (playerContainer.IsSalebleItems()) { + var playerItemsList = playerContainer.GetItems(); + player.ClearContainerItem(); float finalPrice = 0; - foreach (var item in playerItemsList) + foreach (SellableItemSO item in playerItemsList) { finalPrice += item.Price; } @@ -29,7 +29,14 @@ public class CashierDesk : BaseInteractableObject return; } player.Pay(finalPrice); - containerItem.AddItems(playerItemsList); + foreach (var item in playerContainer.GetItems()) + { + + var foodItemSO = ScriptableObject.CreateInstance(); + foodItemSO.ItemName = item.ItemName; + foodItemSO.Energy = 0; + containerItem.AddItem(foodItemSO); + } player.SetContainerItem(containerItem); } } diff --git a/Assets/Scripts/InteractableObjects/Fridge.cs b/Assets/Scripts/InteractableObjects/Fridge.cs index 09a3452c..62f8c978 100644 --- a/Assets/Scripts/InteractableObjects/Fridge.cs +++ b/Assets/Scripts/InteractableObjects/Fridge.cs @@ -9,23 +9,29 @@ public class Fridge : BaseInteractableObject [SerializeField] private ItemActionsUI _actionsMenu; - private List _foodObjects = new List(); + private List _foodObjects = new List(); public override void Interact(Player player) { + if (player.IsHoldContainerItem()) + { + var playerContainer = player.GetContainerItem(); + if (!playerContainer.IsSalebleItems()) + { + if (_foodObjects.Count + playerContainer.GetItems().Count <= _containerSO.MaxCapacity) + { + foreach (FoodItemSO item in playerContainer.GetItems()) + { + _foodObjects.Add(item); + } - //_actionsMenu.Show(_containerSO.Name, $"Max items:{_containerSO.MaxCapacity} current items: {_containerSO.CurrentItemsCount}"); - //if (player.IsHoldContainer()) - //{ - // if (_foodObjects.Count < _containerSO.MaxCapacity) - // { - // _foodObjects.Add(player.GetFoodObject()); - // player.ClearFoodObject(); - // Debug.Log($"Fridge have {_foodObjects.Count} pices of food"); - // } - // else - // Debug.Log($"Fridge is full"); - //} + player.ClearContainerItem(); + Debug.Log($"Fridge have {_foodObjects.Count} pices of food"); + } + else + Debug.Log($"Fridge is full"); + } + } //else //{ // //Eat menu diff --git a/Assets/Scripts/InteractableObjects/Items/ContainerItem.cs b/Assets/Scripts/InteractableObjects/Items/ContainerItem.cs index 75d1a2d2..5c803562 100644 --- a/Assets/Scripts/InteractableObjects/Items/ContainerItem.cs +++ b/Assets/Scripts/InteractableObjects/Items/ContainerItem.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using UnityEngine; public class ContainerItem : MonoBehaviour @@ -7,19 +8,14 @@ public class ContainerItem : MonoBehaviour private ContainerSO _containerSO; - private List _items; - - private void Start() - { - _items = new List(); - } + private List _items = new List(); public ContainerSO GetContainerObjectSO() { return _containerSO; } - public void AddItem(SellableItemSO item) + public void AddItem(BaseItemSO item) { if (_items.Count < _containerSO.MaxCapacity) { @@ -32,8 +28,22 @@ public class ContainerItem : MonoBehaviour } } - public List GetItems() + public List GetItems() { return _items; } + + public bool IsSalebleItems() + { + return _items.Any(x => x is SellableItemSO); + } + + public void AddItems(List playerItemsList) + { + foreach (var item in playerItemsList) + { + AddItem(item); + } + + } } diff --git a/Assets/Scripts/InteractableObjects/Items/FoodItem.cs b/Assets/Scripts/InteractableObjects/Items/FoodItem.cs index 5298ec27..3d44c401 100644 --- a/Assets/Scripts/InteractableObjects/Items/FoodItem.cs +++ b/Assets/Scripts/InteractableObjects/Items/FoodItem.cs @@ -1,5 +1,4 @@ -public class FoodItem +public class FoodItemSO : BaseItemSO { - public string Name { get; set; } public int Energy { get; set; } } diff --git a/Assets/Scripts/ScriptableObjects/BaseItemSO.cs b/Assets/Scripts/ScriptableObjects/BaseItemSO.cs new file mode 100644 index 00000000..28b1eb67 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/BaseItemSO.cs @@ -0,0 +1,7 @@ +using UnityEngine; + +public class BaseItemSO : ScriptableObject +{ + public string ItemName; + public Sprite Icon; +} diff --git a/Assets/Scripts/ScriptableObjects/BaseItemSO.cs.meta b/Assets/Scripts/ScriptableObjects/BaseItemSO.cs.meta new file mode 100644 index 00000000..0063a4ac --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/BaseItemSO.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76f6b12a84fd9e142b92cb523db68c4c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ScriptableObjects/SellableItemSO.cs b/Assets/Scripts/ScriptableObjects/SellableItemSO.cs index 5351e371..c047e6e4 100644 --- a/Assets/Scripts/ScriptableObjects/SellableItemSO.cs +++ b/Assets/Scripts/ScriptableObjects/SellableItemSO.cs @@ -1,10 +1,8 @@ using UnityEngine; [CreateAssetMenu()] -public class SellableItemSO : ScriptableObject +public class SellableItemSO : BaseItemSO { public Transform Prefab; - public string ItemName; public float Price; - public Sprite Icon; } diff --git a/Assets/Scripts/UIElements/ContainerItemsUI.cs b/Assets/Scripts/UIElements/ContainerItemsUI.cs index 683f1b71..6a5e4217 100644 --- a/Assets/Scripts/UIElements/ContainerItemsUI.cs +++ b/Assets/Scripts/UIElements/ContainerItemsUI.cs @@ -1,4 +1,3 @@ -using System.Linq; using UnityEngine; public class ContainerItemsUI : MonoBehaviour @@ -23,26 +22,37 @@ public class ContainerItemsUI : MonoBehaviour var playerContainer = Player.Instance.GetContainerItem(); _container.gameObject.SetActive(true); - if (playerContainer.GetItems().Any()) + if (playerContainer.IsSalebleItems()) { - foreach (Transform child in _itemsList) - { - if (child == _itemUITemplate) continue; - Destroy(child.gameObject); - } + ClearObject(); var playerItemsList = playerContainer.GetItems(); for (int count = 0; count < playerItemsList.Count; count++) { var itemUI = Instantiate(_itemUITemplate, _itemsList); itemUI.gameObject.SetActive(true); - itemUI.GetComponent().SetItem(playerItemsList[count]); + itemUI.GetComponent().SetItem((SellableItemSO)playerItemsList[count]); } } + else + { + ClearObject(); + _container.gameObject.SetActive(false); + } } else { + ClearObject(); _container.gameObject.SetActive(false); } } + + private void ClearObject() + { + foreach (Transform child in _itemsList) + { + if (child == _itemUITemplate) continue; + Destroy(child.gameObject); + } + } }