91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
using UnityEngine;
|
|
using Unheimlich.Features.DetectiveBoard;
|
|
|
|
namespace Unheimlich.Features.DetectiveBoard.UI
|
|
{
|
|
/// <summary>
|
|
/// Renders a connection line between two clue nodes on the detective board.
|
|
/// Visual style changes based on certainty level and elimination state.
|
|
/// </summary>
|
|
[RequireComponent(typeof(LineRenderer))]
|
|
public class ConnectionLineRenderer : MonoBehaviour
|
|
{
|
|
private LineRenderer _lineRenderer;
|
|
private string _fromClueID;
|
|
private string _toClueID;
|
|
private DetectiveBoardManager.CertaintyLevel _certainty;
|
|
private bool _isEliminated;
|
|
|
|
public string FromClueID => _fromClueID;
|
|
public string ToClueID => _toClueID;
|
|
|
|
private void Awake()
|
|
{
|
|
_lineRenderer = GetComponent<LineRenderer>();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Initializes the connection line between two nodes.
|
|
/// </summary>
|
|
public void Initialize(string fromClueID, string toClueID,
|
|
DetectiveBoardManager.CertaintyLevel certainty, Color color, float width)
|
|
{
|
|
_fromClueID = fromClueID;
|
|
_toClueID = toClueID;
|
|
_certainty = certainty;
|
|
|
|
if (_lineRenderer != null)
|
|
{
|
|
_lineRenderer.startWidth = width;
|
|
_lineRenderer.endWidth = width;
|
|
_lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
|
|
_lineRenderer.startColor = color;
|
|
_lineRenderer.endColor = color;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the line positions based on node transforms.
|
|
/// </summary>
|
|
public void UpdateLine(Vector3 startPos, Vector3 endPos)
|
|
{
|
|
if (_lineRenderer != null)
|
|
{
|
|
_lineRenderer.SetPosition(0, startPos);
|
|
_lineRenderer.SetPosition(1, endPos);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Updates the certainty level and visual appearance.
|
|
/// </summary>
|
|
public void SetCertainty(DetectiveBoardManager.CertaintyLevel certainty, Color color)
|
|
{
|
|
_certainty = certainty;
|
|
|
|
if (_lineRenderer != null)
|
|
{
|
|
_lineRenderer.startColor = color;
|
|
_lineRenderer.endColor = color;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Marks this connection as eliminated.
|
|
/// </summary>
|
|
public void SetEliminated(bool eliminated)
|
|
{
|
|
_isEliminated = eliminated;
|
|
|
|
if (_lineRenderer != null)
|
|
{
|
|
float alpha = eliminated ? 0.3f : 1f;
|
|
Color color = _lineRenderer.startColor;
|
|
color.a = alpha;
|
|
_lineRenderer.startColor = color;
|
|
_lineRenderer.endColor = color;
|
|
}
|
|
}
|
|
}
|
|
}
|