Degullmok-client/Assets/Script/Replay/ReplayController.cs
2025-03-27 15:32:57 +09:00

104 lines
3.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.Serialization;
using UnityEngine.UI;
public class ReplayController : MonoBehaviour
{
[SerializeField] private TMP_Text playerANicknameText;
[SerializeField] private TMP_Text playerBNicknameText;
[SerializeField] private GameObject[] userAProfileImages;
[SerializeField] private GameObject[] userBProfileImages;
[SerializeField] private Button replayFinishButton;
void Start()
{
InitReplayUI();
}
public void OnclickExitButton()
{
ReplayManager.Instance.StopReplayFinish(() => { });;
SceneManager.LoadScene("Main");
}
public void OnclickFirstButton()
{
ReplayManager.Instance.StopReplayFinish(() =>
{
replayFinishButton.interactable = true;
});;
ReplayManager.Instance.ReplayFirst();
}
public void OnclickUndoButton()
{
ReplayManager.Instance.StopReplayFinish(() =>
{
replayFinishButton.interactable = true;
});;
Move targetMove = ReplayManager.Instance.PopPlacedMove();
if (targetMove != null)
{
ReplayManager.Instance.ReplayUndo(targetMove);
}
}
public void OnclickNextButton()
{
ReplayManager.Instance.StopReplayFinish(() =>
{
replayFinishButton.interactable = true;
});;
Move nextMove = ReplayManager.Instance.GetNextMove();
if (nextMove != null)
{
ReplayManager.Instance.ReplayNext(nextMove);
}
}
/// <summary>
/// 끝 버튼 눌렸을 때 중복 클릭 방지
/// </summary>
public void OnClickFinishButton()
{
replayFinishButton.interactable = false;
//실행이 끝난 후 끝버튼 다시 활성화
ReplayManager.Instance.ReplayFinish(() =>
{
replayFinishButton.interactable = true;
});
}
public void InitReplayUI()
{
//유저 닉네임 설정
playerANicknameText.text = ReplayManager.Instance.GetPlayerANickname();
playerBNicknameText.text = ReplayManager.Instance.GetPlayerBNickname();
//프로필 이미지 설정
int playerAProgileIndex = ReplayManager.Instance.GetPlayerAProfileIndex();
int playerBProgileIndex = ReplayManager.Instance.GetPlayerBProfileIndex();
SetUserProfileImages(playerAProgileIndex, userAProfileImages);
SetUserProfileImages(playerBProgileIndex, userBProfileImages);
}
private void SetUserProfileImages(int imageIndex,GameObject[] profileImages)
{
if (imageIndex < 0 || imageIndex >= profileImages.Length)
{
return;
}
// 모든 프로필 이미지 비활성화 후, 선택한 이미지만 활성화
foreach (var img in profileImages)
{
img.SetActive(false);
}
profileImages[imageIndex].SetActive(true);
}
}