using UnityEngine;
/// <summary>
/// GAME 1303 Tier 1 — Touch to set the respawn point.
///
/// SETUP
/// - Empty GameObject with a Collider2D set to Is Trigger, plus this script.
/// - Optionally give it a SpriteRenderer (flag/lantern) and two sprites for
/// inactive/active. Optionally an AudioSource for a "checkpoint" chime.
/// - Player must be tagged "Player".
/// - Place the first checkpoint at the level start (or let RespawnManager use the
/// player's starting position — it does that automatically).
/// </summary>
[RequireComponent(typeof(Collider2D))]
public class Checkpoint : MonoBehaviour
{
[Header("Visuals (optional)")]
public SpriteRenderer spriteRenderer;
public Sprite inactiveSprite;
public Sprite activeSprite;
public AudioClip activateSound;
[Tooltip("Where the player appears. Leave empty to use this object's position.")]
public Transform spawnPoint;
public bool IsActive { get; private set; }
public Vector3 SpawnPosition => spawnPoint != null ? spawnPoint.position : transform.position;
void Reset()
{
GetComponent<Collider2D>().isTrigger = true;
}
void OnTriggerEnter2D(Collider2D other)
{
if (IsActive || !other.CompareTag("Player")) return;
RespawnManager.Instance?.SetCheckpoint(this);
}
public void Activate()
{
IsActive = true;
if (spriteRenderer != null && activeSprite != null) spriteRenderer.sprite = activeSprite;
if (activateSound != null) AudioManager.Instance?.PlaySFX(activateSound);
}
public void Deactivate()
{
IsActive = false;
if (spriteRenderer != null && inactiveSprite != null) spriteRenderer.sprite = inactiveSprite;
}
}