133 lines
4.1 KiB
C#
133 lines
4.1 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using Unheimlich.Features.DetectiveBoard.Data;
|
|
|
|
namespace Unheimlich.Features.DetectiveBoard.UI
|
|
{
|
|
public class PostItNode : MonoBehaviour
|
|
{
|
|
[Header("UI References")]
|
|
[SerializeField] private RectTransform _rectTransform;
|
|
[SerializeField] private Image _background;
|
|
[SerializeField] private TextMeshProUGUI _titleText;
|
|
[SerializeField] private TextMeshProUGUI _descriptionText;
|
|
[SerializeField] private Image _iconImage;
|
|
[SerializeField] private Image _selectionOutline;
|
|
|
|
[Header("Effects")]
|
|
[SerializeField] private PostItScribbleEffect _scribbleEffect;
|
|
|
|
[Header("Connection Points")]
|
|
[SerializeField] private RectTransform _connectionPoint;
|
|
|
|
private ClueData _clueData;
|
|
private PostItNodeData _nodeData;
|
|
private bool _isEliminated;
|
|
private bool _isSelected;
|
|
private Color _originalColor;
|
|
|
|
public string NodeID => _clueData?.ClueID;
|
|
public RectTransform RectTransform => _rectTransform;
|
|
public RectTransform ConnectionPoint => _rectTransform;
|
|
public ClueData ClueData => _clueData;
|
|
public PostItNodeData NodeData => _nodeData;
|
|
public bool IsEliminated => _isEliminated;
|
|
public bool IsSelected => _isSelected;
|
|
|
|
private void Awake()
|
|
{
|
|
if (_rectTransform == null)
|
|
_rectTransform = GetComponent<RectTransform>();
|
|
|
|
if (_scribbleEffect == null)
|
|
_scribbleEffect = GetComponent<PostItScribbleEffect>();
|
|
|
|
if (_selectionOutline != null)
|
|
_selectionOutline.enabled = false;
|
|
}
|
|
|
|
public void Initialize(ClueData clueData, PostItNodeData nodeData)
|
|
{
|
|
_clueData = clueData;
|
|
_nodeData = nodeData;
|
|
|
|
if (_titleText != null)
|
|
_titleText.text = clueData.Title;
|
|
|
|
if (_descriptionText != null)
|
|
_descriptionText.text = clueData.Description;
|
|
|
|
if (_iconImage != null && clueData.Icon != null)
|
|
{
|
|
_iconImage.sprite = clueData.Icon;
|
|
_iconImage.enabled = true;
|
|
}
|
|
else if (_iconImage != null)
|
|
{
|
|
_iconImage.enabled = false;
|
|
}
|
|
|
|
if (_background != null)
|
|
{
|
|
_originalColor = clueData.NodeColor;
|
|
_background.color = _originalColor;
|
|
}
|
|
|
|
SetPosition(nodeData.Position);
|
|
SetEliminated(nodeData.IsEliminated);
|
|
}
|
|
|
|
public void SetPosition(Vector2 position)
|
|
{
|
|
if (_rectTransform != null)
|
|
{
|
|
_rectTransform.anchoredPosition = position;
|
|
if (_nodeData != null)
|
|
_nodeData.Position = position;
|
|
}
|
|
}
|
|
|
|
public void SetRotation(float rotation)
|
|
{
|
|
if (_rectTransform != null)
|
|
{
|
|
_rectTransform.localRotation = Quaternion.Euler(0, 0, rotation);
|
|
if (_nodeData != null)
|
|
_nodeData.Rotation = rotation;
|
|
}
|
|
}
|
|
|
|
public float GetRotation()
|
|
{
|
|
return _rectTransform != null ? _rectTransform.localEulerAngles.z : 0f;
|
|
}
|
|
|
|
public void SetEliminated(bool eliminated)
|
|
{
|
|
_isEliminated = eliminated;
|
|
|
|
if (_scribbleEffect != null)
|
|
{
|
|
_scribbleEffect.SetEliminated(eliminated);
|
|
}
|
|
|
|
if (_nodeData != null)
|
|
_nodeData.IsEliminated = eliminated;
|
|
}
|
|
|
|
public void SetSelected(bool selected)
|
|
{
|
|
_isSelected = selected;
|
|
}
|
|
|
|
public void SetHovered(bool hovered)
|
|
{
|
|
if (_selectionOutline != null)
|
|
{
|
|
_selectionOutline.enabled = hovered;
|
|
}
|
|
}
|
|
}
|
|
}
|