Update Project
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
using UnityEngine;
|
||||
namespace FlappyBird.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Pure C# service — all scoring logic lives here.
|
||||
/// No MonoBehaviour, no Unity lifecycle. Injected via Zenject.
|
||||
/// High score is persisted with PlayerPrefs.
|
||||
/// </summary>
|
||||
public sealed class ScoreManager : IScoreManager
|
||||
{
|
||||
private const string HIGH_SCORE_KEY = "HighScore";
|
||||
// ── IScoreManager ──────────────────────────────────────────────────
|
||||
/// <inheritdoc/>
|
||||
public int CurrentScore { get; private set; }
|
||||
/// <inheritdoc/>
|
||||
public int HighScore { get; private set; }
|
||||
/// <inheritdoc/>
|
||||
public event System.Action<int> OnScoreChanged;
|
||||
/// <inheritdoc/>
|
||||
public event System.Action<int> OnHighScoreBeaten;
|
||||
// ── Constructor ────────────────────────────────────────────────────
|
||||
public ScoreManager()
|
||||
{
|
||||
HighScore = PlayerPrefs.GetInt(HIGH_SCORE_KEY, 0);
|
||||
}
|
||||
// ── IScoreManager ──────────────────────────────────────────────────
|
||||
/// <inheritdoc/>
|
||||
public void AddScore(int points)
|
||||
{
|
||||
if (points <= 0) return;
|
||||
CurrentScore += points;
|
||||
OnScoreChanged?.Invoke(CurrentScore);
|
||||
if (CurrentScore > HighScore)
|
||||
{
|
||||
HighScore = CurrentScore;
|
||||
PlayerPrefs.SetInt(HIGH_SCORE_KEY, HighScore);
|
||||
PlayerPrefs.Save();
|
||||
OnHighScoreBeaten?.Invoke(HighScore);
|
||||
}
|
||||
}
|
||||
/// <inheritdoc/>
|
||||
public void ResetScore()
|
||||
{
|
||||
CurrentScore = 0;
|
||||
OnScoreChanged?.Invoke(CurrentScore);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user