Commit 5074e2ef authored by saad's avatar saad

Merge branch 'NewUI' of https://gitlab.caprover.al-arcade.com/root/ssbookminigames into NewUI

# Conflicts:
#	My project/UserSettings/EditorUserSettings.asset
#	My project/UserSettings/Layouts/CurrentMaximizeLayout.dwlt
#	My project/UserSettings/Layouts/default-6000.dwlt
parents 8bee4fe7 0f439457
...@@ -4,41 +4,54 @@ using OneOf; ...@@ -4,41 +4,54 @@ using OneOf;
using Supabase.Gotrue.Exceptions; using Supabase.Gotrue.Exceptions;
using UnityEngine; using UnityEngine;
public class SupabaseAuthentication : MonoBehaviour public class SupabaseAuthentication
{ {
private SupabaseManager supabaseManager; private static SupabaseAuthentication _instance;
public static SupabaseAuthentication Instance => _instance ??= new SupabaseAuthentication();
public static SupabaseAuthentication Instance { private set; get; } public bool IsLoading { get; private set; }
public bool IsLoading { private set; get; } private SupabaseAuthentication() { }
void Awake()
{
Instance = this;
supabaseManager = SupabaseManager.Instance;
}
public async UniTask<OneOf<Success, string>> EnsureSession() public async UniTask<OneOf<Success, string>> EnsureSession()
{ {
try try
{ {
IsLoading = true; IsLoading = true;
supabaseManager.Supabase()!.Auth.LoadSession();
if (supabaseManager.Supabase()!.Auth.CurrentUser == null) var client = SupabaseManager.Instance.Supabase();
if (client == null)
return "Supabase not initialized";
client.Auth.LoadSession();
if (client.Auth.CurrentUser != null)
{ {
await supabaseManager.Supabase()!.Auth.SignInAnonymously(); try
{
await client.Auth.RefreshSession();
return new Success();
}
catch
{
// Refresh failed — fall through to anonymous
}
} }
return new Success(); var session = await client.Auth.SignInAnonymously();
return session?.User != null
? new Success()
: "Anonymous sign in failed";
} }
catch (GotrueException gotrueexception) catch (GotrueException ex)
{ {
return gotrueexception.Message; Debug.LogError($"[Auth] {ex.Message}");
return ex.Message;
} }
catch (Exception e) catch (Exception ex)
{ {
return e.Message; Debug.LogError($"[Auth] {ex.Message}");
return ex.Message;
} }
finally finally
{ {
...@@ -46,85 +59,31 @@ public class SupabaseAuthentication : MonoBehaviour ...@@ -46,85 +59,31 @@ public class SupabaseAuthentication : MonoBehaviour
} }
} }
public async UniTask<OneOf<Success, string>> SignInAnonymously() public async UniTask<OneOf<Success, string>> LogIn(string email, string password)
{ {
try try
{ {
IsLoading = true; IsLoading = true;
await supabaseManager.Supabase()!.Auth.SignInAnonymously();
return new Success();
}
catch (GotrueException gotrueexception)
{
return gotrueexception.Message;
}
catch (Exception e)
{
return e.Message;
}
finally
{
IsLoading = false;
}
}
public async UniTask<OneOf<Success, string>> LogIn(string username, string password) var client = SupabaseManager.Instance.Supabase();
{ if (client == null)
try return "Supabase not initialized";
{
IsLoading = true; await client.Auth.SignIn(email, password);
await supabaseManager.Supabase()!.Auth.SignIn(username, password);
return new Success(); return new Success();
} }
catch (GotrueException gotrueexception) catch (GotrueException ex)
{ {
return gotrueexception.Message; return ex.Message;
} }
catch (Exception e) catch (Exception ex)
{ {
return e.Message; return ex.Message;
} }
finally finally
{ {
IsLoading = false; IsLoading = false;
} }
}
// public async UniTask<OneOf<Success, string>> SignUp(string email, string password, string displayName, string fullName)
// {
// try
// {
// IsLoading = true;
// await supabaseManager.Supabase()!.Auth.SignUp(email, password);
// var userProfile = await UserService.Instance.CreateUserProfile(displayName, fullName, email);
// userProfile.Switch((_) => { }, (error) =>
// {
// Debug.LogError(error);
// });
// return new Success();
// }
// catch (GotrueException gotrueexception)
// {
// IsLoading = false;
// return gotrueexception.Message;
// }
// catch (Exception e)
// {
// return e.Message;
// }
// finally
// {
// IsLoading = false;
// }
// }
// UI button
public void LogOutButton()
{
LogOut();
} }
public async UniTask<OneOf<Success, string>> LogOut() public async UniTask<OneOf<Success, string>> LogOut()
...@@ -132,22 +91,26 @@ public class SupabaseAuthentication : MonoBehaviour ...@@ -132,22 +91,26 @@ public class SupabaseAuthentication : MonoBehaviour
try try
{ {
IsLoading = true; IsLoading = true;
await supabaseManager.Supabase()!.Auth.SignOut();
var client = SupabaseManager.Instance.Supabase();
if (client == null)
return "Supabase not initialized";
await client.Auth.SignOut();
UserService.Instance.ClearUser();
return new Success(); return new Success();
} }
catch (GotrueException gotrueexception) catch (GotrueException ex)
{ {
return gotrueexception.Message; return ex.Message;
} }
catch (Exception e) catch (Exception ex)
{ {
return e.Message; return ex.Message;
} }
finally finally
{ {
IsLoading = false; IsLoading = false;
} }
} }
}
} \ No newline at end of file
...@@ -17,6 +17,9 @@ public class Challenge : BaseModel ...@@ -17,6 +17,9 @@ public class Challenge : BaseModel
[Column("points_earned")] [Column("points_earned")]
public int PointsEarned { get; set; } = 0; public int PointsEarned { get; set; } = 0;
[Column("time_saved")]
public int TimeSaved { get; set; } = 0;
[Column("started_at")] [Column("started_at")]
public DateTime StartedAt { get; set; } public DateTime StartedAt { get; set; }
......
...@@ -13,6 +13,7 @@ public class ChallengeService : Singleton<ChallengeService> ...@@ -13,6 +13,7 @@ public class ChallengeService : Singleton<ChallengeService>
// Add a completed challenge // Add a completed challenge
public async UniTask<OneOf<ChallengeResult, ErrorResult>> AddChallenge( public async UniTask<OneOf<ChallengeResult, ErrorResult>> AddChallenge(
bool hasWon, bool hasWon,
int timeSaved,
int points, int points,
DateTime startTime, DateTime startTime,
DateTime endTime) DateTime endTime)
...@@ -26,6 +27,7 @@ public class ChallengeService : Singleton<ChallengeService> ...@@ -26,6 +27,7 @@ public class ChallengeService : Singleton<ChallengeService>
var challenge = new Challenge var challenge = new Challenge
{ {
HasWon = hasWon, HasWon = hasWon,
TimeSaved = timeSaved,
PointsEarned = points, PointsEarned = points,
StartedAt = startTime, StartedAt = startTime,
EndedAt = endTime, EndedAt = endTime,
......
using System;
using Cysharp.Threading.Tasks;
using Supabase.Gotrue;
using Supabase.Gotrue.Interfaces;
using UnityEngine;
using UnityEngine.SceneManagement;
public class AppRouter : MonoBehaviour
{
private static AppRouter _instance;
public static AppRouter Instance => _instance;
[Header("Splash UI (Boot Scene Only)")]
[SerializeField] private GameObject splashScreen;
[SerializeField] private GameObject errorPanel;
private bool _booted;
private void Awake()
{
if (_instance != null)
{
Destroy(gameObject);
return;
}
_instance = this;
DontDestroyOnLoad(gameObject);
}
private async void Start()
{
if (splashScreen != null) splashScreen.SetActive(true);
if (errorPanel != null) errorPanel.SetActive(false);
await Boot();
}
private async UniTask Boot()
{
// 1. Init Supabase
bool ready = await SupabaseManager.Instance.Initialize();
if (!ready)
{
ShowError("Failed to connect to server");
return;
}
// 2. Listen for unexpected sign-outs
SupabaseManager.Instance.AddAuthStateListener(OnAuthStateChanged);
// 3. Ensure session
var authResult = await SupabaseAuthentication.Instance.EnsureSession();
if (authResult.IsT1)
{
GoToLogin();
return;
}
// 4. Try load profile
var profileResult = await UserService.Instance.GetCurrentUser();
profileResult.Switch(
success => GoToHome(),
error => GoToLogin()
);
_booted = true;
}
// ─── Auth State Listener (Safety Net Only) ───────────────────────
private void OnAuthStateChanged(IGotrueClient<Supabase.Gotrue.User, Supabase.Gotrue.Session> sender, Constants.AuthState newState)
{
switch (newState)
{
case Constants.AuthState.SignedOut:
// Only react if WE didn't trigger the sign-out
if (!SupabaseAuthentication.Instance.IsLoading)
{
Debug.LogWarning("[Auth] Unexpected sign-out detected");
UserService.Instance.ClearUser();
GoToLogin();
}
break;
case Constants.AuthState.TokenRefreshed:
Debug.Log("[Auth] Token refreshed");
break;
}
}
// ─── Navigation ──────────────────────────────────────────────────
public async static void GoToLogin()
{
if (SceneManager.GetActiveScene().name != "Login")
await SceneManager.LoadSceneAsync("Login");
HideSplash();
}
public async static void GoToHome()
{
if (SceneManager.GetActiveScene().name != "MainMenu")
await SceneManager.LoadSceneAsync("MainMenu");
HideSplash();
}
public static async void Logout()
{
await SupabaseAuthentication.Instance.LogOut();
GoToLogin();
}
// ─── Helpers ─────────────────────────────────────────────────────
private static void HideSplash()
{
if (_instance == null) return;
if (_instance.splashScreen != null)
_instance.splashScreen.SetActive(false);
}
private void ShowError(string message)
{
if (splashScreen != null) splashScreen.SetActive(false);
if (errorPanel != null) errorPanel.SetActive(true);
Debug.LogError($"[Boot] {message}");
}
}
\ No newline at end of file
fileFormatVersion: 2
guid: 4f2682cf8a6c26b4bb2d0ce6b08c6ec9
\ No newline at end of file
using System;
using Cysharp.Threading.Tasks; using Cysharp.Threading.Tasks;
using Supabase.Gotrue; using Supabase.Gotrue;
using Supabase.Gotrue.Interfaces; using Supabase.Gotrue.Interfaces;
using UnityEngine; using UnityEngine;
using UnityEngine.Events;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
public class SessionListener : Singleton<SessionListener> public class SessionListener : Singleton<SessionListener>
{ {
[SerializeField] private SupabaseManager SupabaseManager; [SerializeField] private SupabaseManager SupabaseManager;
[SerializeField] private Transform splash; [SerializeField] private Transform splash;
[SerializeField] private LoginPageAnimation LoginPageAnimation;
[SerializeField] private UnityEvent LoggedIn; // public async UniTask HandleSession()
[SerializeField] private UnityEvent LoggedOut; // {
[SerializeField] private UnityEvent NewUser; // var session = await SupabaseAuthentication.Instance.EnsureSession();
public async UniTask HandleSession() // session.Switch(async s =>
{ // {
var session = await SupabaseAuthentication.Instance.EnsureSession(); // var foundUser = await UserFileFoundAndLoaded();
session.Switch(async s => // if (foundUser)
{ // {
var foundUser = await UserFileFoundAndLoaded(); // SceneManager.LoadScene("MainMenu");
// }
if (foundUser) // else
{ // {
LoggedIn.Invoke(); // UserService.Instance.OnUserChange += OnUserChanged;
} // splash.gameObject.SetActive(false);
else // }
{ // },
UserService.Instance.OnUserChange += OnUserChanged; // (error) =>
splash.gameObject.SetActive(false); // {
NewUser.Invoke(); // Debug.LogError(error);
} // });
}, // }
(error) =>
{
Debug.LogError(error);
});
}
public void UnityAuthListener(IGotrueClient<Supabase.Gotrue.User, Session> sender, Constants.AuthState newState) public void UnityAuthListener(IGotrueClient<Supabase.Gotrue.User, Session> sender, Constants.AuthState newState)
...@@ -45,8 +41,13 @@ public class SessionListener : Singleton<SessionListener> ...@@ -45,8 +41,13 @@ public class SessionListener : Singleton<SessionListener>
switch (newState) switch (newState)
{ {
case Constants.AuthState.SignedIn: case Constants.AuthState.SignedIn:
Debug.Log("Signed In");
// OnAuthUserChanged(true);
break; break;
case Constants.AuthState.SignedOut: case Constants.AuthState.SignedOut:
Debug.Log("Signed Out");
// OnAuthUserChanged(false);
break; break;
case Constants.AuthState.UserUpdated: case Constants.AuthState.UserUpdated:
break; break;
...@@ -64,15 +65,46 @@ public class SessionListener : Singleton<SessionListener> ...@@ -64,15 +65,46 @@ public class SessionListener : Singleton<SessionListener>
} }
} }
private void OnUserChanged(User user) // private void OnUserChanged(User user)
{ // {
UserService.Instance.OnUserChange -= OnUserChanged; // UserService.Instance.OnUserChange -= OnUserChanged;
LoggedIn.Invoke(); // SceneManager.LoadScene("MainMenu");
} // }
private async UniTask<bool> UserFileFoundAndLoaded() // private async UniTask OnAuthUserChanged(bool isLoggedIn)
{ // {
var userOrError = await UserService.Instance.LoadCurrentUser(); // if (isLoggedIn)
return userOrError.IsT0; // {
} // var userFound = await UserFileFoundAndLoaded();
// if (userFound)
// {
// SceneManager.LoadScene("MainMenu");
// }
// else
// {
// UserService.Instance.OnUserChange += OnUserChanged;
// splash.gameObject.SetActive(false);
// LoginPageAnimation.ShowLogin();
// }
// }
// else
// {
// if (SceneManager.GetActiveScene().name != "Login")
// {
// print("User signed out, loading login scene");
// SceneManager.LoadScene("Login");
// return;
// }
// await SupabaseAuthentication.Instance.EnsureSession();
// }
// }
// private async UniTask<bool> UserFileFoundAndLoaded()
// {
// // var userOrError = await UserService.Instance.LoadCurrentUser();
// // return userOrError.IsT0;
// }
} }
...@@ -5,107 +5,102 @@ using Supabase.Gotrue; ...@@ -5,107 +5,102 @@ using Supabase.Gotrue;
using UnityEngine; using UnityEngine;
using Client = Supabase.Client; using Client = Supabase.Client;
public class SupabaseManager : Singleton<SupabaseManager> public class SupabaseManager
{ {
[SerializeField] private SessionListener SessionListener; private static SupabaseManager _instance;
public static SupabaseManager Instance => _instance ??= new SupabaseManager();
// Public in case other components are interested in network status
private readonly NetworkStatus _networkStatus = new(); private readonly NetworkStatus _networkStatus = new();
private Client _client;
private bool _initialized;
// Internals public Client Supabase() => _client;
private Client? _client; public bool IsInitialized => _initialized;
public bool IsOnline => _client?.Auth.Online ?? false;
public Client? Supabase() => _client; private SupabaseManager()
private async void Start()
{ {
SupabaseOptions options = new(); Application.quitting += Shutdown;
// We set an option to refresh the token automatically using a background thread. }
options.AutoRefreshToken = true;
// We start setting up the client here
Client client = new(SupabaseSettings.SupabaseURL, SupabaseSettings.SupabaseAnonKey, options);
// The first thing we do is attach the debug listener
client.Auth.AddDebugListener(DebugListener!);
// Next we set up the network status listener and tell it to turn the client online/offline
_networkStatus.Client = (Supabase.Gotrue.Client)client.Auth;
// Next we set up the session persistence - without this the client will forget the session
// each time the app is restarted
client.Auth.SetPersistence(new UnitySession());
_client = client;
// This will be called whenever the session changes
client.Auth.AddStateChangedListener(SessionListener.UnityAuthListener);
SessionListener.HandleSession().Forget();
// Fetch the session from the persistence layer
// If there is a valid/unexpired session available this counts as a user log in
// and will send an event to the UnityAuthListener above.
// client.Auth.LoadSession();
// await SupabaseAuthentication.Instance.EnsureSession();
// Allow unconfirmed user sessions. If you turn this on you will have to complete the
// email verification flow before you can use the session.
client.Auth.Options.AllowUnconfirmedUserSessions = true;
public async UniTask<bool> Initialize()
{
if (_initialized) return true;
// We check the network status to see if we are online or offline using a request to fetch
// the server settings from our project. Here's how we build that URL.
string url = $"{SupabaseSettings.SupabaseURL}/auth/v1/settings?apikey={SupabaseSettings.SupabaseAnonKey}";
try try
{ {
// This will get the current network status var options = new SupabaseOptions
client.Auth.Online = await _networkStatus.StartAsync(url); {
} AutoRefreshToken = true
catch (NotSupportedException) };
{
// Some platforms don't support network status checks, so we just assume we are online var client = new Client(
client.Auth.Online = true; SupabaseSettings.SupabaseURL,
SupabaseSettings.SupabaseAnonKey,
options
);
client.Auth.AddDebugListener((msg, e) =>
{
Debug.Log($"[Supabase] {msg}");
if (e != null) Debug.LogException(e);
});
_networkStatus.Client = (Supabase.Gotrue.Client)client.Auth;
client.Auth.SetPersistence(new UnitySession());
client.Auth.Options.AllowUnconfirmedUserSessions = true;
string url = $"{SupabaseSettings.SupabaseURL}/auth/v1/settings?apikey={SupabaseSettings.SupabaseAnonKey}";
try
{
client.Auth.Online = await _networkStatus.StartAsync(url);
}
catch (NotSupportedException)
{
client.Auth.Online = true;
}
catch (Exception e)
{
Debug.LogWarning($"Network check failed: {e.Message}");
client.Auth.Online = false;
}
if (client.Auth.Online)
{
await client.InitializeAsync();
var config = await client.Auth.Settings();
Debug.Log($"[Supabase] Auto-confirm: {config?.MailerAutoConfirm}");
}
_client = client;
_initialized = true;
Debug.Log("[Supabase] ✓ Initialized");
return true;
} }
catch (Exception e) catch (Exception e)
{ {
// Something else went wrong, so we assume we are offline Debug.LogError($"[Supabase] ✗ Init failed: {e.Message}");
Debug.Log(e.Message, gameObject); return false;
Debug.LogException(e, gameObject);
client.Auth.Online = false;
}
if (client.Auth.Online)
{
// Now we start up the client, which will in turn start up the background thread.
// This will attempt to refresh the session token, which in turn may send a second
// user login event to the UnityAuthListener.
await client.InitializeAsync();
// Here we fetch the server settings and log them to the console
Settings serverConfiguration = (await client.Auth.Settings())!;
Debug.Log($"Auto-confirm emails on this server: {serverConfiguration.MailerAutoConfirm}");
} }
} }
private void DebugListener(string message, Exception e) public void AddAuthStateListener(Supabase.Gotrue.Interfaces.IGotrueClient<Supabase.Gotrue.User, Session>.AuthEventHandler authEventHandler)
{ {
Debug.Log(message, gameObject); _client?.Auth.AddStateChangedListener(authEventHandler);
// ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract
if (e != null)
Debug.LogException(e, gameObject);
} }
// This is called when Unity shuts down. You want to be sure to include this so that the public void RemoveAuthStateListener(Supabase.Gotrue.Interfaces.IGotrueClient<Supabase.Gotrue.User, Session>.AuthEventHandler authEventHandler)
// background thread is terminated cleanly. Keep in mind that if you are running the app
// in the Unity Editor, if you don't call this method you will leak the background thread!
private void OnApplicationQuit()
{ {
if (_client != null) _client?.Auth.RemoveStateChangedListener(authEventHandler);
{ }
_client?.Auth.Shutdown();
_client = null; private void Shutdown()
} {
_client?.Auth.Shutdown();
_client = null;
_initialized = false;
Application.quitting -= Shutdown;
} }
} }
\ No newline at end of file
using System;
using Cysharp.Threading.Tasks; using Cysharp.Threading.Tasks;
using OneOf; using OneOf;
using Supabase.Realtime;
using Supabase.Realtime.PostgresChanges;
using System;
using UnityEngine; using UnityEngine;
public class UserService : Singleton<UserService> public class UserService
{ {
private Supabase.Client supabase => SupabaseManager.Instance.Supabase(); private static UserService _instance;
public static UserService Instance => _instance ??= new UserService();
public User? CurrentUser { private set; get; }
public Action<User> OnUserChange;
private RealtimeChannel _userChannel;
public async UniTask<OneOf<UserResult, ErrorResult>> LoadCurrentUser()
{
var userOrFail = await GetCurrentUser();
userOrFail.Switch(async (user) =>
{
CurrentUser = user.User;
OnUserChange?.Invoke(CurrentUser);
await SubscribeToCurrentUserChanges();
}, (error) =>
{
Debug.LogError(error.Message);
});
return userOrFail;
}
protected async override void Awake()
{
base.Awake();
}
public async UniTask<OneOf<UserResult, ErrorResult>> CreateUserProfile( public User CurrentUser { get; private set; }
string username, public bool HasProfile => CurrentUser != null;
string grade, public event Action<User> OnUserChanged;
string school,
string sex,
string age
)
{
try
{
var user = new User
{
Username = username,
Grade = grade,
School = school,
Sex = sex,
Age = age,
Rank = "normal",
Points = 0,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow
};
await supabase.From<User>().Insert(user); private UserService() { }
CurrentUser = user;
OnUserChange?.Invoke(CurrentUser);
return new UserResult(user);
}
catch (Exception ex)
{
return new ErrorResult(ex.Message);
}
}
public async UniTask<OneOf<UserResult, ErrorResult>> GetCurrentUser() public async UniTask<OneOf<UserResult, ErrorResult>> GetCurrentUser()
{ {
try try
{ {
if (supabase == null) var client = SupabaseManager.Instance.Supabase();
return new ErrorResult("Supabase is null"); var authUser = client?.Auth.CurrentUser;
var authUser = supabase.Auth.CurrentUser;
if (authUser == null) if (authUser == null)
return new ErrorResult("Not authenticated"); return new ErrorResult("Not authenticated");
var user = await supabase var response = await client
.From<User>() .From<User>()
.Where(x => x.Id == authUser.Id) .Where(x => x.Id == authUser.Id)
.Single(); .Get();
if (user == null) if (response?.Models == null || response.Models.Count == 0)
return new ErrorResult("User not found"); return new ErrorResult("Profile not found");
return new UserResult(user); CurrentUser = response.Models[0];
OnUserChanged?.Invoke(CurrentUser);
return new UserResult(CurrentUser);
} }
catch (Exception ex) catch (Exception ex)
{ {
return new ErrorResult(ex.Message + ex.StackTrace); Debug.LogError($"[UserService] GetCurrentUser failed: {ex.Message}");
return new ErrorResult(ex.Message);
} }
} }
public async UniTask<OneOf<UserResult, ErrorResult>> GetUserById(string userId) public async UniTask<OneOf<UserResult, ErrorResult>> CreateProfile(
string username,
string school = null,
string grade = null,
string sex = null,
string age = null)
{ {
try try
{ {
var user = await supabase var client = SupabaseManager.Instance.Supabase();
.From<User>() if (client?.Auth.CurrentUser == null)
.Where(x => x.Id == userId) return new ErrorResult("Not authenticated");
.Single();
if (user == null)
return new ErrorResult("User not found");
return new UserResult(user);
}
catch (Exception ex)
{
return new ErrorResult(ex.StackTrace);
}
}
public async UniTask SubscribeToCurrentUserChanges()
{
var userId = supabase.Auth.CurrentUser?.Id;
if (string.IsNullOrWhiteSpace(userId))
{
Debug.LogError("User ID is null or empty. Cannot subscribe to user changes.");
return;
}
if (_userChannel != null)
{
_userChannel.Unsubscribe();
_userChannel = null;
}
await supabase.Realtime.ConnectAsync();
_userChannel = supabase.Realtime.Channel($"user_{userId}");
_userChannel.Register(new PostgresChangesOptions(schema: "public", table: "users", eventType: PostgresChangesOptions.ListenType.All, filter: $"id=eq.{userId}"));
_userChannel.AddPostgresChangeHandler( var user = new User
PostgresChangesOptions.ListenType.All,
(_, change) =>
{ {
var updatedUser = change.Model<User>(); Username = username,
if (updatedUser == null) School = school,
return; Grade = grade,
Sex = sex,
CurrentUser = updatedUser; Age = age,
OnUserChange?.Invoke(CurrentUser); Rank = "normal",
}); Points = 0,
CreatedAt = DateTime.UtcNow,
UpdatedAt = DateTime.UtcNow
};
await _userChannel.Subscribe(); await client.From<User>().Insert(user);
}
private async void OnDestroy() // Re-fetch to get server-set fields (id, timestamps)
{ var fetchResult = await GetCurrentUser();
if (_userChannel != null) return fetchResult;
}
catch (Exception ex)
{ {
_userChannel.Unsubscribe(); Debug.LogError($"[UserService] CreateProfile failed: {ex.Message}");
_userChannel = null; return new ErrorResult(ex.Message);
} }
} }
public async UniTask<OneOf<UserResult, ErrorResult>> UpdateDisplayName(string newDisplayName) public async UniTask<OneOf<UserResult, ErrorResult>> UpdateProfile(
string username = null,
string school = null,
string grade = null,
string sex = null,
string age = null)
{ {
try try
{ {
var authUser = supabase.Auth.CurrentUser; var client = SupabaseManager.Instance.Supabase();
var authUser = client?.Auth.CurrentUser;
if (authUser == null) if (authUser == null)
return new ErrorResult("Not authenticated"); return new ErrorResult("Not authenticated");
await supabase var update = new User();
if (username != null) update.Username = username;
if (school != null) update.School = school;
if (grade != null) update.Grade = grade;
if (sex != null) update.Sex = sex;
if (age != null) update.Age = age;
await client
.From<User>() .From<User>()
.Where(x => x.Id == authUser.Id.ToString()) .Where(x => x.Id == authUser.Id)
.Update(new User { Username = newDisplayName }); .Update(update);
// Re-fetch
return await GetCurrentUser(); return await GetCurrentUser();
} }
catch (Exception ex) catch (Exception ex)
{ {
Debug.LogError($"[UserService] UpdateProfile failed: {ex.Message}");
return new ErrorResult(ex.Message); return new ErrorResult(ex.Message);
} }
} }
public void ClearUser()
public async UniTask<OneOf<UserResult, ErrorResult>> DeleteCurrentUser()
{ {
try CurrentUser = null;
{ OnUserChanged?.Invoke(null);
var authUser = supabase.Auth.CurrentUser;
if (authUser == null)
return new ErrorResult("Not authenticated");
await supabase
.From<User>()
.Where(x => x.Id == authUser.Id.ToString())
.Delete();
return new UserResult(null);
}
catch (Exception ex)
{
return new ErrorResult(ex.Message);
}
} }
} }
\ No newline at end of file
...@@ -38,7 +38,7 @@ public class HomeController : MonoBehaviour ...@@ -38,7 +38,7 @@ public class HomeController : MonoBehaviour
xpRankEnd = root.Q<Label>("XPRankEnd"); xpRankEnd = root.Q<Label>("XPRankEnd");
nextRankProgressBar = root.Q<CustomProgressBar>("NextRankProgressBar"); nextRankProgressBar = root.Q<CustomProgressBar>("NextRankProgressBar");
UserService.Instance.OnUserChange += OnUserChange; UserService.Instance.OnUserChanged += OnUserChange;
OnUserChange(UserService.Instance.CurrentUser); OnUserChange(UserService.Instance.CurrentUser);
challengeButton = root.Q<Button>("Challenge"); challengeButton = root.Q<Button>("Challenge");
......
...@@ -37,11 +37,17 @@ public class LoginController : MonoBehaviour ...@@ -37,11 +37,17 @@ public class LoginController : MonoBehaviour
public async void RegisterAnon() public async void RegisterAnon()
{ {
print(username.text + grade.value + school.value + sex.value + age.text); var auth = await SupabaseAuthentication.Instance.EnsureSession();
var signUp = await UserService.Instance.CreateUserProfile(username.text, grade.value, school.value, sex.value, age.text); if (auth.IsT1)
{
Debug.LogError($"Authentication failed");
return;
}
var signUp = await UserService.Instance.CreateProfile(username.text, grade.value, school.value, sex.value, age.text);
signUp.Switch(user => signUp.Switch(user =>
{ {
Debug.Log("User created successfully"); AppRouter.GoToHome();
}, error => }, error =>
{ {
Debug.LogError($"Failed to create user: {error.Message}"); Debug.LogError($"Failed to create user: {error.Message}");
......
...@@ -13,9 +13,9 @@ public class ProfileController : MonoBehaviour ...@@ -13,9 +13,9 @@ public class ProfileController : MonoBehaviour
var root = profileDocument.rootVisualElement.Q("Settings"); var root = profileDocument.rootVisualElement.Q("Settings");
name = root.Q<Label>("Username"); name = root.Q<Label>("Username");
logoutButton = root.Q<Button>("LogoutButton"); logoutButton = root.Q<Button>("LogoutButton");
logoutButton.clicked += () => SupabaseAuthentication.Instance.LogOut(); logoutButton.clicked += () => AppRouter.Logout();
UserService.Instance.OnUserChange += OnUserChange; UserService.Instance.OnUserChanged += OnUserChange;
OnUserChange(UserService.Instance.CurrentUser); OnUserChange(UserService.Instance.CurrentUser);
} }
......
...@@ -10,8 +10,8 @@ public class SceneSwitcherHelpers : MonoBehaviour ...@@ -10,8 +10,8 @@ public class SceneSwitcherHelpers : MonoBehaviour
public async void LoadMainMenuAsync() public async void LoadMainMenuAsync()
{ {
await UserService.Instance.LoadCurrentUser(); // await UserService.Instance.LoadCurrentUser();
SceneManager.LoadScene("MainMenu"); // SceneManager.LoadScene("MainMenu");
} }
public void LoadLogin() public void LoadLogin()
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<ui:Label text="👤" name="TextFieldLabel" language-direction="RTL" class="emoji" style="color: rgb(117, 117, 117); margin-bottom: 20px; font-size: 40px; -unity-text-align: middle-right; margin-left: 5px;"/> <ui:Label text="👤" name="TextFieldLabel" language-direction="RTL" class="emoji" style="color: rgb(117, 117, 117); margin-bottom: 20px; font-size: 40px; -unity-text-align: middle-right; margin-left: 5px;"/>
<ui:Label text="اسم المستخدم" name="TextFieldLabel" language-direction="RTL" class="base-text-light" style="color: rgb(117, 117, 117); margin-bottom: 20px; font-size: 35px; -unity-font-definition: url(&quot;project://database/Assets/ALArcade/Hakwaty%20Font/TSHakwaty-DemiBold.otf?fileID=12800000&amp;guid=566b773a07b3d064aa1f4c6ef7b6f6fa&amp;type=3#TSHakwaty-DemiBold&quot;);"/> <ui:Label text="اسم المستخدم" name="TextFieldLabel" language-direction="RTL" class="base-text-light" style="color: rgb(117, 117, 117); margin-bottom: 20px; font-size: 35px; -unity-font-definition: url(&quot;project://database/Assets/ALArcade/Hakwaty%20Font/TSHakwaty-DemiBold.otf?fileID=12800000&amp;guid=566b773a07b3d064aa1f4c6ef7b6f6fa&amp;type=3#TSHakwaty-DemiBold&quot;);"/>
</ui:VisualElement> </ui:VisualElement>
<ui:TextField label="" placeholder-text="" name="Username" value="" language-direction="RTL" class="textField" style="flex-direction: row-reverse; color: rgb(0, 0, 0); -unity-font-definition: url(&quot;project://database/Assets/UI%20Toolkit/UnityThemes/UnityDefaultRuntimeTheme.tss?fileID=2230732570650464555&amp;guid=901fb73b2529c134f9cf372789759383&amp;type=3#NotInter-Regular&quot;); -unity-text-align: upper-left;"> <ui:TextField label="" placeholder-text="" name="Username" value="" language-direction="RTL" class="textField" style="flex-direction: row-reverse; color: rgb(0, 0, 0); -unity-font-definition: url(&quot;project://database/Assets/UI%20Toolkit/UnityThemes/UnityDefaultRuntimeTheme.tss?fileID=2230732570650464555&amp;guid=901fb73b2529c134f9cf372789759383&amp;type=3#NotInter-Regular&quot;); -unity-text-align: upper-right; -unity-text-generator: advanced; justify-content: space-between;">
<ui:Image source="project://database/Assets/Art/export/mail@3x.png?fileID=2800000&amp;guid=0d76662a81af3a7408ca3c2975f08b8f&amp;type=3#mail@3x" tint-color="rgb(158, 158, 158)" style="margin-left: 25px; width: 51px; display: none;"/> <ui:Image source="project://database/Assets/Art/export/mail@3x.png?fileID=2800000&amp;guid=0d76662a81af3a7408ca3c2975f08b8f&amp;type=3#mail@3x" tint-color="rgb(158, 158, 158)" style="margin-left: 25px; width: 51px; display: none;"/>
</ui:TextField> </ui:TextField>
</ui:VisualElement> </ui:VisualElement>
......
This diff is collapsed.
fileFormatVersion: 2 fileFormatVersion: 2
guid: 745e9c17df962b24a80a69d5da8e5d38 guid: 89a5ca01ddc649a498cda8dc02cf28e3
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
......
...@@ -119,50 +119,6 @@ NavMeshSettings: ...@@ -119,50 +119,6 @@ NavMeshSettings:
debug: debug:
m_Flags: 0 m_Flags: 0
m_NavMeshData: {fileID: 0} m_NavMeshData: {fileID: 0}
--- !u!1 &69988539
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 69988541}
- component: {fileID: 69988540}
m_Layer: 0
m_Name: '[Singleton] UserService'
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &69988540
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 69988539}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ef6d4039bfd054597970b347c242a7a1, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::UserService
--- !u!4 &69988541
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 69988539}
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 &652396693 --- !u!1 &652396693
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -768,4 +724,3 @@ SceneRoots: ...@@ -768,4 +724,3 @@ SceneRoots:
m_Roots: m_Roots:
- {fileID: 2035341440} - {fileID: 2035341440}
- {fileID: 1709733325} - {fileID: 1709733325}
- {fileID: 69988541}
...@@ -12,10 +12,11 @@ public class LoginPageAnimation : MonoBehaviour ...@@ -12,10 +12,11 @@ public class LoginPageAnimation : MonoBehaviour
Application.targetFrameRate = 60; Application.targetFrameRate = 60;
ContantPanel = loginPage.rootVisualElement.Q<VisualElement>("ContantPanel"); ContantPanel = loginPage.rootVisualElement.Q<VisualElement>("ContantPanel");
}
public void ShowLogin() ContantPanel.schedule.Execute(() =>
{ {
ContantPanel.style.translate = new StyleTranslate(new Translate(0, 0)); ContantPanel.style.translate = new StyleTranslate(new Translate(0, 0));
}).StartingIn(200);
} }
} }
fileFormatVersion: 2
guid: d308d9efe86ef6242a75802e1f37de49
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: e5036f96e3c15ea49b96f7ee989dd3c1
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 9e9f7f46a1ba34c338eb95b193ae1327
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: b18b93d4b5d00384ba417df18aeac5a3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 92a80e6f6cd90464b8f87b98fc72999a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
...@@ -1842,9 +1842,9 @@ MonoBehaviour: ...@@ -1842,9 +1842,9 @@ MonoBehaviour:
m_UiScaleMode: 1 m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100 m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1 m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080} m_ReferenceResolution: {x: 1080, y: 2400}
m_ScreenMatchMode: 0 m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0 m_MatchWidthOrHeight: 0.5
m_PhysicalUnit: 3 m_PhysicalUnit: 3
m_FallbackScreenDPI: 96 m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96 m_DefaultSpriteDPI: 96
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<ui:VisualElement name="Padding" class="padding" style="flex-grow: 1; flex-direction: row-reverse; align-items: center; background-color: rgb(255, 255, 255); padding-top: 25px; padding-bottom: 25px; border-top-left-radius: 30px; border-top-right-radius: 30px; border-bottom-right-radius: 30px; border-bottom-left-radius: 30px; border-top-width: 0; border-right-width: 0; border-bottom-width: 10px; border-left-width: 0; border-left-color: rgba(0, 0, 0, 0.25); border-right-color: rgba(0, 0, 0, 0.25); border-top-color: rgba(0, 0, 0, 0.25); border-bottom-color: rgba(0, 0, 0, 0.25);"> <ui:VisualElement name="Padding" class="padding" style="flex-grow: 1; flex-direction: row-reverse; align-items: center; background-color: rgb(255, 255, 255); padding-top: 25px; padding-bottom: 25px; border-top-left-radius: 30px; border-top-right-radius: 30px; border-bottom-right-radius: 30px; border-bottom-left-radius: 30px; border-top-width: 0; border-right-width: 0; border-bottom-width: 10px; border-left-width: 0; border-left-color: rgba(0, 0, 0, 0.25); border-right-color: rgba(0, 0, 0, 0.25); border-top-color: rgba(0, 0, 0, 0.25); border-bottom-color: rgba(0, 0, 0, 0.25);">
<ui:Label text="1" name="IndexLabel" class="base-text-bold" style="color: rgb(158, 158, 158); font-size: 34px; margin-left: 5px; width: 60px;"/> <ui:Label text="1" name="IndexLabel" class="base-text-bold" style="color: rgb(158, 158, 158); font-size: 34px; margin-left: 5px; width: 60px;"/>
<ui:VisualElement name="PlayerImage" style="flex-grow: 0; height: 125px; width: 125px; background-image: url(&quot;project://database/Assets/GUI%20PRO%20Kit%20-%20Simple%20Casual/Sprite/Demo/Demo_Character/UserPicture_01_Sample.png?fileID=2800000&amp;guid=358c17b4dd4c0461f8bcaf75f245f54e&amp;type=3#UserPicture_01_Sample&quot;); -unity-background-scale-mode: scale-to-fit; margin-left: 35px; background-color: rgb(209, 209, 209); border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-right-radius: 50%; border-bottom-left-radius: 50%;"/> <ui:VisualElement name="PlayerImage" style="flex-grow: 0; height: 125px; width: 125px; background-image: url(&quot;project://database/Assets/GUI%20PRO%20Kit%20-%20Simple%20Casual/Sprite/Demo/Demo_Character/UserPicture_01_Sample.png?fileID=2800000&amp;guid=358c17b4dd4c0461f8bcaf75f245f54e&amp;type=3#UserPicture_01_Sample&quot;); -unity-background-scale-mode: scale-to-fit; margin-left: 35px; background-color: rgb(209, 209, 209); border-top-left-radius: 50%; border-top-right-radius: 50%; border-bottom-right-radius: 50%; border-bottom-left-radius: 50%;"/>
<ui:VisualElement name="GameDetailsPanel" style="height: 117px; width: auto; justify-content: space-between;"> <ui:VisualElement name="GameDetailsPanel" style="height: 117px; width: 404px; justify-content: space-between;">
<ui:Label text="عبد الرحمن" name="PlayerNameLabel" class="base-text-bold" style="font-size: 40px; height: auto; flex-shrink: 0; -unity-font-definition: url(&quot;project://database/Assets/ALArcade/Hakwaty%20Font/TSHakwaty-DemiBold.otf?fileID=12800000&amp;guid=566b773a07b3d064aa1f4c6ef7b6f6fa&amp;type=3#TSHakwaty-DemiBold&quot;);"/> <ui:Label text="عبد الرحمن" name="PlayerNameLabel" class="base-text-bold" style="font-size: 40px; height: auto; flex-shrink: 0; -unity-font-definition: url(&quot;project://database/Assets/ALArcade/Hakwaty%20Font/TSHakwaty-DemiBold.otf?fileID=12800000&amp;guid=566b773a07b3d064aa1f4c6ef7b6f6fa&amp;type=3#TSHakwaty-DemiBold&quot;);"/>
<ui:Label text="ماستر" name="RankLabel" language-direction="RTL" class="base-text-bold" style="font-size: 26px; white-space: pre-wrap; flex-shrink: 0; translate: 0% -13px; color: rgb(158, 158, 158); -unity-font-definition: url(&quot;project://database/Assets/ALArcade/Hakwaty%20Font/TS%20Hakwaty%20Light.otf?fileID=12800000&amp;guid=aeb653dff1f4d2f4fad340e3cf210c77&amp;type=3#TS Hakwaty Light&quot;); -unity-font-style: bold;"/> <ui:Label text="ماستر" name="RankLabel" language-direction="RTL" class="base-text-bold" style="font-size: 26px; white-space: pre-wrap; flex-shrink: 0; translate: 0% -13px; color: rgb(158, 158, 158); -unity-font-definition: url(&quot;project://database/Assets/ALArcade/Hakwaty%20Font/TS%20Hakwaty%20Light.otf?fileID=12800000&amp;guid=aeb653dff1f4d2f4fad340e3cf210c77&amp;type=3#TS Hakwaty Light&quot;); -unity-font-style: bold;"/>
</ui:VisualElement> </ui:VisualElement>
......
{"TestSuite":"","Date":0,"Player":{"Development":false,"ScreenWidth":0,"ScreenHeight":0,"ScreenRefreshRate":0,"Fullscreen":false,"Vsync":0,"AntiAliasing":0,"Batchmode":false,"RenderThreadingMode":"MultiThreaded","MtRendering":false,"GraphicsJobs":false,"GpuSkinning":true,"Platform":"","ColorSpace":"","AnisotropicFiltering":"","BlendWeights":"","GraphicsApi":"","ScriptingBackend":"IL2CPP","AndroidTargetSdkVersion":"AndroidApiLevelAuto","AndroidBuildSystem":"Gradle","BuildTarget":"Android","StereoRenderingPath":"MultiPass"},"Hardware":{"OperatingSystem":"","DeviceModel":"","DeviceName":"","ProcessorType":"","ProcessorCount":0,"GraphicsDeviceName":"","SystemMemorySizeMB":0},"Editor":{"Version":"6000.3.12f1","Branch":"6000.3/staging","Changeset":"fca03ac9b0d5","Date":1773805432},"Dependencies":["com.cysharp.unitask@2.5.10","com.github-glitchenzo.nugetforunity@4.5.0","com.unity.2d.sprite@1.0.0","com.unity.ai.navigation@2.0.11","com.unity.cinemachine@3.1.6","com.unity.collab-proxy@2.11.4","com.unity.ide.rider@3.0.39","com.unity.ide.visualstudio@2.0.26","com.unity.inputsystem@1.19.0","com.unity.multiplayer.center@1.0.1","com.unity.nuget.newtonsoft-json@3.2.2","com.unity.postprocessing@3.5.4","com.unity.recorder@5.1.6","com.unity.render-pipelines.universal@17.3.0","com.unity.shadergraph@17.3.0","com.unity.test-framework@1.6.0","com.unity.timeline@1.8.11","com.unity.ugui@2.0.0","com.unity.visualeffectgraph@17.3.0","com.unity.visualscripting@1.9.11","media.lightside.unitext@1.0.0","com.unity.modules.accessibility@1.0.0","com.unity.modules.adaptiveperformance@1.0.0","com.unity.modules.ai@1.0.0","com.unity.modules.androidjni@1.0.0","com.unity.modules.animation@1.0.0","com.unity.modules.assetbundle@1.0.0","com.unity.modules.audio@1.0.0","com.unity.modules.cloth@1.0.0","com.unity.modules.director@1.0.0","com.unity.modules.imageconversion@1.0.0","com.unity.modules.imgui@1.0.0","com.unity.modules.jsonserialize@1.0.0","com.unity.modules.particlesystem@1.0.0","com.unity.modules.physics@1.0.0","com.unity.modules.physics2d@1.0.0","com.unity.modules.screencapture@1.0.0","com.unity.modules.terrain@1.0.0","com.unity.modules.terrainphysics@1.0.0","com.unity.modules.tilemap@1.0.0","com.unity.modules.ui@1.0.0","com.unity.modules.uielements@1.0.0","com.unity.modules.umbra@1.0.0","com.unity.modules.unityanalytics@1.0.0","com.unity.modules.unitywebrequest@1.0.0","com.unity.modules.unitywebrequestassetbundle@1.0.0","com.unity.modules.unitywebrequestaudio@1.0.0","com.unity.modules.unitywebrequesttexture@1.0.0","com.unity.modules.unitywebrequestwww@1.0.0","com.unity.modules.vectorgraphics@1.0.0","com.unity.modules.vehicles@1.0.0","com.unity.modules.video@1.0.0","com.unity.modules.vr@1.0.0","com.unity.modules.wind@1.0.0","com.unity.modules.xr@1.0.0","com.unity.modules.subsystems@1.0.0","com.unity.modules.hierarchycore@1.0.0","com.unity.render-pipelines.core@17.3.0","com.unity.ext.nunit@2.0.5","com.unity.searcher@4.9.4","com.unity.render-pipelines.universal-config@17.0.3","com.unity.collections@2.6.5","com.unity.bindings.openimageio@1.0.2","com.unity.splines@2.8.4","com.unity.burst@1.8.28","com.unity.mathematics@1.3.3","com.unity.nuget.mono-cecil@1.11.6","com.unity.test-framework.performance@3.2.0","com.unity.settings-manager@2.1.1"],"Results":[]}
\ No newline at end of file
{"MeasurementCount":-1}
\ No newline at end of file
...@@ -83,7 +83,9 @@ public class ChallengeManager : MonoBehaviour ...@@ -83,7 +83,9 @@ public class ChallengeManager : MonoBehaviour
currentGameIndex++; currentGameIndex++;
if (currentGameIndex >= gameSceneNames.Count) if (currentGameIndex >= gameSceneNames.Count)
{ {
WonChallenge(timeSaved, timeSaved * timeSavedBonusMultiplier).Forget(); var pointsEarnedTotal = winningPoints + (timeSaved * timeSavedBonusMultiplier);
WonChallenge(timeSaved, pointsEarnedTotal).Forget();
return; return;
} }
...@@ -121,7 +123,7 @@ public class ChallengeManager : MonoBehaviour ...@@ -121,7 +123,7 @@ public class ChallengeManager : MonoBehaviour
// Show results, reset challenge, etc. // Show results, reset challenge, etc.
challengeCanvas.ShowChallengeResult(false, 0, penaltiesPerGame[currentGameIndex]); challengeCanvas.ShowChallengeResult(false, 0, penaltiesPerGame[currentGameIndex]);
await ChallengeService.Instance.AddChallenge(false, -penaltiesPerGame[currentGameIndex], startTime, DateTime.UtcNow); await ChallengeService.Instance.AddChallenge(false, -penaltiesPerGame[currentGameIndex], 0, startTime, DateTime.UtcNow);
} }
private async UniTask WonChallenge(int timeSaved, int pointsEarned) private async UniTask WonChallenge(int timeSaved, int pointsEarned)
...@@ -129,7 +131,7 @@ public class ChallengeManager : MonoBehaviour ...@@ -129,7 +131,7 @@ public class ChallengeManager : MonoBehaviour
Debug.Log("Challenge completed! Total time saved: " + timeSaved); Debug.Log("Challenge completed! Total time saved: " + timeSaved);
challengeCanvas.ShowChallengeResult(true, timeSaved, pointsEarned); challengeCanvas.ShowChallengeResult(true, timeSaved, pointsEarned);
await ChallengeService.Instance.AddChallenge(true, timeSaved, startTime, DateTime.UtcNow); await ChallengeService.Instance.AddChallenge(true, timeSaved, pointsEarned, startTime, DateTime.UtcNow);
} }
public void EndChallenge() public void EndChallenge()
......
...@@ -603,6 +603,7 @@ MonoBehaviour: ...@@ -603,6 +603,7 @@ MonoBehaviour:
gameSceneNames: gameSceneNames:
- cs - cs
- tf - tf
- mcq
transitionSettings: {fileID: 11400000, guid: 057babd6f13132c449650d99e3c4e99c, type: 2} transitionSettings: {fileID: 11400000, guid: 057babd6f13132c449650d99e3c4e99c, type: 2}
winningPoints: 100 winningPoints: 100
timeSavedBonusMultiplier: 2 timeSavedBonusMultiplier: 2
......
...@@ -24,7 +24,7 @@ MonoBehaviour: ...@@ -24,7 +24,7 @@ MonoBehaviour:
m_Scale: 1 m_Scale: 1
m_ReferenceDpi: 96 m_ReferenceDpi: 96
m_FallbackDpi: 96 m_FallbackDpi: 96
m_ReferenceResolution: {x: 1080, y: 1920} m_ReferenceResolution: {x: 1080, y: 2400}
m_ScreenMatchMode: 0 m_ScreenMatchMode: 0
m_Match: 0 m_Match: 0
m_SortingOrder: 0 m_SortingOrder: 0
......
fileFormatVersion: 2 fileFormatVersion: 2
guid: 38645482f82302843938b3d9b2b8e345 guid: 38645482f82302843938b3d9b2b8e345
TextureImporter: TextureImporter:
fileIDToRecycleName: {} internalIDToNameTable: []
externalObjects: {} externalObjects: {}
serializedVersion: 7 serializedVersion: 13
mipmaps: mipmaps:
mipMapMode: 0 mipMapMode: 0
enableMipMap: 1 enableMipMap: 1
sRGBTexture: 1 sRGBTexture: 1
linearTexture: 0 linearTexture: 0
fadeOut: 0 fadeOut: 0
borderMipMap: 0 borderMipMap: 0
mipMapsPreserveCoverage: 0 mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5 alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1 mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3 mipMapFadeDistanceEnd: 3
bumpmap: bumpmap:
convertToNormalMap: 0 convertToNormalMap: 0
externalNormalMap: 0 externalNormalMap: 0
heightScale: 0.25 heightScale: 0.25
normalMapFilter: 0 normalMapFilter: 0
isReadable: 0 flipGreenChannel: 0
streamingMipmaps: 1 isReadable: 0
streamingMipmapsPriority: 0 streamingMipmaps: 1
grayScaleToAlpha: 0 streamingMipmapsPriority: 0
generateCubemap: 6 vTOnly: 0
cubemapConvolution: 0 ignoreMipmapLimit: 0
seamlessCubemap: 0 grayScaleToAlpha: 0
textureFormat: 1 generateCubemap: 6
maxTextureSize: 2048 cubemapConvolution: 0
textureSettings: seamlessCubemap: 0
serializedVersion: 2 textureFormat: 1
filterMode: 1 maxTextureSize: 2048
aniso: 3 textureSettings:
mipBias: 0 serializedVersion: 2
wrapU: 1 filterMode: 1
wrapV: 1 aniso: 3
wrapW: 1 mipBias: 0
nPOTScale: 1 wrapU: 1
lightmap: 0 wrapV: 1
compressionQuality: 50 wrapW: 1
spriteMode: 0 nPOTScale: 1
spriteExtrude: 1 lightmap: 0
spriteMeshType: 1 compressionQuality: 50
alignment: 0 spriteMode: 0
spritePivot: {x: 0.5, y: 0.5} spriteExtrude: 1
spritePixelsToUnits: 100 spriteMeshType: 1
spriteBorder: {x: 0, y: 0, z: 0, w: 0} alignment: 0
spriteGenerateFallbackPhysicsShape: 1 spritePivot: {x: 0.5, y: 0.5}
alphaUsage: 0 spritePixelsToUnits: 100
alphaIsTransparency: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteTessellationDetail: -1 spriteGenerateFallbackPhysicsShape: 1
textureType: 6 alphaUsage: 0
textureShape: 1 alphaIsTransparency: 0
singleChannelComponent: 0 spriteTessellationDetail: -1
maxTextureSizeSet: 0 textureType: 6
compressionQualitySet: 0 textureShape: 1
textureFormatSet: 0 singleChannelComponent: 0
platformSettings: flipbookRows: 1
- serializedVersion: 2 flipbookColumns: 1
buildTarget: DefaultTexturePlatform maxTextureSizeSet: 0
maxTextureSize: 2048 compressionQualitySet: 0
resizeAlgorithm: 0 textureFormatSet: 0
textureFormat: -1 ignorePngGamma: 0
textureCompression: 1 applyGammaDecoding: 0
compressionQuality: 50 swizzle: 50462976
crunchedCompression: 0 cookieLightType: 0
allowsAlphaSplitting: 0 platformSettings:
overridden: 0 - serializedVersion: 4
androidETC2FallbackOverride: 0 buildTarget: DefaultTexturePlatform
spriteSheet: maxTextureSize: 2048
serializedVersion: 2 resizeAlgorithm: 0
sprites: [] textureFormat: -1
outline: [] textureCompression: 2
physicsShape: [] compressionQuality: 50
bones: [] crunchedCompression: 0
spriteID: allowsAlphaSplitting: 0
vertices: [] overridden: 0
indices: ignorePlatformSupport: 0
edges: [] androidETC2FallbackOverride: 0
weights: [] forceMaximumCompressionQuality_BC6H_BC7: 0
spritePackingTag: - serializedVersion: 4
pSDRemoveMatte: 0 buildTarget: Standalone
pSDShowRemoveMatteOption: 0 maxTextureSize: 2048
userData: resizeAlgorithm: 0
assetBundleName: textureFormat: -1
assetBundleVariant: textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 5c2abfa81b784154abbfcfd22f2e73a1 guid: 5c2abfa81b784154abbfcfd22f2e73a1
TextureImporter: TextureImporter:
fileIDToRecycleName: {} internalIDToNameTable: []
externalObjects: {} externalObjects: {}
serializedVersion: 7 serializedVersion: 13
mipmaps: mipmaps:
mipMapMode: 0 mipMapMode: 0
enableMipMap: 1 enableMipMap: 1
sRGBTexture: 1 sRGBTexture: 1
linearTexture: 0 linearTexture: 0
fadeOut: 0 fadeOut: 0
borderMipMap: 0 borderMipMap: 0
mipMapsPreserveCoverage: 0 mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5 alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1 mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3 mipMapFadeDistanceEnd: 3
bumpmap: bumpmap:
convertToNormalMap: 0 convertToNormalMap: 0
externalNormalMap: 0 externalNormalMap: 0
heightScale: 0.25 heightScale: 0.25
normalMapFilter: 0 normalMapFilter: 0
isReadable: 0 flipGreenChannel: 0
streamingMipmaps: 1 isReadable: 0
streamingMipmapsPriority: 0 streamingMipmaps: 1
grayScaleToAlpha: 0 streamingMipmapsPriority: 0
generateCubemap: 6 vTOnly: 0
cubemapConvolution: 0 ignoreMipmapLimit: 0
seamlessCubemap: 0 grayScaleToAlpha: 0
textureFormat: 1 generateCubemap: 6
maxTextureSize: 2048 cubemapConvolution: 0
textureSettings: seamlessCubemap: 0
serializedVersion: 2 textureFormat: 1
filterMode: 1 maxTextureSize: 2048
aniso: 3 textureSettings:
mipBias: 0 serializedVersion: 2
wrapU: 1 filterMode: 1
wrapV: 1 aniso: 3
wrapW: 1 mipBias: 0
nPOTScale: 1 wrapU: 1
lightmap: 0 wrapV: 1
compressionQuality: 50 wrapW: 1
spriteMode: 0 nPOTScale: 1
spriteExtrude: 1 lightmap: 0
spriteMeshType: 1 compressionQuality: 50
alignment: 0 spriteMode: 0
spritePivot: {x: 0.5, y: 0.5} spriteExtrude: 1
spritePixelsToUnits: 100 spriteMeshType: 1
spriteBorder: {x: 0, y: 0, z: 0, w: 0} alignment: 0
spriteGenerateFallbackPhysicsShape: 1 spritePivot: {x: 0.5, y: 0.5}
alphaUsage: 0 spritePixelsToUnits: 100
alphaIsTransparency: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteTessellationDetail: -1 spriteGenerateFallbackPhysicsShape: 1
textureType: 6 alphaUsage: 0
textureShape: 1 alphaIsTransparency: 0
singleChannelComponent: 0 spriteTessellationDetail: -1
maxTextureSizeSet: 0 textureType: 6
compressionQualitySet: 0 textureShape: 1
textureFormatSet: 0 singleChannelComponent: 0
platformSettings: flipbookRows: 1
- serializedVersion: 2 flipbookColumns: 1
buildTarget: DefaultTexturePlatform maxTextureSizeSet: 0
maxTextureSize: 2048 compressionQualitySet: 0
resizeAlgorithm: 0 textureFormatSet: 0
textureFormat: -1 ignorePngGamma: 0
textureCompression: 1 applyGammaDecoding: 0
compressionQuality: 50 swizzle: 50462976
crunchedCompression: 0 cookieLightType: 0
allowsAlphaSplitting: 0 platformSettings:
overridden: 0 - serializedVersion: 4
androidETC2FallbackOverride: 0 buildTarget: DefaultTexturePlatform
spriteSheet: maxTextureSize: 2048
serializedVersion: 2 resizeAlgorithm: 0
sprites: [] textureFormat: -1
outline: [] textureCompression: 2
physicsShape: [] compressionQuality: 50
bones: [] crunchedCompression: 0
spriteID: allowsAlphaSplitting: 0
vertices: [] overridden: 0
indices: ignorePlatformSupport: 0
edges: [] androidETC2FallbackOverride: 0
weights: [] forceMaximumCompressionQuality_BC6H_BC7: 0
spritePackingTag: - serializedVersion: 4
pSDRemoveMatte: 0 buildTarget: Standalone
pSDShowRemoveMatteOption: 0 maxTextureSize: 2048
userData: resizeAlgorithm: 0
assetBundleName: textureFormat: -1
assetBundleVariant: textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 14d99eba68deb5c419739be53229234f guid: 14d99eba68deb5c419739be53229234f
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 1a72c321dc0ef67408cdc146ea283607 guid: 1a72c321dc0ef67408cdc146ea283607
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 5c1be5c0a92e945418a09e0b4b56cd15 guid: 5c1be5c0a92e945418a09e0b4b56cd15
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: f319d2d4df093224684b4dae47534bb6 guid: f319d2d4df093224684b4dae47534bb6
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 8bff01e3b001df7459b7334c615fc50d guid: 8bff01e3b001df7459b7334c615fc50d
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: f22b5645f939fc14eb097b1189fb2c8f guid: f22b5645f939fc14eb097b1189fb2c8f
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 4c246300583a15b4690337afb12daf70 guid: 4c246300583a15b4690337afb12daf70
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 5debba57b5b312647adf406fd49d2d1d guid: 5debba57b5b312647adf406fd49d2d1d
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2 fileFormatVersion: 2
guid: 218bb83e223fd5946a08a96e879ca127 guid: 218bb83e223fd5946a08a96e879ca127
TextureImporter: TextureImporter:
fileIDToRecycleName: internalIDToNameTable:
8900000: generatedCubemap - first:
externalObjects: {} 89: 8900000
serializedVersion: 7 second: generatedCubemap
mipmaps: externalObjects: {}
mipMapMode: 0 serializedVersion: 13
enableMipMap: 1 mipmaps:
sRGBTexture: 1 mipMapMode: 0
linearTexture: 0 enableMipMap: 1
fadeOut: 0 sRGBTexture: 1
borderMipMap: 0 linearTexture: 0
mipMapsPreserveCoverage: 0 fadeOut: 0
alphaTestReferenceValue: 0.5 borderMipMap: 0
mipMapFadeDistanceStart: 1 mipMapsPreserveCoverage: 0
mipMapFadeDistanceEnd: 3 alphaTestReferenceValue: 0.5
bumpmap: mipMapFadeDistanceStart: 1
convertToNormalMap: 0 mipMapFadeDistanceEnd: 3
externalNormalMap: 0 bumpmap:
heightScale: 0.25 convertToNormalMap: 0
normalMapFilter: 0 externalNormalMap: 0
isReadable: 0 heightScale: 0.25
streamingMipmaps: 0 normalMapFilter: 0
streamingMipmapsPriority: 0 flipGreenChannel: 0
grayScaleToAlpha: 0 isReadable: 0
generateCubemap: 6 streamingMipmaps: 0
cubemapConvolution: 1 streamingMipmapsPriority: 0
seamlessCubemap: 1 vTOnly: 0
textureFormat: 1 ignoreMipmapLimit: 0
maxTextureSize: 2048 grayScaleToAlpha: 0
textureSettings: generateCubemap: 6
serializedVersion: 2 cubemapConvolution: 1
filterMode: 2 seamlessCubemap: 1
aniso: 0 textureFormat: 1
mipBias: 0 maxTextureSize: 2048
wrapU: 1 textureSettings:
wrapV: 1 serializedVersion: 2
wrapW: 1 filterMode: 2
nPOTScale: 1 aniso: 0
lightmap: 0 mipBias: 0
compressionQuality: 50 wrapU: 1
spriteMode: 0 wrapV: 1
spriteExtrude: 1 wrapW: 1
spriteMeshType: 1 nPOTScale: 1
alignment: 0 lightmap: 0
spritePivot: {x: 0.5, y: 0.5} compressionQuality: 50
spritePixelsToUnits: 100 spriteMode: 0
spriteBorder: {x: 0, y: 0, z: 0, w: 0} spriteExtrude: 1
spriteGenerateFallbackPhysicsShape: 1 spriteMeshType: 1
alphaUsage: 1 alignment: 0
alphaIsTransparency: 0 spritePivot: {x: 0.5, y: 0.5}
spriteTessellationDetail: -1 spritePixelsToUnits: 100
textureType: 0 spriteBorder: {x: 0, y: 0, z: 0, w: 0}
textureShape: 2 spriteGenerateFallbackPhysicsShape: 1
singleChannelComponent: 0 alphaUsage: 1
maxTextureSizeSet: 0 alphaIsTransparency: 0
compressionQualitySet: 0 spriteTessellationDetail: -1
textureFormatSet: 0 textureType: 0
platformSettings: textureShape: 2
- serializedVersion: 2 singleChannelComponent: 0
buildTarget: DefaultTexturePlatform flipbookRows: 1
maxTextureSize: 2048 flipbookColumns: 1
resizeAlgorithm: 0 maxTextureSizeSet: 0
textureFormat: -1 compressionQualitySet: 0
textureCompression: 1 textureFormatSet: 0
compressionQuality: 100 ignorePngGamma: 0
crunchedCompression: 0 applyGammaDecoding: 0
allowsAlphaSplitting: 0 swizzle: 50462976
overridden: 0 cookieLightType: 0
androidETC2FallbackOverride: 0 platformSettings:
spriteSheet: - serializedVersion: 4
serializedVersion: 2 buildTarget: DefaultTexturePlatform
sprites: [] maxTextureSize: 2048
outline: [] resizeAlgorithm: 0
physicsShape: [] textureFormat: -1
bones: [] textureCompression: 1
spriteID: compressionQuality: 100
vertices: [] crunchedCompression: 0
indices: allowsAlphaSplitting: 0
edges: [] overridden: 0
weights: [] ignorePlatformSupport: 0
spritePackingTag: androidETC2FallbackOverride: 0
pSDRemoveMatte: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
pSDShowRemoveMatteOption: 0 - serializedVersion: 4
userData: buildTarget: Standalone
assetBundleName: maxTextureSize: 2048
assetBundleVariant: resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
- serializedVersion: 4
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 1
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
...@@ -68,7 +68,23 @@ MonoBehaviour: ...@@ -68,7 +68,23 @@ MonoBehaviour:
- rid: 5240940957688397888 - rid: 5240940957688397888
- rid: 5240940957688397889 - rid: 5240940957688397889
m_RuntimeSettings: m_RuntimeSettings:
m_List: [] m_List:
- rid: 1321912066682388550
- rid: 5227943654909018112
- rid: 1321912066682388552
- rid: 1321912066682388554
- rid: 1321912066682388556
- rid: 1321912066682388558
- rid: 1321912066682388559
- rid: 1321912066682388560
- rid: 1321912066682388561
- rid: 1321912066682388562
- rid: 1321912066682388568
- rid: 1321912066682388569
- rid: 1321912066682388570
- rid: 1321912066682388573
- rid: 1321912066682388574
- rid: 5240940957688397889
m_AssetVersion: 10 m_AssetVersion: 10
m_ObsoleteDefaultVolumeProfile: {fileID: 0} m_ObsoleteDefaultVolumeProfile: {fileID: 0}
m_RenderingLayerNames: m_RenderingLayerNames:
......
...@@ -66,14 +66,14 @@ ...@@ -66,14 +66,14 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.collections": { "com.unity.collections": {
"version": "2.6.2", "version": "2.6.5",
"depth": 1, "depth": 1,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
"com.unity.burst": "1.8.23", "com.unity.burst": "1.8.27",
"com.unity.mathematics": "1.3.2", "com.unity.mathematics": "1.3.2",
"com.unity.test-framework": "1.4.6", "com.unity.test-framework": "1.4.6",
"com.unity.nuget.mono-cecil": "1.11.5", "com.unity.nuget.mono-cecil": "1.11.6",
"com.unity.test-framework.performance": "3.0.3" "com.unity.test-framework.performance": "3.0.3"
}, },
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
...@@ -217,7 +217,7 @@ ...@@ -217,7 +217,7 @@
} }
}, },
"com.unity.splines": { "com.unity.splines": {
"version": "2.8.2", "version": "2.8.4",
"depth": 1, "depth": 1,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
......
...@@ -5,6 +5,9 @@ EditorBuildSettings: ...@@ -5,6 +5,9 @@ EditorBuildSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 2 serializedVersion: 2
m_Scenes: m_Scenes:
- enabled: 1
path: Assets/AppUI/NewAppUI/Scene/Boot.unity
guid: 89a5ca01ddc649a498cda8dc02cf28e3
- enabled: 1 - enabled: 1
path: Assets/AppUI/NewAppUI/Scene/Login.unity path: Assets/AppUI/NewAppUI/Scene/Login.unity
guid: 4fa5e0aa88e167d4aa3deb5d7b58efd2 guid: 4fa5e0aa88e167d4aa3deb5d7b58efd2
......
...@@ -13,6 +13,9 @@ scopes = { ...@@ -13,6 +13,9 @@ scopes = {
"picker_visibility_flags.00000000" = "0" "picker_visibility_flags.00000000" = "0"
"picker_item_size.00000000" = "1" "picker_item_size.00000000" = "1"
"picker_inspector.00000000" = "0" "picker_inspector.00000000" = "0"
"last_search.66F56946" = ""
"OpenInspectorPreview.66F56946" = "0"
"currentGroup.66F56946" = "all"
} }
providers = { providers = {
asset = { asset = {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment