Files
XMen/Assets/Scripts/ResultPlane.cs
2025-07-10 14:49:53 +08:00

97 lines
2.7 KiB
C#

using DG.Tweening;
using DragonLi.Core;
using Mirror;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
public class ResultPlane : MonoBehaviour
{
public GameObject resultPre;
public Transform parent;
public TextMeshProUGUI titleText;
public GameObject resultNullPre;
public AudioSource audioSource;
public Transform tip;
/// <summary>
/// tip 移动的目标位置
/// </summary>
public Transform targetPos;
/// <summary>
/// 弹出音效
/// </summary>
public AudioClip popUp;
/// <summary>
/// 盖章音效
/// </summary>
public AudioClip seal;
public void Awake()
{
transform.localScale = new Vector3(0, 0, 0);
tip.localScale = new Vector3(4, 4, 4);
tip.gameObject.SetActive(false);
}
public void Start()
{
audioSource.PlayOneShot(popUp, 1f);
transform.DOScale(new Vector3(1, 1, 1), 0.3f).OnComplete(() =>
{
tip.gameObject.SetActive(true);
tip.DOScale(new Vector3(1, 1, 1), 0.5f);
tip.DOLocalMove(targetPos.localPosition, 0.5f);
audioSource.PlayOneShot(seal, 1f);
});
ShowInfo();
CoroutineTaskManager.Instance.WaitSecondTodo(() =>
{
WorldUIManager.Ins.Back();
}, 40f);
}
//Unity
public void ShowInfo()
{
int[] keys = StatisticManager.Ins.statisticDescInfo.OrderByDescending(pair => pair.Value.score).Select(pair => pair.Key).ToArray();
for (int i = 0; i < keys.Length; i++)
{
GameObject resultItem = Instantiate(resultPre, parent);
ResultItem result = resultItem.GetComponent<ResultItem>();
if (StatisticManager.Ins.playerIndex == keys[i])
{
result.SetBgActive(true);
}
float score = StatisticManager.Ins.statisticDescInfo[keys[i]].score;
int shootTime = StatisticManager.Ins.statisticDescInfo[keys[i]].shootTime;
float hitRate;
hitRate = Mathf.Round((float)StatisticManager.Ins.statisticDescInfo[keys[i]].hitRate / StatisticManager.Ins.statisticDescInfo[keys[i]].shootTime * 100);
if (StatisticManager.Ins.statisticDescInfo[keys[i]].hitRate == 0 && StatisticManager.Ins.statisticDescInfo[keys[i]].shootTime == 0)
hitRate = 0;
float totalMoveDis = StatisticManager.Ins.statisticDescInfo[keys[i]].totalMoveDis;
result.InitData(keys[i], score, i + 1, shootTime, hitRate, Mathf.FloorToInt(totalMoveDis / 10));
}
Instantiate(resultNullPre, parent);
titleText.text = StatisticManager.Ins.titleName;
}
}