diff --git a/Assets/Scenes/House.unity b/Assets/Scenes/House.unity index e7067a0f..4c87e71c 100644 --- a/Assets/Scenes/House.unity +++ b/Assets/Scenes/House.unity @@ -3180,7 +3180,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _interactionPoint: {fileID: 916166178} - _radialMenuPrefab: {fileID: 0} + _menuActions: [] _jobPositionsSO: {fileID: 11400000, guid: f0d3baaabf19f9a4a80e227316362d84, type: 2} --- !u!1 &1494404565 stripped GameObject: @@ -8849,6 +8849,17 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 450881187641886026, guid: d6715af7517ca9f4297f69a69682ec47, + type: 3} + propertyPath: _menuActions.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 450881187641886026, guid: d6715af7517ca9f4297f69a69682ec47, + type: 3} + propertyPath: '_menuActions.Array.data[0]' + value: + objectReference: {fileID: 11400000, guid: a45b050119410f149b0a257098cdaec5, + type: 2} - target: {fileID: 2275578565027080912, guid: d6715af7517ca9f4297f69a69682ec47, type: 3} propertyPath: m_LocalPosition.x @@ -9761,7 +9772,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: _interactionPoint: {fileID: 562878396817531481} - _radialMenuPrefab: {fileID: 0} + _menuActions: [] _particleSystem: {fileID: 613891113367342020} --- !u!114 &3011613922045202185 MonoBehaviour: diff --git a/Assets/Scripts/Helpers/Enums.cs b/Assets/Scripts/Helpers/Enums.cs index bda16608..aa775c6e 100644 --- a/Assets/Scripts/Helpers/Enums.cs +++ b/Assets/Scripts/Helpers/Enums.cs @@ -1,13 +1,13 @@ using System.Runtime.Serialization; -public enum JobPositions { Unemployed,Cashier, Clerk, ManagerAssistaint, Manager }; -public enum EducationSkill { NotEducated, School, HightSchool,University}; - -public enum PlayerStates { Awake, Sleeping, Eating,Working } +public enum JobPositions { Unemployed, Cashier, Clerk, ManagerAssistaint, Manager }; +public enum EducationSkill { NotEducated, School, HightSchool, University }; +public enum ItemsMenuActions { Cancel, Sleep, Eat, Put, Take } +public enum PlayerStates { Awake, Sleeping, Eating, Working } public enum StatsId { Money, RentAccount, Food, Energy, BankAccount, Job, } public enum Tasks { Move, Interact, Rotate }; public enum TaskStatus { Waiting, InProgress, Complete }; -public enum InteractionStatus { Complete, WaitForChoose, InProgress, FarFromPlayer }; +public enum InteractionStatus { Complete, WaitForChoose, InProgress, FarFromPlayer }; public enum AnimationStates { [EnumMember(Value = "Idle")] diff --git a/Assets/Scripts/InteractableObjects/BaseInteractableObject.cs b/Assets/Scripts/InteractableObjects/BaseInteractableObject.cs index c1af494e..69a89001 100644 --- a/Assets/Scripts/InteractableObjects/BaseInteractableObject.cs +++ b/Assets/Scripts/InteractableObjects/BaseInteractableObject.cs @@ -1,5 +1,5 @@ -using System; -using System.Collections; +using System.Collections.Generic; +using System.Linq; using UnityEngine; public class BaseInteractableObject : MonoBehaviour @@ -7,16 +7,17 @@ public class BaseInteractableObject : MonoBehaviour [SerializeField] public Transform _interactionPoint; [SerializeField] - public PopupItemMenu _radialMenuPrefab; + public List _menuActions; + protected Player _player; private InteractionStatus _currentStatus=InteractionStatus.Complete; - + public InteractionStatus Interact(Player player) { _player=player; - if (_currentStatus == InteractionStatus.Complete) + if (_currentStatus == InteractionStatus.Complete && _menuActions.Any()) { - UIManager.Instance.ShowItemsMenu(PopupMenuCallback); + UIManager.Instance.ShowItemsMenu(_menuActions,PopupMenuCallback); _currentStatus = InteractionStatus.WaitForChoose; } else if(_currentStatus!=InteractionStatus.WaitForChoose) diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenu.meta b/Assets/Scripts/ScriptableObjects/ItemsMenu.meta new file mode 100644 index 00000000..e474fa48 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenu.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2b38883be6b7fe74986201d6ade1f808 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenu/Cancel.asset b/Assets/Scripts/ScriptableObjects/ItemsMenu/Cancel.asset new file mode 100644 index 00000000..5724214a --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenu/Cancel.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 844a7de838b26b349aac023a7c8057d6, type: 3} + m_Name: Cancel + m_EditorClassIdentifier: + ActionName: Cancel + Action: 0 diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenu/Cancel.asset.meta b/Assets/Scripts/ScriptableObjects/ItemsMenu/Cancel.asset.meta new file mode 100644 index 00000000..573ea554 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenu/Cancel.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 37a5860278daf904b976c61632085b3d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenu/Sleep.asset b/Assets/Scripts/ScriptableObjects/ItemsMenu/Sleep.asset new file mode 100644 index 00000000..25bbc24c --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenu/Sleep.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 844a7de838b26b349aac023a7c8057d6, type: 3} + m_Name: Sleep + m_EditorClassIdentifier: + ActionName: Sleep + Action: 1 diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenu/Sleep.asset.meta b/Assets/Scripts/ScriptableObjects/ItemsMenu/Sleep.asset.meta new file mode 100644 index 00000000..d6e2b5bd --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenu/Sleep.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a45b050119410f149b0a257098cdaec5 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenuActionSO.cs b/Assets/Scripts/ScriptableObjects/ItemsMenuActionSO.cs new file mode 100644 index 00000000..af00e6b9 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenuActionSO.cs @@ -0,0 +1,8 @@ +using UnityEngine; + +[CreateAssetMenu()] +public class ItemsMenuActionSO : ScriptableObject +{ + public string ActionName; + public ItemsMenuActions Action; +} diff --git a/Assets/Scripts/ScriptableObjects/ItemsMenuActionSO.cs.meta b/Assets/Scripts/ScriptableObjects/ItemsMenuActionSO.cs.meta new file mode 100644 index 00000000..c17c64ab --- /dev/null +++ b/Assets/Scripts/ScriptableObjects/ItemsMenuActionSO.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 844a7de838b26b349aac023a7c8057d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UIElements/PopupItemMenu.cs b/Assets/Scripts/UIElements/PopupItemMenu.cs index 15b9b02c..95e6b378 100644 --- a/Assets/Scripts/UIElements/PopupItemMenu.cs +++ b/Assets/Scripts/UIElements/PopupItemMenu.cs @@ -1,5 +1,7 @@ using System; using System.Collections; +using System.Collections.Generic; +using TMPro; using UnityEngine; using UnityEngine.UI; @@ -8,12 +10,19 @@ public class PopupItemMenu : MonoBehaviour [SerializeField] private Button _popupMenuItemButtonPrefab; - public void ShowButtons(Action menuButtonClick) + public void ShowButtons(List actions, Action menuButtonClick) { - var button=Instantiate(_popupMenuItemButtonPrefab) as Button; - button.transform.SetParent(transform,false); + var button = Instantiate(_popupMenuItemButtonPrefab) as Button; + button.transform.SetParent(transform, false); button.transform.localPosition = new Vector3(0, 100f, 0); + var textMeshPro = button.GetComponent(); + if (textMeshPro != null) + { + textMeshPro.text = actions[0].ActionName; + } + + button.onClick.AddListener(() => { menuButtonClick?.Invoke(); diff --git a/Assets/Scripts/UIElements/UIManager.cs b/Assets/Scripts/UIElements/UIManager.cs index 8e478eed..0aa0a6f5 100644 --- a/Assets/Scripts/UIElements/UIManager.cs +++ b/Assets/Scripts/UIElements/UIManager.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using UnityEngine; public class UIManager : MonoBehaviour @@ -40,12 +41,12 @@ public class UIManager : MonoBehaviour jobSelector.ShowJobSelectionDialog(title, onCancel, onConfirm); } - public void ShowItemsMenu(Action itemsMenuCallback) + public void ShowItemsMenu(List actions,Action itemsMenuCallback) { var popupMenu = Instantiate(_itemPopupMenuPrefab) as PopupItemMenu; popupMenu.transform.transform.SetParent(transform, false); popupMenu.transform.position = Input.mousePosition; - popupMenu.ShowButtons(itemsMenuCallback); + popupMenu.ShowButtons(actions,itemsMenuCallback); } public void Freeze()