nightward/Assets/Scripts/Title/TitleInfo.cs

126 lines
3.3 KiB
C#

using System;
using System.Collections;
using OneStore.Common; // 지우면 안됨
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.U2D;
public class TitleInfo : MonoBehaviour
{
[SerializeField] TextMeshProUGUI label_msg, t_ver;
[SerializeField] GameObject go_LobbyUI;
const string VERSION_URL = "https://filgoodbanditshomepage.web.app/NightWard.txt";
private void Awake()
{
Screen.sleepTimeout = SleepTimeout.NeverSleep;
Application.targetFrameRate = 60;
go_LobbyUI.SetActive(false);
}
private void Start()
{
SetVersionText();
label_msg.text = "게임 버전 확인 중...";
StartCoroutine(LoadVersionData(
OnVersionSuccess,
OnVersionFail
));
}
void SetVersionText()
{
t_ver.text = Application.version;
#if UNITY_EDITOR
t_ver.text += "(E)";
#else
t_ver.text += StoreEnvironment.GetStoreType() == StoreType.ONESTORE ? "(O)" : "(G)";
#endif
}
void OnVersionFail()
{
PopupUI.Ins.Set("게임 업데이트가 필요합니다.", DSUtil.Quit, DSUtil.Quit);
}
void OnVersionSuccess()
{
StartCoroutine(Co_Success());
}
IEnumerator Co_Success()
{
label_msg.text = "게임 데이터를 읽고 있습니다.";
// 테이블 로딩 대기
while (!TableChecker.Ins.CheckAllLoad())
yield return null;
// UI 아틀라스 로드
yield return AddrResourceMgr.Ins.LoadObjectSequential<SpriteAtlas>(
"MainUI/UIAtlas.spriteatlasv2",
atlas => UIAtlasMgr.Ins.Set(atlas)
);
label_msg.text = "로비로 진입 중입니다.";
yield return null;
// 연출용 대기 (필요 없으면 제거 가능)
yield return new WaitForSeconds(3f);
gameObject.SetActive(false);
go_LobbyUI.SetActive(true);
SoundInfo.Ins.Play_BGM(eBGM.b001_BGM);
}
IEnumerator LoadVersionData(Action success, Action fail)
{
using (UnityWebRequest www = UnityWebRequest.Get(VERSION_URL))
{
yield return www.SendWebRequest();
// 네트워크 에러 처리
if (www.result != UnityWebRequest.Result.Success)
{
Debug.LogError($"Version check failed : {www.error}");
fail?.Invoke();
yield break;
}
string serverVersionText = www.downloadHandler.text;
if (string.IsNullOrEmpty(serverVersionText))
{
Debug.LogError("Version text is empty");
fail?.Invoke();
yield break;
}
// 개행 / 공백 제거
serverVersionText = serverVersionText.Trim();
Version serverVersion;
Version clientVersion;
// 안전한 버전 파싱
if (!Version.TryParse(serverVersionText, out serverVersion) ||
!Version.TryParse(Application.version, out clientVersion))
{
Debug.LogError($"Version parse failed : {serverVersionText}");
fail?.Invoke();
yield break;
}
if (serverVersion > clientVersion)
fail?.Invoke();
else
success?.Invoke();
}
}
}