using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace GameFramework
{
///
/// 结算界面 UI 控制器 —— 支持胜利/失败双界面。
///
/// 胜利:显示"你做到了" + 魂灵数量 + 新记录标识(如有)
/// 失败:显示"你迷失了" + 去色底图
///
/// 通过 GameManager.GameState 判断胜负。
///
public class ScoringUIController : MonoBehaviour
{
[Header("底图")]
[SerializeField] private Image bgImage;
[SerializeField] private Sprite bgSprite; // bg.png(胜利彩色/失败去色共用同一张)
[Header("胜利面板")]
[SerializeField] private GameObject winPanel;
[SerializeField] private Image winTitleImage; // "你做到了" 图片
[SerializeField] private Sprite winTitleSprite; // nizuodaol.png
[SerializeField] private Text soulCountText; // 魂灵数量
[SerializeField] private Image soulCountBgImage; // 魂灵数量底图
[SerializeField] private Sprite soulCountBgSprite; // bgpoint.png
[SerializeField] private Image newRecordImage; // "新记录" 图片
[SerializeField] private Sprite newRecordSprite; // 新纪录.png
[SerializeField] private Image scoreLabelImage; // "拯救魂灵" 图片
[SerializeField] private Sprite scoreLabelSprite;
[Header("失败面板")]
[SerializeField] private GameObject losePanel;
[SerializeField] private Image loseTitleImage; // "你迷失了" 图片
[SerializeField] private Sprite loseTitleSprite; // nizuodaol.png 副本
[Header("排行榜")]
[SerializeField] private GameObject leaderboardPanel;
[SerializeField] private Transform leaderboardContainer;
[SerializeField] private Text finalScoreText;
[Header("新纪录输入")]
[SerializeField] private GameObject newHighScorePanel;
[SerializeField] private InputField nameInputField;
[SerializeField] private Button submitButton;
[SerializeField] private Button cancelButton;
[Header("导航")]
[SerializeField] private Button mainMenuButton;
[SerializeField] private Image mainMenuButtonImage; // 主界面.png
[SerializeField] private Sprite mainMenuBtnSprite;
[Header("装饰")]
[SerializeField] private Image lineImage;
[SerializeField] private Sprite lineSprite;
[SerializeField] private Image bgPointImage;
[SerializeField] private Sprite bgPointSprite;
[Header("Audio")]
[SerializeField] private AudioData submitSFX;
[SerializeField] private AudioData cancelSFX;
private bool _isWin;
void Start()
{
// 确保 Canvas 有 GraphicRaycaster(否则按钮无法响应点击)
var canvas = GetComponent