111 lines
2.9 KiB
C#

using UnityEngine;
using UnityEngine.SceneManagement;
public class UserInfoResult
{
public string id;
public string email;
public string nickname;
public int rating;
public int score;
public int imageIndex;
public int win;
public int lose;
public int coins;
}
public class CoinsInfoResult
{
public string result;
public int coins;
}
public class UserManager : Singleton<UserManager>
{
public string UserId { get; private set; }
public string Email { get; private set; }
public string Nickname { get; private set; }
public int Rating { get; private set; }
public int Score { get; private set; }
public int ImageIndex { get; private set; }
public int Win { get; private set; }
public int Lose { get; private set; }
public int Coins { get; private set; }
protected override void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
}
public void SetUserInfo(UserInfoResult userData)
{
if (userData == null)
{
Debug.Log("유저 데이터가 비어있습니다");
return;
}
UserId = userData.id;
Email = userData.email;
Nickname = userData.nickname;
Rating = userData.rating;
// Score = userData.score;
ImageIndex = userData.imageIndex;
// Win = userData.win;
// Lose = userData.lose;
Coins = userData.coins;
// 유저 정보를 PlayerPrefs에 저장
SaveUserInfoToPlayerPrefs();
}
public void SaveUserInfoToPlayerPrefs()
{
// UserInfoResult 객체를 JSON 문자열로 직렬화
UserInfoResult userInfo = new UserInfoResult
{
id = UserId,
email = Email,
nickname = Nickname,
// rating = Rating,
// score = Score,
imageIndex = ImageIndex,
// win = Win,
// lose = Lose
};
string json = JsonUtility.ToJson(userInfo);
// PlayerPrefs에 저장
PlayerPrefs.SetString("UserInfo", json);
PlayerPrefs.Save();
}
public void LoadUserInfoFromPlayerPrefs()
{
// PlayerPrefs에서 유저 정보 가져오기
string json = PlayerPrefs.GetString("UserInfo", "");
if (string.IsNullOrEmpty(json))
{
Debug.Log("저장된 유저 정보가 없습니다.");
return;
}
// JSON 문자열을 UserInfoResult 객체로 역직렬화
UserInfoResult userInfo = JsonUtility.FromJson<UserInfoResult>(json);
// 역직렬화한 데이터로 UserManager의 값을 설정
SetUserInfo(userInfo);
}
public void SetCoinsInfo()
{
NetworkManager.Instance.GetCoinsInfo((coinsResult) =>
{
Coins = coinsResult.coins;
}, () =>
{
Debug.Log("서버에서 코인 불러오기 실패");
});
}
}