Files
chainsafe-test/Assets/Web3Unity/Scripts/Scenes/WebLogin.cs
2023-11-28 11:36:18 +05:30

64 lines
1.8 KiB
C#

using System;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.SceneManagement;
#if UNITY_WEBGL
public class WebLogin : MonoBehaviour
{
[DllImport("__Internal")]
private static extern void Web3Connect();
[DllImport("__Internal")]
private static extern string ConnectAccount();
[DllImport("__Internal")]
private static extern void SetConnectAccount(string value);
private int expirationTime;
private string account;
ProjectConfigScriptableObject projectConfigSO = null;
void Start()
{
// loads the data saved from the editor config
projectConfigSO = (ProjectConfigScriptableObject)Resources.Load("ProjectConfigData", typeof(ScriptableObject));
PlayerPrefs.SetString("ProjectID", projectConfigSO.ProjectID);
PlayerPrefs.SetString("ChainID", projectConfigSO.ChainID);
PlayerPrefs.SetString("Chain", projectConfigSO.Chain);
PlayerPrefs.SetString("Network", projectConfigSO.Network);
PlayerPrefs.SetString("RPC", projectConfigSO.RPC);
}
public void OnLogin()
{
Web3Connect();
OnConnected();
}
async private void OnConnected()
{
account = ConnectAccount();
while (account == "")
{
await new WaitForSeconds(1f);
account = ConnectAccount();
};
// save account for next scene
PlayerPrefs.SetString("Account", account);
// reset login message
SetConnectAccount("");
// load next scene
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
public void OnSkip()
{
// burner account for skipped sign in screen
PlayerPrefs.SetString("Account", "");
// move to next scene
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
#endif