diff --git a/Assets/Script/Main/NetworkManager.cs b/Assets/Script/Main/NetworkManager.cs index aca1bf4..65218a8 100644 --- a/Assets/Script/Main/NetworkManager.cs +++ b/Assets/Script/Main/NetworkManager.cs @@ -228,6 +228,61 @@ public class NetworkManager : Singleton } } + public void UpdateScore(int isWin, Action success, Action failure) + { + StartCoroutine(UpdateScoreCoroutine(isWin, success, failure)); + } + public IEnumerator UpdateScoreCoroutine(int isWin, Action success, Action failure) + { + string jsonString = "{\"isWin\": "+isWin.ToString() + "}"; + byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonString); + + using (UnityWebRequest www = + new UnityWebRequest(Constants.ServerURL + "/users/score-update", UnityWebRequest.kHttpVerbPOST)) + { + www.uploadHandler = new UploadHandlerRaw(bodyRaw); + www.downloadHandler = new DownloadHandlerBuffer(); + www.SetRequestHeader("Content-Type", "application/json"); + + string sid = PlayerPrefs.GetString("sid", ""); + if (!string.IsNullOrEmpty(sid)) + { + www.SetRequestHeader("Cookie", sid); + } + else + { + Debug.LogError("SID 값이 없습니다. 로그인 정보가 없습니다."); + GameManager.Instance.panelManager.OpenConfirmPanel("SID 값이 없습니다. 로그인 정보가 없습니다.", () => + { + failure?.Invoke(); + }); + yield break; // 더 이상 진행하지 않고 종료 + } + + yield return www.SendWebRequest(); + + if (www.result == UnityWebRequest.Result.ConnectionError || + www.result == UnityWebRequest.Result.ProtocolError) + { + Debug.LogError("Error: " + www.error); + failure?.Invoke(); + } + else + { + var result = www.downloadHandler.text; + var scoreResultInfo = JsonUtility.FromJson(result); + Debug.Log(scoreResultInfo.message); + Debug.Log(scoreResultInfo.rating); + Debug.Log(scoreResultInfo.score); + Debug.Log(scoreResultInfo.win); + Debug.Log(scoreResultInfo.lose); + Debug.Log(scoreResultInfo.isAdvancement); + + success?.Invoke(); + } + } + } + public IEnumerator GetLeaderboard(Action success, Action failure) { using (UnityWebRequest www = diff --git a/Assets/Script/Main/UserManager.cs b/Assets/Script/Main/UserManager.cs index c9f99e9..88280be 100644 --- a/Assets/Script/Main/UserManager.cs +++ b/Assets/Script/Main/UserManager.cs @@ -20,6 +20,19 @@ public class CoinsInfoResult public int coins; } +/// +/// 점수 업데이트 응답 클래스 +/// +public class ScoreInfoResult +{ + public string message; + public int rating; + public int score; + public int win; + public int lose; + public int isAdvancement; +} + /// /// 코인 구매 응답 클래스 /// diff --git a/Assets/Script/UI/PanelController/RatingPanelController.cs b/Assets/Script/UI/PanelController/RatingPanelController.cs index 9208b3d..b742d0e 100644 --- a/Assets/Script/UI/PanelController/RatingPanelController.cs +++ b/Assets/Script/UI/PanelController/RatingPanelController.cs @@ -21,6 +21,24 @@ public class RatingPanelController : PanelController public void Show(Enums.GameResult gameResult) { base.Show(InitRatingPanel(gameResult)); + UpdateGameResult(gameResult); + } + + private void UpdateGameResult(Enums.GameResult gameResult) + { + switch (gameResult) + { + case (Enums.GameResult.Win): + NetworkManager.Instance.UpdateScore(1 , () => + { + //유저 인포 업데이트 + //결과화면 띄우기 + },() => { }); + break; + case (Enums.GameResult.Lose): + NetworkManager.Instance.UpdateScore(-1, () => { }, () => { }); + break; + } } public void OnClickConfirmButton() @@ -102,7 +120,6 @@ public class RatingPanelController : PanelController else _ratingPointsController.SetRatingDownLimit(_oldScore+1); } - } else { @@ -120,9 +137,6 @@ public class RatingPanelController : PanelController { getPointsText.text = $"게임에서 {win}했습니다.\n{Constants.RAING_POINTS} 승급 포인트를 {get}"; } - return null; } - - }