MiniGames/Assets/Scripts/ClawGrab/ClawGameBinder.cs

129 lines
3.2 KiB
C#
Raw Normal View History

// ClawGameBinder.cs
using UnityEngine;
using System;
using System.Collections.Generic;
using TMPro;
public class ClawGameBinder : MonoBehaviour
{
[Header("Scene References")]
public ClawController claw;
public PlatformSpinController platform;
public RoundTimer timer;
[Header("UI (optional)")]
public TextMeshProUGUI eventsText;
public int maxLines = 8;
public bool includeTimestamps = true;
// cached manager instance
private ClawScoreManager sm;
// rolling log
private readonly Queue<string> lines = new Queue<string>();
void OnEnable()
{
TryBind();
}
void OnDisable()
{
TryUnbind();
}
private void TryBind()
{
sm = ClawScoreManager.Instance ?? FindObjectOfType<ClawScoreManager>();
if (sm == null)
{
Debug.LogWarning("[ClawGameBinder] ClawScoreManager not found; events wont be wired.");
return;
}
sm.OnClawDisabled += HandleClawDisabled;
sm.OnClawJam += HandleClawJammed;
sm.OnPlatformTurbo += HandleTurbo;
sm.OnPlatformSlow += HandleSlow;
sm.OnPlatformFreeze += HandleFreeze;
sm.OnTimeAdded += HandleTimeAdded;
// If you exposed this event in your ScoreManager:
sm.OnComboAchieved += HandleCombo; // comment out if not present
}
private void TryUnbind()
{
if (sm == null) return;
sm.OnClawDisabled -= HandleClawDisabled;
sm.OnClawJam -= HandleClawJammed;
sm.OnPlatformTurbo -= HandleTurbo;
sm.OnPlatformSlow -= HandleSlow;
sm.OnPlatformFreeze -= HandleFreeze;
sm.OnTimeAdded -= HandleTimeAdded;
// If you exposed this event:
sm.OnComboAchieved -= HandleCombo; // comment out if not present
sm = null;
}
// ---------- Event Handlers ----------
private void HandleClawDisabled(float seconds)
{
Log($"Claw Disabled {seconds:0.##}s");
if (claw) claw.ApplyDisable(seconds);
}
private void HandleClawJammed(float seconds)
{
Log($"Claw Jam {seconds:0.##}s");
if (claw) claw.ApplyJam(seconds);
}
private void HandleTurbo(float seconds)
{
Log($"Turbo +speed {seconds:0.##}s");
if (platform) platform.ApplyTurbo(seconds);
}
private void HandleSlow(float seconds)
{
Log($"Slow -speed {seconds:0.##}s");
if (platform) platform.ApplySlow(seconds);
}
private void HandleFreeze(float seconds)
{
Log($"Freeze {seconds:0.##}s");
if (platform) platform.ApplyFreeze(seconds);
}
private void HandleTimeAdded(float seconds)
{
Log($"Time added: +{seconds:0.##}s");
if (timer) timer.AddTime(seconds);
}
// If your ScoreManager exposes combos:
private void HandleCombo(ClawBubbleType[] combo)
{
Log($" Combo: {string.Join(", ", combo)}");
}
// ---------- UI Log ----------
private void Log(string msg)
{
if (!eventsText) return;
string line = includeTimestamps ? $"[{Time.time:0.0}s] {msg}" : msg;
//lines.Enqueue(line);
//while (lines.Count > maxLines) lines.Dequeue();
eventsText.text = line;
}
}