fix popup item menu and refactor ui system
This commit is contained in:
@@ -39,7 +39,7 @@ public abstract class BaseInteractableObject : MonoBehaviour
|
||||
{
|
||||
case InteractionStatus.None:
|
||||
var filteredActions = _menuActions.Where(x => x.Value.IsEnabled).ToDictionary(i => i.Key, i => i.Value) ;
|
||||
UIManager.Instance.ShowItemsMenu(filteredActions, PopupMenuCallback);
|
||||
GameManager.Instance.UI.ShowItemPopupMenu(filteredActions, PopupMenuCallback);
|
||||
_currentStatus = InteractionStatus.WaitForChoose;
|
||||
break;
|
||||
case InteractionStatus.Complete:
|
||||
|
||||
@@ -15,7 +15,7 @@ public class Bed : BaseInteractableObject
|
||||
|
||||
private void OnAnimationFinished()
|
||||
{
|
||||
UIManager.Instance.ShowTimeSliderDialog("Go to sleep", "Sleep until", OnCancel, OnConfirm);
|
||||
GameManager.Instance.UI.ShowTimeSliderDialog("Go to sleep", "Sleep until", OnCancel, OnConfirm);
|
||||
}
|
||||
private void OnCancel()
|
||||
{
|
||||
|
||||
@@ -42,7 +42,7 @@ public class CashierDesk : BaseInteractableObject
|
||||
BuyItems();
|
||||
break;
|
||||
case RadialMenuActions.Work:
|
||||
UIManager.Instance.ShowTimeSliderDialog($"Work", $"Work as {_playerJob.Description}", OnCancel, OnConfirm);
|
||||
GameManager.Instance.UI.ShowTimeSliderDialog($"Work", $"Work as {_playerJob.Description}", OnCancel, OnConfirm);
|
||||
break;
|
||||
default:
|
||||
print("unknown action");
|
||||
|
||||
@@ -12,7 +12,7 @@ public class OfficeTable : BaseInteractableObject
|
||||
|
||||
protected override void InteractAction(RadialMenuActions interactAction)
|
||||
{
|
||||
UIManager.Instance.ShowJobSelectionDialog("Job agency", null, OnConfirm);
|
||||
GameManager.Instance.UI.ShowJobSelectionDialog("Job agency", null, OnConfirm);
|
||||
}
|
||||
|
||||
private void OnConfirm(JobInfoSO selectedJob)
|
||||
|
||||
@@ -11,13 +11,11 @@ public class SelectedVisual : MonoBehaviour
|
||||
private void Start()
|
||||
{
|
||||
InGameMouseHandler.OnSelectedObjectChanged += Mouse_OnSelectedObjectChanged;
|
||||
print($"{_selectedObject.name} is subscribed to OnSelectedObjectChanged");
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
InGameMouseHandler.OnSelectedObjectChanged -= Mouse_OnSelectedObjectChanged;
|
||||
print($"{_selectedObject.name} is Unsubscribed to OnSelectedObjectChanged");
|
||||
}
|
||||
|
||||
private void Mouse_OnSelectedObjectChanged(object sender, OnSelectedObjectChangedEventArgs e)
|
||||
|
||||
@@ -4,6 +4,9 @@ public class GameManager : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private CameraSystem _cameraSystem;
|
||||
[SerializeField]
|
||||
private UISystem _uiSystem;
|
||||
|
||||
|
||||
private bool _isPause;
|
||||
private InputSystem _inputSystem;
|
||||
@@ -14,6 +17,8 @@ public class GameManager : MonoBehaviour
|
||||
public InputSystem Input => _inputSystem;
|
||||
public SceneManager Scene => _sceneManager;
|
||||
public TimeSystem Time => _timeSystem;
|
||||
public UISystem UI => _uiSystem;
|
||||
|
||||
public static GameManager Instance { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
|
||||
@@ -39,6 +39,8 @@ public class InGameMouseHandler : UnityEngine.Object
|
||||
{
|
||||
if (!EventSystem.current.IsPointerOverGameObject())
|
||||
{
|
||||
GameManager.Instance.UI.ClosePopupMenu();
|
||||
|
||||
if (_selectedObject != null)
|
||||
{
|
||||
_waypointVisual.SetWaypoint(_selectedObject._interactionPoint.position);
|
||||
@@ -58,26 +60,16 @@ public class InGameMouseHandler : UnityEngine.Object
|
||||
public void Update()
|
||||
{
|
||||
_ray = _camera.ScreenPointToRay(Mouse.current.position.ReadValue());
|
||||
//if(EventSystem.current.IsPointerOverGameObject())
|
||||
//{
|
||||
// return;
|
||||
//}
|
||||
//hide rounded menu
|
||||
if (Physics.Raycast(_ray, out var mouseRaycastHit, 100f, _selectableLayerMask))
|
||||
{
|
||||
mouseRaycastHit.transform.TryGetComponent(out _selectedObject);
|
||||
if (_selectedObject != null)
|
||||
{
|
||||
OnSelectedObjectChanged?.Invoke(this, new OnSelectedObjectChangedEventArgs() { SelectedObject = _selectedObject });
|
||||
}
|
||||
else
|
||||
{
|
||||
OnSelectedObjectChanged?.Invoke(this, new OnSelectedObjectChangedEventArgs() { SelectedObject = null });
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
OnSelectedObjectChanged?.Invoke(this, new OnSelectedObjectChangedEventArgs() { SelectedObject = null });
|
||||
}
|
||||
_selectedObject = null;
|
||||
OnSelectedObjectChanged?.Invoke(this, new OnSelectedObjectChangedEventArgs() { SelectedObject = null });
|
||||
}
|
||||
}
|
||||
@@ -31,7 +31,7 @@ public class JobSelectorUI : MonoBehaviour
|
||||
|
||||
public void ShowJobSelectionDialog(string title, Action onCancel, Action<JobInfoSO> onConfirm)
|
||||
{
|
||||
UIManager.Instance.Freeze();
|
||||
GameManager.Instance.UI.Freeze();
|
||||
|
||||
gameObject.SetActive(true);
|
||||
_title.text = title;
|
||||
@@ -95,7 +95,7 @@ public class JobSelectorUI : MonoBehaviour
|
||||
|
||||
private void CloseDialog()
|
||||
{
|
||||
UIManager.Instance.Unfreeze();
|
||||
GameManager.Instance.UI.Unfreeze();
|
||||
Destroy(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,22 +42,22 @@ public class RadialMenuItem : MonoBehaviour
|
||||
{
|
||||
b.onClick.AddListener(() =>
|
||||
{
|
||||
CloseDialog();
|
||||
Hide();
|
||||
Close();
|
||||
_menuButtonClick?.Invoke(_actions.ElementAt(buttonNumber).Key);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private void CloseDialog()
|
||||
public void CancelAndClose()
|
||||
{
|
||||
UIManager.Instance.Unfreeze();
|
||||
Destroy(_popupMenu);
|
||||
Destroy(this);
|
||||
Close();
|
||||
_menuButtonClick?.Invoke(RadialMenuActions.Cancel);
|
||||
}
|
||||
|
||||
private void Hide()
|
||||
private void Close()
|
||||
{
|
||||
GameManager.Instance.UI.Unfreeze();
|
||||
Destroy(this);
|
||||
gameObject.SetActive(false);
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public class TimeSliderUI : MonoBehaviour
|
||||
{
|
||||
GameManager.Instance.Time.OnFastForwardEnd += CloseDialog;
|
||||
GameManager.Instance.Pause();
|
||||
UIManager.Instance.Freeze();
|
||||
GameManager.Instance.UI.Freeze();
|
||||
|
||||
gameObject.SetActive(true);
|
||||
_title.text = title;
|
||||
@@ -46,7 +46,7 @@ public class TimeSliderUI : MonoBehaviour
|
||||
|
||||
private void CloseDialog()
|
||||
{
|
||||
UIManager.Instance.Unfreeze();
|
||||
GameManager.Instance.UI.Unfreeze();
|
||||
Destroy(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class UIManager : MonoBehaviour
|
||||
public class UISystem : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private TimeSliderUI _timeSliderPrefab;
|
||||
@@ -13,16 +13,7 @@ public class UIManager : MonoBehaviour
|
||||
[SerializeField]
|
||||
private RadialMenuItem _radialMenuItemPrefab;
|
||||
|
||||
public static UIManager Instance { get; private set; }
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (Instance != null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Instance = this;
|
||||
}
|
||||
RadialMenuItem _popupMenu;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
@@ -41,14 +32,21 @@ public class UIManager : MonoBehaviour
|
||||
jobSelector.ShowJobSelectionDialog(title, onCancel, onConfirm);
|
||||
}
|
||||
|
||||
public void ShowItemsMenu(Dictionary<RadialMenuActions, RadialMenuActionDescription> actions,Action<RadialMenuActions> itemsMenuCallback)
|
||||
public void ShowItemPopupMenu(Dictionary<RadialMenuActions, RadialMenuActionDescription> actions,Action<RadialMenuActions> itemsMenuCallback)
|
||||
{
|
||||
var popupMenu = Instantiate(_radialMenuItemPrefab);
|
||||
popupMenu.transform.transform.SetParent(transform, false);
|
||||
popupMenu.transform.position = Input.mousePosition;
|
||||
popupMenu.ShowButtons(popupMenu, actions,itemsMenuCallback);
|
||||
_popupMenu = Instantiate(_radialMenuItemPrefab);
|
||||
_popupMenu.transform.transform.SetParent(transform, false);
|
||||
_popupMenu.transform.position = Input.mousePosition;
|
||||
_popupMenu.ShowButtons(_popupMenu, actions,itemsMenuCallback);
|
||||
}
|
||||
|
||||
public void ClosePopupMenu()
|
||||
{
|
||||
if (_popupMenu != null)
|
||||
{
|
||||
_popupMenu.CancelAndClose();
|
||||
}
|
||||
}
|
||||
public void Freeze()
|
||||
{
|
||||
_blurOverlay.SetActive(true);
|
||||
@@ -58,9 +56,4 @@ public class UIManager : MonoBehaviour
|
||||
{
|
||||
_blurOverlay.SetActive(false);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user