using UnityEngine; using Unheimlich.Managers; namespace Unheimlich.UI.DetectiveBoard { /// /// Renders a connection line between two clue nodes on the detective board. /// Visual style changes based on certainty level and elimination state. /// [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(); } /// /// Initializes the connection line between two nodes. /// 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; } } /// /// Updates the line positions based on node transforms. /// public void UpdateLine(Vector3 startPos, Vector3 endPos) { if (_lineRenderer != null) { _lineRenderer.SetPosition(0, startPos); _lineRenderer.SetPosition(1, endPos); } } /// /// Updates the certainty level and visual appearance. /// public void SetCertainty(DetectiveBoardManager.CertaintyLevel certainty, Color color) { _certainty = certainty; if (_lineRenderer != null) { _lineRenderer.startColor = color; _lineRenderer.endColor = color; } } /// /// Marks this connection as eliminated. /// 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; } } } }