diff --git a/Assets/JAY/Main-Jay.unity b/Assets/JAY/Main-Jay.unity index e326e6e..074d9d5 100644 --- a/Assets/JAY/Main-Jay.unity +++ b/Assets/JAY/Main-Jay.unity @@ -122,6 +122,55 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &271965288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 271965289} + - component: {fileID: 271965290} + m_Layer: 0 + m_Name: GameManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &271965289 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271965288} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &271965290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 271965288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 35a4c6d5d3a97b444b968e68ec8bb9f7, type: 3} + m_Name: + m_EditorClassIdentifier: + mainPanel: {fileID: 8564394481744056992, guid: e1835a90a4d722a4b99be61179de8789, type: 3} + signinPanel: {fileID: 925522282249935710, guid: e14c9b2925f0ddb4192af743e5cc166a, type: 3} + signupPanel: {fileID: 3181524094944658765, guid: 8827fe7caa3145e40b1369cc42f8697d, type: 3} + canvas: {fileID: 1867732346} + profileSprites: [] --- !u!1 &333752980 GameObject: m_ObjectHideFlags: 0 @@ -214,8 +263,180 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &740636828 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 740636831} + - component: {fileID: 740636830} + - component: {fileID: 740636829} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &740636829 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740636828} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &740636830 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740636828} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &740636831 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 740636828} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1867732343 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1867732347} + - component: {fileID: 1867732346} + - component: {fileID: 1867732345} + - component: {fileID: 1867732344} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1867732344 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867732343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1867732345 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867732343} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1867732346 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867732343} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1867732347 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1867732343} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 m_Roots: - {fileID: 333752983} + - {fileID: 271965289} + - {fileID: 1867732347} + - {fileID: 740636831} diff --git a/Assets/Prefabs/Main Panel.prefab b/Assets/Prefabs/Main Panel.prefab index 96f2a80..173d9c3 100644 --- a/Assets/Prefabs/Main Panel.prefab +++ b/Assets/Prefabs/Main Panel.prefab @@ -1404,7 +1404,7 @@ GameObject: - component: {fileID: 2069651035330330026} - component: {fileID: 2769129427375959542} m_Layer: 5 - m_Name: Profile Image + m_Name: Profile Image_dragon m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1722,6 +1722,81 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6837262359343561592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8172929902404983356} + - component: {fileID: 9151821260105146833} + - component: {fileID: 662347117161959313} + m_Layer: 5 + m_Name: Profile Image_tiger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8172929902404983356 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6837262359343561592} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6110152713294678410} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -180} + m_SizeDelta: {x: 403, y: 409} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &9151821260105146833 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6837262359343561592} + m_CullTransparentMesh: 1 +--- !u!114 &662347117161959313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6837262359343561592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 59492a1d9c2719641bd0d4d53988c9b4, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &8564394481744056992 GameObject: m_ObjectHideFlags: 0 @@ -1756,6 +1831,7 @@ RectTransform: - {fileID: 1983801467959214643} - {fileID: 2720476515686469179} - {fileID: 405965270916774547} + - {fileID: 8172929902404983356} - {fileID: 6726863397751661662} - {fileID: 7295287573366824212} m_Father: {fileID: 0} @@ -1818,6 +1894,9 @@ MonoBehaviour: nicknameText: {fileID: 6229663128658405980} ratingText: {fileID: 5975803210787517482} signOutButton: {fileID: 1336680714261373895} + profileImages: + - {fileID: 4381601883819518242} + - {fileID: 6837262359343561592} --- !u!1 &9186617826613474881 GameObject: m_ObjectHideFlags: 0 @@ -1937,19 +2016,7 @@ MonoBehaviour: m_TargetGraphic: {fileID: 4776591815315724498} m_OnClick: m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 7488082087611091670} - m_TargetAssemblyTypeName: MainPanelController, Assembly-CSharp - m_MethodName: OnSignOutClick - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 + m_Calls: [] --- !u!1001 &218636292198555703 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Script/Common/CoinsPanelController.cs b/Assets/Script/Common/CoinsPanelController.cs index 7084e72..201a776 100644 --- a/Assets/Script/Common/CoinsPanelController.cs +++ b/Assets/Script/Common/CoinsPanelController.cs @@ -34,9 +34,6 @@ public class CoinsPanelController : MonoBehaviour private void Start() { coinsRemoveImageObject.SetActive(false); - - // TODO : 코인 수량 초기화 - InitCoinsCount(500); } /// @@ -47,6 +44,8 @@ public class CoinsPanelController : MonoBehaviour { _coinsCount = coinsCount; coinsCountText.text = _coinsCount.ToString(); + + Debug.Log("coinsCount?: " + coinsCount); ResizingCoinsRect(); } diff --git a/Assets/Script/Game/GameManager.cs b/Assets/Script/Game/GameManager.cs index 241b5c0..5e5817d 100644 --- a/Assets/Script/Game/GameManager.cs +++ b/Assets/Script/Game/GameManager.cs @@ -1,3 +1,4 @@ +using System; using UnityEngine; using UnityEngine.SceneManagement; using System.Collections; @@ -8,9 +9,9 @@ public class GameManager : Singleton [SerializeField] private GameObject mainPanel; [SerializeField] private GameObject signinPanel; [SerializeField] private GameObject signupPanel; - [SerializeField] private Canvas canvas; private UserManager _userManager; // UserManager 인스턴스 관리 + private CoinsPanelController _coinsPanel; private Enums.GameType _gameType; private GameLogic _gameLogic; @@ -39,9 +40,6 @@ public class GameManager : Singleton // 자동 로그인 TryAutoSignin(); - // 메인 패널 열기 - OpenMainPanel(); - //게임 씬에서 확인하기 위한 임시 코드 // _stoneController = GameObject.FindObjectOfType(); // _stoneController.InitStones(); @@ -53,11 +51,12 @@ public class GameManager : Singleton NetworkManager.Instance.GetInfo((userInfo) => { Debug.Log("자동 로그인 성공"); - - UpdateMainPanelUI(); - + UserManager.Instance.SetUserInfo(userInfo); + + UpdateMainPanelUI(OpenMainPanel); // ScoreData.SetScore(userInfo.score); // OpenConfirmPanel(userInfo.nickname + "님 로그인 성공하였습니다.", () => { }); + }, () => { Debug.Log("자동 로그인 실패"); @@ -67,9 +66,9 @@ public class GameManager : Singleton } /// - /// 유저 별명, 급수, 코인을 서버에서 가져온 정보로 업데이트하여 메인화면에 표시 + /// 유저 별명, 급수를 서버에서 가져온 정보로 업데이트하여 메인화면에 표시 /// - private void UpdateMainPanelUI() + public void UpdateMainPanelUI(Action success = null) { MainPanelController mainPanelController = mainPanel.GetComponent(); @@ -77,12 +76,7 @@ public class GameManager : Singleton mainPanelController.UpdateUserInfo(); - CoinsPanelController coinsPanel = FindObjectOfType(); - if (coinsPanel != null) - { - Debug.Log("코인패널존재?" + UserManager.Instance.Coins); - coinsPanel.InitCoinsCount(UserManager.Instance.Coins); - } + success?.Invoke(); } public void OpenMainPanel() @@ -90,6 +84,16 @@ public class GameManager : Singleton if (canvas != null) { var mainPanelObject = Instantiate(mainPanel, canvas.transform); + + // 메인 화면 아래의 코인 패널에 서버에서 가져 온 코인 값 업데이트 + _coinsPanel = mainPanelObject.GetComponentInChildren(); + + if (_coinsPanel != null) + { + Debug.Log("UserManager.Instance.Coins?: " + UserManager.Instance.Coins); + _coinsPanel.InitCoinsCount(UserManager.Instance.Coins); + } + } } diff --git a/Assets/Script/Main/MainPanelController.cs b/Assets/Script/Main/MainPanelController.cs index 4ee980f..bacee6c 100644 --- a/Assets/Script/Main/MainPanelController.cs +++ b/Assets/Script/Main/MainPanelController.cs @@ -1,6 +1,7 @@ using System; using TMPro; using UnityEngine; +using UnityEngine.Serialization; using UnityEngine.UI; public class MainPanelController : MonoBehaviour @@ -8,6 +9,18 @@ public class MainPanelController : MonoBehaviour [SerializeField] private TextMeshProUGUI nicknameText; [SerializeField] private TextMeshProUGUI ratingText; [SerializeField] private Button signOutButton; + [SerializeField] private GameObject[] profileImages; + + private int _selectedImageIndex; + + private void Awake() + { + // 만약 할당 안되어있으면 추가 + if (signOutButton != null) + { + signOutButton.onClick.AddListener(OnSignOutClick); + } + } public void UpdateUserInfo() { @@ -15,6 +28,22 @@ public class MainPanelController : MonoBehaviour nicknameText.text = UserManager.Instance.Nickname; ratingText.text = $"{UserManager.Instance.Rating}급"; + + // 프로필 이미지 갱신 + _selectedImageIndex = UserManager.Instance.imageIndex; + Debug.Log("UserManager.Instance.ImageIndex" + UserManager.Instance.imageIndex); + if (_selectedImageIndex < 0 || _selectedImageIndex >= profileImages.Length) + { + Debug.LogError($"Invalid ImageIndex: {_selectedImageIndex}, profileImages length: {profileImages.Length}"); + return; + } + + // 모든 프로필 이미지 비활성화 후, 선택한 이미지만 활성화 + foreach (var img in profileImages) + { + img.SetActive(false); + } + profileImages[_selectedImageIndex].SetActive(true); } public void OnSignOutClick() @@ -22,13 +51,20 @@ public class MainPanelController : MonoBehaviour NetworkManager.Instance.SignOut(() => { Debug.Log("로그아웃 성공"); - - // 로그인 화면 + GameManager.Instance.OpenSigninPanel(); + + // 로그아웃 버튼 메서드 삭제 + signOutButton.onClick.RemoveAllListeners(); + + // 아직 메인 패널이 살아있다면 삭제 + if (gameObject != null) + { + Destroy(gameObject); + } }, () => { Debug.Log("로그아웃 실패"); - // OpenConfirmPanel("로그아웃 되었습니다.", () => { }); }); } } diff --git a/Assets/Script/Main/NetworkManager.cs b/Assets/Script/Main/NetworkManager.cs index 102cfac..46a1404 100644 --- a/Assets/Script/Main/NetworkManager.cs +++ b/Assets/Script/Main/NetworkManager.cs @@ -11,7 +11,11 @@ public class NetworkManager : Singleton } - public IEnumerator Signup(SignupData signupData, Action success, Action failure) + public void Signup(SignupData signupData, Action success, Action failure) + { + StartCoroutine(SignupCoroutine(signupData, success, failure)); + } + public IEnumerator SignupCoroutine(SignupData signupData, Action success, Action failure) { string jsonString = JsonUtility.ToJson(signupData); Debug.Log("jsonString" + jsonString); @@ -58,7 +62,12 @@ public class NetworkManager : Singleton } } - public IEnumerator Signin(SigninData signinData, Action success, Action failure) + public void Signin(SigninData signinData, Action success, Action failure) + { + StartCoroutine(SigninCoroutine(signinData, success, failure)); + } + + public IEnumerator SigninCoroutine(SigninData signinData, Action success, Action failure) { string jsonString = JsonUtility.ToJson(signinData); byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonString); @@ -87,10 +96,10 @@ public class NetworkManager : Singleton PlayerPrefs.SetString("sid", sid); } - var resultString = www.downloadHandler.text; - var result = JsonUtility.FromJson(resultString); + var result = www.downloadHandler.text; + var signinResult = JsonUtility.FromJson(result); - if (result.result == 0) + if (signinResult.result == 0) { Debug.Log("유저네임이 유효하지 않습니다."); failure?.Invoke(0); @@ -100,7 +109,7 @@ public class NetworkManager : Singleton // failure?.Invoke(0); // }); } - else if (result.result == 1) + else if (signinResult.result == 1) { Debug.Log("패스워드가 유효하지 않습니다."); failure?.Invoke(1); @@ -110,10 +119,13 @@ public class NetworkManager : Singleton // failure?.Invoke(1); // }); } - else if (result.result == 2) + else if (signinResult.result == 2) { Debug.Log("로그인에 성공하였습니다."); - success?.Invoke(); + success?.Invoke(signinResult); + Debug.Log("서버 응답 JSON: " + result); // 서버 응답 확인 + Debug.Log("파싱 후 SigninResult: " + JsonUtility.ToJson(signinResult)); // JSON 파싱 확인 + Debug.Log("SetUserInfo 호출됨. imageIndex: " + signinResult.imageIndex); // UserManager에 값이 전달되는지 확인 // TODO: 성공 팝업 표시 // GameManager.Instance.OpenConfirmPanel("로그인에 성공하였습니다.", () => // { @@ -163,7 +175,6 @@ public class NetworkManager : Singleton { var result = www.downloadHandler.text; var userInfo = JsonUtility.FromJson(result); - UserManager.Instance.SetUserInfo(userInfo); success?.Invoke(userInfo); } @@ -205,11 +216,11 @@ public class NetworkManager : Singleton else { var result = www.downloadHandler.text; - Debug.Log("로그아웃 실행결과" + result); // 로그아웃 후 sid를 삭제하여 세션을 클리어 PlayerPrefs.SetString("sid", ""); // 유저 정보도 삭제 PlayerPrefs.SetString("UserInfo", ""); + UserManager.Instance.UserInfoInit(); success?.Invoke(); } diff --git a/Assets/Script/Main/SigninPanelController.cs b/Assets/Script/Main/SigninPanelController.cs index acc69e0..5fe8e9c 100644 --- a/Assets/Script/Main/SigninPanelController.cs +++ b/Assets/Script/Main/SigninPanelController.cs @@ -12,11 +12,11 @@ public struct SigninData public struct SigninResult { public int result; -} - -public struct SignoutResult -{ - public string result; + public string nickname; + public int imageIndex; + public int rating; + public int score; + public int coins; } [Serializable] @@ -45,17 +45,21 @@ public class SigninPanelController : MonoBehaviour if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(password)) { - // TODO: 누락된 값 입렵 요청 팝업 표시 + // TODO: 누락된 값 입력 요청 팝업 표시 return; } - var signinData = new SigninData(); - signinData.email = email; - signinData.password = password; + var signinData = new SigninData { email = email, password = password }; - StartCoroutine(NetworkManager.Instance.Signin(signinData, () => + NetworkManager.Instance.Signin(signinData, (signinResult) => { Destroy(gameObject); + + // 유저 정보 저장 + UserManager.Instance.SetUserInfo(signinResult); + + // 메인 패널 정보 갱신 + GameManager.Instance.UpdateMainPanelUI(GameManager.Instance.OpenMainPanel); }, result => { if (result == 0) @@ -66,7 +70,7 @@ public class SigninPanelController : MonoBehaviour { passwordInputField.text = ""; } - })); + }); } public void OnClickSignupButton() diff --git a/Assets/Script/Main/SignupPanelController.cs b/Assets/Script/Main/SignupPanelController.cs index b89e3e6..beba6c1 100644 --- a/Assets/Script/Main/SignupPanelController.cs +++ b/Assets/Script/Main/SignupPanelController.cs @@ -80,7 +80,7 @@ public class SignupPanelController : MonoBehaviour signupData.imageIndex = _selectedImageIndex; // 서버로 SignupData 전달하면서 회원가입 진행 - StartCoroutine(NetworkManager.Instance.Signup(signupData, () => + NetworkManager.Instance.Signup(signupData, () => { Destroy(gameObject); }, () => @@ -89,7 +89,7 @@ public class SignupPanelController : MonoBehaviour nicknameInputField.text = ""; passwordInputField.text = ""; confirmPasswordInputField.text = ""; - })); + }); } else { diff --git a/Assets/Script/Main/UserManager.cs b/Assets/Script/Main/UserManager.cs index 73b0029..f273834 100644 --- a/Assets/Script/Main/UserManager.cs +++ b/Assets/Script/Main/UserManager.cs @@ -27,7 +27,7 @@ public class UserManager : Singleton 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 imageIndex { get; private set; } public int Win { get; private set; } public int Lose { get; private set; } public int Coins { get; private set; } @@ -36,6 +36,20 @@ public class UserManager : Singleton { } + public void UserInfoInit() + { + UserId = ""; + Email = ""; + Nickname = ""; + Rating = 0; + imageIndex = 0; + Coins = 0; + } + + /// + /// GetInfo 호출 시 + /// + /// public void SetUserInfo(UserInfoResult userData) { if (userData == null) @@ -49,7 +63,7 @@ public class UserManager : Singleton Nickname = userData.nickname; Rating = userData.rating; // Score = userData.score; - ImageIndex = userData.imageIndex; + imageIndex = userData.imageIndex; // Win = userData.win; // Lose = userData.lose; Coins = userData.coins; @@ -58,6 +72,21 @@ public class UserManager : Singleton SaveUserInfoToPlayerPrefs(); } + + /// + /// Signin 호출 시 : 로그인 정보만 반영 + /// + /// + public void SetUserInfo(SigninResult signinResult) + { + Nickname = signinResult.nickname; + Rating = signinResult.rating; + // Score = signinResult.score; + imageIndex = signinResult.imageIndex; + Coins = signinResult.coins; + Debug.Log("머임??: " + imageIndex); + } + public void SaveUserInfoToPlayerPrefs() { // UserInfoResult 객체를 JSON 문자열로 직렬화 @@ -68,7 +97,7 @@ public class UserManager : Singleton nickname = Nickname, // rating = Rating, // score = Score, - imageIndex = ImageIndex, + imageIndex = imageIndex, // win = Win, // lose = Lose };