Documentation for the Unity C# Library
Loading...
Searching...
No Matches
LoginController.cs
Go to the documentation of this file.
1using PixoVR.Apex;
2using PixoVR.Apex.XAPI;
3using PixoVR.Event;
4using System;
5using System.Net.Http;
6using UnityEngine;
7
9{
10 public class LoginController : MonoBehaviour
11 {
12 [SerializeField] private LoginScreen _loginScreen;
13
14 private const string LOGIN_PLAYER_PREF = "login";
15 private const string PASSWORD_PLAYER_PREF = "password";
16 private const string REMEMBER_ME_PLAYER_PREF = "rememberMe";
22 private void OnEnable()
23 {
24 ApexSystem.Instance.OnPingFailed.AddListener(OnApexPingFailed);
25 ApexSystem.Instance.OnPingSuccess.AddListener(OnApexPingSucceeded);
26
27 ApexSystem.Ping();
29 _loginScreen.LoginButtonClicked += OnLoginButtonClicked;
30 _loginScreen.RememberMeToggleValueChanged += OnRememberMeToggleValueChanged;
31 }
32
33 private void OnDisable()
34 {
35 ApexSystem.Instance.OnPingFailed.RemoveListener(OnApexPingFailed);
36 ApexSystem.Instance.OnPingSuccess.RemoveListener(OnApexPingSucceeded);
37
38 _loginScreen.LoginButtonClicked -= OnLoginButtonClicked;
39 _loginScreen.RememberMeToggleValueChanged -= OnRememberMeToggleValueChanged;
40 }
41
42 private void Start()
43 {
46 {
48 }
49 _sceneLoader = GetComponent<SceneLoader>();
50 }
51
52 private void OnApexPingFailed(HttpResponseMessage info)
53 {
55 }
56
57 private void OnApexPingSucceeded(HttpResponseMessage info)
58 {
60 }
61
62 private void TryGetRememberedCredentials()
63 {
64 var login = PlayerPrefs.GetString(LOGIN_PLAYER_PREF, string.Empty);
65 var password = PlayerPrefs.GetString(PASSWORD_PLAYER_PREF, string.Empty);
66
67 Debug.Log($"SavedCredsTest::TryGetRememberedCredentials login {login} password {!string.IsNullOrEmpty(password)}");
68
69 if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) return;
70
72 }
73
74 private void TryRestoreRememberMeState()
75 {
76 var rememberMe = PlayerPrefs.GetInt(REMEMBER_ME_PLAYER_PREF, -1);
77 isRememberCredentials = rememberMe == 1;
78 Debug.Log($"SavedCredsTest::TryRestoreRememberMeState rememberMe {rememberMe} isRememberCredentials {isRememberCredentials}");
80 }
81
82 private void OnRememberMeToggleValueChanged(bool isToggleOn)
83 {
84 isRememberCredentials = isToggleOn;
85 PlayerPrefs.SetInt(REMEMBER_ME_PLAYER_PREF, isRememberCredentials ? 1 : 0);
86 Debug.Log($"SavedCredsTest::OnRememberMeToggleValueChanged isRememberCredentials {isRememberCredentials}");
87 }
88
89 private void OnLoginButtonClicked(string login, string password)
90 {
91 ApexSystem.Instance.OnLoginSuccess.AddListener(OnLoginSuccess);
92 ApexSystem.Instance.OnLoginFailed.AddListener(OnLoginError);
93
94 Debug.Log($"SavedCredsTest::OnLoginButtonClicked isRememberCredentials {isRememberCredentials}");
95
97 {
98 PlayerPrefs.SetString(LOGIN_PLAYER_PREF, login);
99 PlayerPrefs.SetString(PASSWORD_PLAYER_PREF, password);
100
101 //for testing only, remove when remember me is fixed
102 var savedLogin = PlayerPrefs.GetString(LOGIN_PLAYER_PREF, string.Empty);
103 var savedPassword = PlayerPrefs.GetString(PASSWORD_PLAYER_PREF, string.Empty);
104 Debug.Log($"SavedCredsTest::OnLoginButtonClicked " +
105 $"savedLogin {savedLogin} savedPassword {!string.IsNullOrEmpty(savedPassword)}");
106 }
107 else
108 {
109 var rememberMe = PlayerPrefs.GetInt(REMEMBER_ME_PLAYER_PREF, -1);
110 Debug.Log($"SavedCredsTest::OnLoginButtonClicked deleted creds rememberMe {rememberMe}");
111 PlayerPrefs.DeleteKey(LOGIN_PLAYER_PREF);
112 PlayerPrefs.DeleteKey(PASSWORD_PLAYER_PREF);
113 }
114
115 StatesService.SaveState(new ApexSessionState());
116
117 ApexSystem.Login(login, password);
118 }
119
120 private void OnLoginSuccess(LoginResponseContent info)
121 {
122 Debug.Log("OnLoginSuccess " + info);
124 var apexSessionState = StatesService.GetState<ApexSessionState>();
125
126 apexSessionState.IsLoggedIn = true;
127 apexSessionState.Email = info.Email;
128 apexSessionState.UserName = info.First + " " + info.Last;
129 apexSessionState.MinimumPassingScore = info.MinimumPassingScore;
130
131 StatesService.SaveState(apexSessionState);
132
134 }
135
136 private void OnLoginError(FailureResponse info)
137 {
138 Debug.Log("OnLoginError " + info.Message);
140 _loginScreen.ShowErrorMessage(info.Message);
141 }
142 }
143}
void LoadScene(SceneType sceneType)
Logic for saving and unloading states during project execution.
void ShowRememberedCredentials(string login, string password)
void SetOnlineMode(Mode mode)
void ShowErrorMessage(string message)
void SetRememberMe(bool isOn)
void OnApexPingSucceeded(HttpResponseMessage info)
LoginScreen _loginScreen
[SerializeField]
void OnRememberMeToggleValueChanged(bool isToggleOn)
void OnLoginSuccess(LoginResponseContent info)
void OnLoginButtonClicked(string login, string password)
void OnApexPingFailed(HttpResponseMessage info)
void OnLoginError(FailureResponse info)