Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
SSBookMinigames
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
SSBookMinigames
Commits
f7f3e6c4
Commit
f7f3e6c4
authored
Apr 02, 2026
by
Yousef Sameh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rank and leaderboard
parent
1723ae04
Changes
20
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1348 additions
and
297 deletions
+1348
-297
SupabaseAuthentication.cs
.../Assets/App/Infrastructure/Auth/SupabaseAuthentication.cs
+6
-0
SessionListener.cs
My project/Assets/App/Infrastructure/Core/SessionListener.cs
+1
-1
SupabaseManager.cs
My project/Assets/App/Infrastructure/Core/SupabaseManager.cs
+4
-2
GameHistory.meta
My project/Assets/App/Infrastructure/GameHistory.meta
+8
-0
GameHistory.cs
...ject/Assets/App/Infrastructure/GameHistory/GameHistory.cs
+28
-0
GameHistory.cs.meta
...Assets/App/Infrastructure/GameHistory/GameHistory.cs.meta
+2
-0
GameHistoryService.cs
...sets/App/Infrastructure/GameHistory/GameHistoryService.cs
+226
-0
GameHistoryService.cs.meta
...App/Infrastructure/GameHistory/GameHistoryService.cs.meta
+2
-0
Leaderboard.meta
My project/Assets/App/Infrastructure/Leaderboard.meta
+8
-0
LeaderboardPlayerModel.cs
.../App/Infrastructure/Leaderboard/LeaderboardPlayerModel.cs
+31
-0
LeaderboardPlayerModel.cs.meta
...Infrastructure/Leaderboard/LeaderboardPlayerModel.cs.meta
+2
-0
LeaderboardService.cs
...sets/App/Infrastructure/Leaderboard/LeaderboardService.cs
+29
-0
LeaderboardService.cs.meta
...App/Infrastructure/Leaderboard/LeaderboardService.cs.meta
+2
-0
UserService.cs
My project/Assets/App/Infrastructure/User/UserService.cs
+38
-21
UserModel.cs
My project/Assets/App/Models/UserModel.cs
+8
-8
SupabaseTester.cs
My project/Assets/App/Testing/SupabaseTester.cs
+7
-0
HomeUI.cs
My project/Assets/App/UI/HomeUI.cs
+38
-6
App.unity
My project/Assets/Scenes/App.unity
+802
-96
CurrentMaximizeLayout.dwlt
My project/UserSettings/Layouts/CurrentMaximizeLayout.dwlt
+49
-50
default-6000.dwlt
My project/UserSettings/Layouts/default-6000.dwlt
+57
-113
No files found.
My project/Assets/App/Infrastructure/Auth/SupabaseAuthentication.cs
View file @
f7f3e6c4
...
...
@@ -71,6 +71,12 @@ public class SupabaseAuthentication : MonoBehaviour
}
}
// UI button
public
void
LogOutButton
()
{
LogOut
();
}
public
async
UniTask
<
OneOf
<
Success
,
string
>>
LogOut
()
{
...
...
My project/Assets/App/Infrastructure/Core/SessionListener.cs
View file @
f7f3e6c4
...
...
@@ -22,7 +22,7 @@ public class SessionListener : MonoBehaviour
LoggedOut
.
Invoke
();
break
;
case
Constants
.
AuthState
.
UserUpdated
:
Debug
.
Log
(
"Signed In"
);
LoggedIn
.
Invoke
(
);
break
;
case
Constants
.
AuthState
.
PasswordRecovery
:
Debug
.
Log
(
"Password Recovery"
);
...
...
My project/Assets/App/Infrastructure/Core/SupabaseManager.cs
View file @
f7f3e6c4
...
...
@@ -15,7 +15,8 @@ public class SupabaseManager : Singleton<SupabaseManager>
private
readonly
NetworkStatus
_networkStatus
=
new
();
// Internals
private
Client
?
_client
;
private
Client
?
_client
;
public
Client
?
Supabase
()
=>
_client
;
...
...
@@ -38,6 +39,8 @@ public class SupabaseManager : Singleton<SupabaseManager>
// 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
);
...
...
@@ -84,7 +87,6 @@ public class SupabaseManager : Singleton<SupabaseManager>
Settings
serverConfiguration
=
(
await
client
.
Auth
.
Settings
())!;
Debug
.
Log
(
$"Auto-confirm emails on this server:
{
serverConfiguration
.
MailerAutoConfirm
}
"
);
}
_client
=
client
;
}
private
void
DebugListener
(
string
message
,
Exception
e
)
...
...
My project/Assets/App/Infrastructure/GameHistory.meta
0 → 100644
View file @
f7f3e6c4
fileFormatVersion: 2
guid: 8b241466954cc196eb605d2ea916986d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
My project/Assets/App/Infrastructure/GameHistory/GameHistory.cs
0 → 100644
View file @
f7f3e6c4
using
System
;
using
Supabase.Postgrest.Attributes
;
using
Supabase.Postgrest.Models
;
[Table("game_history")]
public
class
GameHistory
:
BaseModel
{
[
PrimaryKey
(
"id"
)]
public
string
Id
{
get
;
set
;
}
[
Column
(
"user_id"
)]
public
string
UserId
{
get
;
set
;
}
[
Column
(
"time_started"
)]
public
DateTime
TimeStarted
{
get
;
set
;
}
[
Column
(
"time_finished"
)]
public
DateTime
TimeFinished
{
get
;
set
;
}
[
Column
(
"points_earned"
)]
public
int
PointsEarned
{
get
;
set
;
}
=
0
;
[
Column
(
"game_type"
)]
public
string
GameType
{
get
;
set
;
}
[
Column
(
"created_at"
)]
public
DateTime
CreatedAt
{
get
;
set
;
}
}
My project/Assets/App/Infrastructure/GameHistory/GameHistory.cs.meta
0 → 100644
View file @
f7f3e6c4
fileFormatVersion: 2
guid: eaee03e3abc25d01aa9d2ab9afc9dbe9
\ No newline at end of file
My project/Assets/App/Infrastructure/GameHistory/GameHistoryService.cs
0 → 100644
View file @
f7f3e6c4
using
Cysharp.Threading.Tasks
;
using
OneOf
;
using
Supabase
;
using
System
;
using
System.Collections.Generic
;
using
UnityEngine
;
using
static
Supabase
.
Postgrest
.
Constants
;
public
class
GameHistoryService
:
Singleton
<
GameHistoryService
>
{
private
Client
supabase
=>
SupabaseManager
.
Instance
.
Supabase
();
// Add a completed game
public
async
UniTask
<
OneOf
<
GameResult
,
ErrorResult
>>
AddGame
(
string
gameType
,
int
points
,
DateTime
startTime
,
DateTime
finishTime
)
{
try
{
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
var
game
=
new
GameHistory
{
GameType
=
gameType
,
PointsEarned
=
points
,
TimeStarted
=
startTime
,
TimeFinished
=
finishTime
,
CreatedAt
=
DateTime
.
UtcNow
};
await
supabase
.
From
<
GameHistory
>().
Insert
(
game
);
Debug
.
Log
(
$"✓ Game added:
{
gameType
}
-
{
points
}
pts"
);
return
new
GameResult
(
game
);
}
catch
(
Exception
ex
)
{
Debug
.
LogError
(
$"Error adding game:
{
ex
.
Message
}
"
);
return
new
ErrorResult
(
ex
.
Message
);
}
}
// Get single game
public
async
UniTask
<
OneOf
<
GameResult
,
ErrorResult
>>
GetGameById
(
string
gameId
)
{
try
{
var
response
=
await
supabase
.
From
<
GameHistory
>()
.
Where
(
x
=>
x
.
Id
==
gameId
)
.
Get
();
if
(
response
?.
Models
==
null
||
response
.
Models
.
Count
==
0
)
return
new
ErrorResult
(
"Game not found"
);
return
new
GameResult
(
response
.
Models
[
0
]);
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
}
}
// Get user's game history
public
async
UniTask
<
OneOf
<
GameHistoryListResult
,
ErrorResult
>>
GetUserGameHistory
(
int
limit
=
50
)
{
try
{
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
var
userId
=
authUser
.
Id
.
ToString
();
var
response
=
await
supabase
.
From
<
GameHistory
>()
.
Where
(
x
=>
x
.
UserId
==
userId
)
.
Order
(
x
=>
x
.
TimeStarted
,
Ordering
.
Descending
)
.
Limit
(
limit
)
.
Get
();
return
new
GameHistoryListResult
(
response
.
Models
??
new
());
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
}
}
// Get games by game type
public
async
UniTask
<
OneOf
<
GameHistoryListResult
,
ErrorResult
>>
GetGamesByType
(
string
gameType
,
int
limit
=
50
)
{
try
{
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
var
userId
=
authUser
.
Id
.
ToString
();
var
response
=
await
supabase
.
From
<
GameHistory
>()
.
Where
(
x
=>
x
.
UserId
==
userId
&&
x
.
GameType
==
gameType
)
.
Order
(
x
=>
x
.
TimeStarted
,
Ordering
.
Descending
)
.
Limit
(
limit
)
.
Get
();
return
new
GameHistoryListResult
(
response
.
Models
??
new
());
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
}
}
// Get total points earned
public
async
UniTask
<
OneOf
<
TotalPointsResult
,
ErrorResult
>>
GetTotalPointsEarned
()
{
try
{
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
var
userId
=
authUser
.
Id
.
ToString
();
var
response
=
await
supabase
.
From
<
GameHistory
>()
.
Where
(
x
=>
x
.
UserId
==
userId
)
.
Get
();
int
totalPoints
=
0
;
foreach
(
var
game
in
response
.
Models
??
new
())
{
totalPoints
+=
game
.
PointsEarned
;
}
return
new
TotalPointsResult
(
totalPoints
);
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
}
}
// Get stats for a game type
public
async
UniTask
<
OneOf
<
GameStatsResult
,
ErrorResult
>>
GetGameTypeStats
(
string
gameType
)
{
try
{
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
var
userId
=
authUser
.
Id
.
ToString
();
var
response
=
await
supabase
.
From
<
GameHistory
>()
.
Where
(
x
=>
x
.
UserId
==
userId
&&
x
.
GameType
==
gameType
)
.
Get
();
var
games
=
response
.
Models
??
new
();
int
totalGames
=
games
.
Count
;
int
totalPoints
=
0
;
double
avgDuration
=
0
;
foreach
(
var
game
in
games
)
{
totalPoints
+=
game
.
PointsEarned
;
// avgDuration += game.Duration.TotalSeconds;
}
if
(
totalGames
>
0
)
avgDuration
/=
totalGames
;
return
new
GameStatsResult
(
gameType
,
totalGames
,
totalPoints
,
avgDuration
);
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
}
}
// Delete a game
public
async
UniTask
<
OneOf
<
GameResult
,
ErrorResult
>>
DeleteGame
(
string
gameId
)
{
try
{
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
await
supabase
.
From
<
GameHistory
>()
.
Where
(
x
=>
x
.
Id
==
gameId
&&
x
.
UserId
==
authUser
.
Id
.
ToString
())
.
Delete
();
return
new
GameResult
(
null
);
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
}
}
}
// Result types
public
record
GameResult
(
GameHistory
Game
);
public
record
GameHistoryListResult
(
List
<
GameHistory
>
Games
);
public
record
TotalPointsResult
(
int
TotalPoints
);
public
record
GameStatsResult
(
string
GameType
,
int
TotalGames
,
int
TotalPoints
,
double
AverageDurationSeconds
);
My project/Assets/App/Infrastructure/GameHistory/GameHistoryService.cs.meta
0 → 100644
View file @
f7f3e6c4
fileFormatVersion: 2
guid: e0c479d9df34c7ccbb8d3623401c85ab
\ No newline at end of file
My project/Assets/App/Infrastructure/Leaderboard.meta
0 → 100644
View file @
f7f3e6c4
fileFormatVersion: 2
guid: 25636b24c9247102b9da21f46d3712f4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
My project/Assets/App/Infrastructure/Leaderboard/LeaderboardPlayerModel.cs
0 → 100644
View file @
f7f3e6c4
using
Newtonsoft.Json
;
using
Supabase.Postgrest.Attributes
;
using
Supabase.Postgrest.Models
;
[Table("leaderboard")]
public
class
LeaderboardPlayerModel
:
BaseModel
{
[
PrimaryKey
(
"id"
)]
[
JsonProperty
(
"id"
)]
public
string
Id
{
get
;
set
;
}
[
Column
(
"display_name"
)]
[
JsonProperty
(
"display_name"
)]
public
string
DisplayName
{
get
;
set
;
}
[
Column
(
"avatar_url"
)]
[
JsonProperty
(
"avatar_url"
)]
public
string
?
AvatarUrl
{
get
;
set
;
}
[
Column
(
"rank"
)]
[
JsonProperty
(
"rank"
)]
public
string
Rank
{
get
;
set
;
}
[
Column
(
"points"
)]
[
JsonProperty
(
"points"
)]
public
int
Points
{
get
;
set
;
}
[
Column
(
"position"
)]
[
JsonProperty
(
"position"
)]
public
int
Position
{
get
;
set
;
}
}
My project/Assets/App/Infrastructure/Leaderboard/LeaderboardPlayerModel.cs.meta
0 → 100644
View file @
f7f3e6c4
fileFormatVersion: 2
guid: 5930ff4aad4618fd2a22174a1f4ccb7f
\ No newline at end of file
My project/Assets/App/Infrastructure/Leaderboard/LeaderboardService.cs
0 → 100644
View file @
f7f3e6c4
using
System
;
using
System.Collections.Generic
;
using
Cysharp.Threading.Tasks
;
using
OneOf
;
using
Supabase
;
using
UnityEditor.Experimental.GraphView
;
public
class
LeaderboardService
:
Singleton
<
LeaderboardService
>
{
private
Client
supabase
=>
SupabaseManager
.
Instance
.
Supabase
();
public
async
UniTask
<
OneOf
<
List
<
LeaderboardPlayerModel
>,
string
>>
LoadTop100Players
()
{
try
{
// Queries the 'leaderboard' view directly
var
response
=
await
supabase
.
From
<
LeaderboardPlayerModel
>()
.
Get
();
return
response
.
Models
;
}
catch
(
Exception
e
)
{
return
e
.
Message
;
}
}
}
My project/Assets/App/Infrastructure/Leaderboard/LeaderboardService.cs.meta
0 → 100644
View file @
f7f3e6c4
fileFormatVersion: 2
guid: 657023c5a1d36ba988848e0d6abbbca7
\ No newline at end of file
My project/Assets/App/Infrastructure/User/UserService.cs
View file @
f7f3e6c4
using
Cysharp.Threading.Tasks
;
using
OneOf
;
using
OneOf.Types
;
using
Supabase
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
UnityEngine
;
public
class
UserService
:
Singleton
<
UserService
>
{
private
Client
supabase
;
private
Client
supabase
=>
SupabaseManager
.
Instance
.
Supabase
()
;
protected
override
void
Awake
()
public
User
?
CurrentUser
{
private
set
;
get
;
}
public
Action
<
User
>
OnUserChange
;
public
async
UniTask
LoadCurrentUser
()
{
var
userOrFail
=
await
GetCurrentUser
();
userOrFail
.
Switch
((
user
)
=>
{
print
(
user
.
User
.
DisplayName
);
CurrentUser
=
user
.
User
;
OnUserChange
?.
Invoke
(
CurrentUser
);
},
(
error
)
=>
Debug
.
LogError
(
error
.
Message
));
}
protected
async
override
void
Awake
()
{
base
.
Awake
();
supabase
=
SupabaseManager
.
Instance
.
Supabase
();
}
public
async
UniTask
<
OneOf
<
UserResult
,
ErrorResult
>>
CreateUserProfile
(
...
...
@@ -43,23 +59,20 @@ public class UserService : Singleton<UserService>
{
try
{
if
(
supabase
==
null
)
{
Debug
.
LogError
(
"Supabase is null"
);
}
var
authUser
=
supabase
.
Auth
.
CurrentUser
;
if
(
authUser
==
null
)
return
new
ErrorResult
(
"Not authenticated"
);
var
response
=
await
supabase
.
From
<
User
>()
.
Where
(
x
=>
x
.
Id
==
authUser
.
Id
.
ToString
())
.
Single
();
if
(
response
==
null
)
return
new
ErrorResult
(
"User not found"
);
var
parameters
=
new
Dictionary
<
string
,
object
>
{
{
"target_user_id"
,
authUser
.
Id
}
};
var
userProf
=
await
supabase
.
Rpc
<
List
<
User
>>(
"get_user_profile"
,
parameters
);
return
new
UserResult
(
response
);
return
new
UserResult
(
userProf
.
First
()
);
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Message
);
return
new
ErrorResult
(
ex
.
Message
+
ex
.
StackTrace
);
}
}
...
...
@@ -67,19 +80,23 @@ public class UserService : Singleton<UserService>
{
try
{
var
response
=
await
supabase
.
From
<
User
>()
.
Where
(
x
=>
x
.
Id
==
userId
)
.
Single
();
var
parameters
=
new
Dictionary
<
string
,
object
>
{
{
"target_user_id"
,
userId
}
};
var
userProf
=
await
supabase
.
Rpc
<
User
>(
"get_user_profile"
,
parameters
);
if
(
response
==
null
)
// Debug.Log($"My Rank: {myProfile.RankDisplay}");
// var response = await supabase
// .From<User>()
// .Where(x => x.Id == userId)
// .Single();
if
(
userProf
==
null
)
return
new
ErrorResult
(
"User not found"
);
return
new
UserResult
(
response
);
return
new
UserResult
(
userProf
);
}
catch
(
Exception
ex
)
{
return
new
ErrorResult
(
ex
.
Messag
e
);
return
new
ErrorResult
(
ex
.
StackTrac
e
);
}
}
...
...
My project/Assets/App/Models/UserModel.cs
View file @
f7f3e6c4
...
...
@@ -3,37 +3,37 @@ using Supabase.Postgrest.Attributes;
using
Supabase.Postgrest.Models
;
using
System.Text.Json.Serialization
;
using
Newtonsoft.Json
;
[JsonConverter(typeof(JsonStringEnumConverter))]
public
enum
UserRank
{
Normal
,
Geek
,
Master
,
Olympian
}
[Table("users")]
public
class
User
:
BaseModel
{
[
PrimaryKey
(
"id"
)]
[
JsonProperty
(
"id"
)]
public
string
Id
{
get
;
set
;
}
[
Column
(
"display_name"
)]
[
JsonProperty
(
"display_name"
)]
public
string
DisplayName
{
get
;
set
;
}
[
Column
(
"avatar_url"
)]
[
JsonProperty
(
"avatar_url"
)]
public
string
?
AvatarUrl
{
get
;
set
;
}
[
Column
(
"rank"
)]
[
JsonProperty
(
"rank"
)]
public
string
Rank
{
get
;
set
;
}
[
Column
(
"points"
)]
[
JsonProperty
(
"points"
)]
public
int
Points
{
get
;
set
;
}
=
0
;
[
Column
(
"created_at"
)]
[
JsonProperty
(
"created_at"
)]
public
DateTime
CreatedAt
{
get
;
set
;
}
[
Column
(
"updated_at"
)]
[
JsonProperty
(
"updated_at"
)]
public
DateTime
UpdatedAt
{
get
;
set
;
}
}
My project/Assets/App/Testing/SupabaseTester.cs
View file @
f7f3e6c4
...
...
@@ -16,4 +16,11 @@ public class SupabaseTester : MonoBehaviour
{
supabaseAuthentication
.
SignUp
(
"hello@gmail.com"
,
"test098"
,
"p0wer"
);
}
[
ContextMenu
(
"Finish Game"
)]
public
void
FinishGame
()
{
GameHistoryService
.
Instance
.
AddGame
(
"CS"
,
3200
,
DateTime
.
Now
,
DateTime
.
Today
);
}
}
My project/Assets/App/UI/HomeUI.cs
View file @
f7f3e6c4
using
System.Linq
;
using
Cysharp.Threading.Tasks
;
using
LightSide
;
using
UnityEngine
;
public
class
HomeUI
:
MonoBehaviour
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void
Start
()
{
[
SerializeField
]
private
UniText
greetingText
;
[
SerializeField
]
private
UniText
rankText
;
[
SerializeField
]
private
UniText
leaderBoard
;
void
Awake
()
{
UserService
.
Instance
.
OnUserChange
+=
OnUserChange
;
}
// Update is called once per frame
void
Update
()
private
async
void
Start
()
{
UserService
.
Instance
.
LoadCurrentUser
();
var
playersOrFailure
=
await
LeaderboardService
.
Instance
.
LoadTop100Players
();
playersOrFailure
.
Switch
(
(
players
)
=>
{
string
leaderTest
=
""
;
foreach
(
var
player
in
players
)
{
leaderTest
+=
player
.
Position
+
" "
+
player
.
DisplayName
+
"\n"
;
}
leaderBoard
.
Text
=
leaderTest
;
}
,
(
error
)
=>
Debug
.
LogError
(
error
)
);
}
...
...
@@ -18,9 +42,17 @@ public class HomeUI : MonoBehaviour
{
gameObject
.
SetActive
(
true
);
}
public
void
hide
()
{
gameObject
.
SetActive
(
false
);
}
private
void
OnUserChange
(
User
user
)
{
greetingText
.
Text
=
$"Hello,
{
user
.
DisplayName
}
"
;
rankText
.
Text
=
$"Your rank is
{
user
.
Rank
}
"
;
}
}
My project/Assets/Scenes/App.unity
View file @
f7f3e6c4
This diff is collapsed.
Click to expand it.
My project/UserSettings/Layouts/CurrentMaximizeLayout.dwlt
View file @
f7f3e6c4
...
...
@@ -24,7 +24,7 @@ MonoBehaviour:
m_MinSize
:
{
x
:
300
,
y
:
112
}
m_MaxSize
:
{
x
:
24288
,
y
:
16192
}
vertical
:
0
controlID
:
4036
controlID
:
13759
draggingID
:
0
---
!u!114
&2
MonoBehaviour
:
...
...
@@ -50,7 +50,7 @@ MonoBehaviour:
x
:
355
y
:
61
width
:
1097
height
:
433
height
:
546
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -107,22 +107,22 @@ MonoBehaviour:
x
:
0
y
:
21
width
:
1097
height
:
412
m_Scale
:
{
x
:
0.
17166667
,
y
:
0.17166667
}
m_Translation
:
{
x
:
548.5
,
y
:
2
06
}
height
:
525
m_Scale
:
{
x
:
0.
21875001
,
y
:
0.21875
}
m_Translation
:
{
x
:
548.5
,
y
:
2
62.5
}
m_MarginLeft
:
0
m_MarginRight
:
0
m_MarginTop
:
0
m_MarginBottom
:
0
m_LastShownAreaInsideMargins
:
serializedVersion
:
2
x
:
-
3195.145
5
x
:
-
2507.428
5
y
:
-1200
width
:
6390.291
width
:
5014.857
height
:
2400
m_MinimalGUI
:
1
m_defaultScale
:
0.
17166667
m_LastWindowPixelSize
:
{
x
:
1097
,
y
:
433
}
m_defaultScale
:
0.
21875
m_LastWindowPixelSize
:
{
x
:
1097
,
y
:
546
}
m_ClearInEditMode
:
1
m_NoCameraWarning
:
1
m_LowResolutionForAspectRatios
:
01000000000000000000
...
...
@@ -153,7 +153,7 @@ MonoBehaviour:
m_MinSize
:
{
x
:
200
,
y
:
112
}
m_MaxSize
:
{
x
:
16192
,
y
:
16192
}
vertical
:
1
controlID
:
4037
controlID
:
13760
draggingID
:
0
---
!u!114
&4
MonoBehaviour
:
...
...
@@ -175,11 +175,11 @@ MonoBehaviour:
x
:
0
y
:
0
width
:
1454
height
:
459
height
:
572
m_MinSize
:
{
x
:
200
,
y
:
56
}
m_MaxSize
:
{
x
:
16192
,
y
:
8096
}
vertical
:
0
controlID
:
4038
controlID
:
13761
draggingID
:
0
---
!u!114
&5
MonoBehaviour
:
...
...
@@ -199,7 +199,7 @@ MonoBehaviour:
x
:
0
y
:
0
width
:
355
height
:
459
height
:
572
m_MinSize
:
{
x
:
201
,
y
:
226
}
m_MaxSize
:
{
x
:
4001
,
y
:
4026
}
m_ActualView
:
{
fileID
:
6
}
...
...
@@ -231,7 +231,7 @@ MonoBehaviour:
x
:
0
y
:
61
width
:
354
height
:
433
height
:
546
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -247,18 +247,19 @@ MonoBehaviour:
m_DynamicPanelBehavior
:
0
m_SceneHierarchy
:
m_TreeViewState
:
scrollPos
:
{
x
:
0
,
y
:
36
}
scrollPos
:
{
x
:
0
,
y
:
0
}
m_SelectedIDs
:
-
m_Data
:
31262
-
m_Data
:
-69696
m_LastClickedID
:
m_Data
:
0
m_Data
:
-69696
m_ExpandedIDs
:
-
m_Data
:
-8818
-
m_Data
:
-75370
-
m_Data
:
-2622
-
m_Data
:
-2286
-
m_Data
:
-1342
-
m_Data
:
55606
-
m_Data
:
55648
-
m_Data
:
55828
-
m_Data
:
55890
-
m_Data
:
54594
-
m_Data
:
54774
-
m_Data
:
54836
m_RenameOverlay
:
m_UserAcceptedRename
:
0
m_Name
:
...
...
@@ -276,7 +277,7 @@ MonoBehaviour:
m_OriginalEventType
:
11
m_IsRenamingFilename
:
0
m_TrimLeadingAndTrailingWhitespace
:
0
m_ClientGUIView
:
{
fileID
:
5
}
m_ClientGUIView
:
{
fileID
:
0
}
m_SearchString
:
m_ExpandedScenes
:
[]
m_CurrenRootInstanceID
:
0
...
...
@@ -302,7 +303,7 @@ MonoBehaviour:
x
:
355
y
:
0
width
:
1099
height
:
459
height
:
572
m_MinSize
:
{
x
:
202
,
y
:
226
}
m_MaxSize
:
{
x
:
4002
,
y
:
4026
}
m_ActualView
:
{
fileID
:
2
}
...
...
@@ -335,7 +336,7 @@ MonoBehaviour:
x
:
355
y
:
61
width
:
1097
height
:
433
height
:
546
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -920,9 +921,9 @@ MonoBehaviour:
m_AudioPlay
:
0
m_DebugDrawModesUseInteractiveLightBakingData
:
0
m_Position
:
m_Target
:
{
x
:
0.3170178
,
y
:
0.01101324
,
z
:
-0.0036561592
}
m_Target
:
{
x
:
581.7626
,
y
:
1267.5247
,
z
:
-2.9103668
}
speed
:
2
m_Value
:
{
x
:
0.3170178
,
y
:
0.01101324
,
z
:
-0.0036561592
}
m_Value
:
{
x
:
581.7626
,
y
:
1267.5247
,
z
:
-2.9103668
}
m_RenderMode
:
0
m_CameraMode
:
drawMode
:
0
...
...
@@ -972,9 +973,9 @@ MonoBehaviour:
speed
:
2
m_Value
:
{
x
:
0
,
y
:
0
,
z
:
0
,
w
:
1
}
m_Size
:
m_Target
:
10.365613
m_Target
:
375.2794
speed
:
2
m_Value
:
10.365613
m_Value
:
375.2794
m_Ortho
:
m_Target
:
1
speed
:
2
...
...
@@ -1018,25 +1019,25 @@ MonoBehaviour:
m_Enabled
:
1
m_EditorHideFlags
:
1
m_Script
:
{
fileID
:
12006
,
guid
:
0000000000000000e000000000000000
,
type
:
0
}
m_Name
:
ProjectBrowser
m_Name
:
ConsoleWindow
m_EditorClassIdentifier
:
m_Children
:
[]
m_Position
:
serializedVersion
:
2
x
:
0
y
:
459
y
:
572
width
:
1454
height
:
524
m_MinSize
:
{
x
:
231
,
y
:
27
6
}
m_MaxSize
:
{
x
:
10001
,
y
:
10
026
}
m_ActualView
:
{
fileID
:
1
0
}
height
:
411
m_MinSize
:
{
x
:
101
,
y
:
12
6
}
m_MaxSize
:
{
x
:
4001
,
y
:
4
026
}
m_ActualView
:
{
fileID
:
1
1
}
m_Panes
:
-
{
fileID
:
10
}
-
{
fileID
:
11
}
-
{
fileID
:
12
}
-
{
fileID
:
13
}
m_Selected
:
0
m_LastSelected
:
1
m_Selected
:
1
m_LastSelected
:
0
---
!u!114
&10
MonoBehaviour
:
m_ObjectHideFlags
:
52
...
...
@@ -1059,9 +1060,9 @@ MonoBehaviour:
m_Pos
:
serializedVersion
:
2
x
:
0
y
:
520
y
:
633
width
:
1453
height
:
498
height
:
385
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -1086,7 +1087,7 @@ MonoBehaviour:
m_SkipHidden
:
0
m_SearchArea
:
1
m_Folders
:
-
Assets/App/Infrastructure/
Core
-
Assets/App/Infrastructure/
Leaderboard
m_Globs
:
[]
m_ProductIds
:
m_AnyWithAssetOrigin
:
0
...
...
@@ -1096,7 +1097,7 @@ MonoBehaviour:
m_ViewMode
:
1
m_StartGridSize
:
96
m_LastFolders
:
-
Assets/App/Infrastructure/
Core
-
Assets/App/Infrastructure/
Leaderboard
m_LastFoldersGridSize
:
96
m_LastProjectPath
:
/home/p0wer/development/ssbookminigames/My project
m_LockTracker
:
...
...
@@ -1105,14 +1106,12 @@ MonoBehaviour:
m_FolderTreeState
:
scrollPos
:
{
x
:
0
,
y
:
79
}
m_SelectedIDs
:
-
m_Data
:
55224
-
m_Data
:
81320
m_LastClickedID
:
m_Data
:
55224
m_Data
:
81320
m_ExpandedIDs
:
-
m_Data
:
0
-
m_Data
:
54850
-
m_Data
:
54982
-
m_Data
:
55188
-
m_Data
:
55206
-
m_Data
:
1000000000
-
m_Data
:
2147483647
m_RenameOverlay
:
...
...
@@ -1147,7 +1146,7 @@ MonoBehaviour:
m_Data
:
0
m_ExpandedIDs
:
-
m_Data
:
0
-
m_Data
:
5
4850
-
m_Data
:
5
5206
-
m_Data
:
1000000000
-
m_Data
:
2147483647
m_RenameOverlay
:
...
...
@@ -1235,9 +1234,9 @@ MonoBehaviour:
m_Pos
:
serializedVersion
:
2
x
:
0
y
:
520
y
:
633
width
:
1453
height
:
498
height
:
385
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -1418,7 +1417,7 @@ MonoBehaviour:
m_ControlHash
:
-371814159
m_PrefName
:
Preview_InspectorPreview
m_LastInspectedObjectInstanceID
:
-1
m_LastVerticalScrollValue
:
0
m_LastVerticalScrollValue
:
89
m_GlobalObjectId
:
m_InspectorMode
:
0
m_LockTracker
:
...
...
My project/UserSettings/Layouts/default-6000.dwlt
View file @
f7f3e6c4
...
...
@@ -19,7 +19,7 @@ MonoBehaviour:
width
:
948
height
:
1039
m_ShowMode
:
4
m_Title
:
Scen
e
m_Title
:
Consol
e
m_RootView
:
{
fileID
:
2
}
m_MinSize
:
{
x
:
875
,
y
:
300
}
m_MaxSize
:
{
x
:
10000
,
y
:
10000
}
...
...
@@ -119,7 +119,7 @@ MonoBehaviour:
m_MinSize
:
{
x
:
300
,
y
:
112
}
m_MaxSize
:
{
x
:
24288
,
y
:
16192
}
vertical
:
0
controlID
:
69
controlID
:
4263
draggingID
:
0
---
!u!114
&6
MonoBehaviour
:
...
...
@@ -145,7 +145,7 @@ MonoBehaviour:
m_MinSize
:
{
x
:
200
,
y
:
112
}
m_MaxSize
:
{
x
:
16192
,
y
:
16192
}
vertical
:
1
controlID
:
70
controlID
:
4264
draggingID
:
0
---
!u!114
&7
MonoBehaviour
:
...
...
@@ -167,11 +167,11 @@ MonoBehaviour:
x
:
0
y
:
0
width
:
724
height
:
6
98
height
:
6
84
m_MinSize
:
{
x
:
200
,
y
:
56
}
m_MaxSize
:
{
x
:
16192
,
y
:
8096
}
vertical
:
0
controlID
:
71
controlID
:
4265
draggingID
:
0
---
!u!114
&8
MonoBehaviour
:
...
...
@@ -191,7 +191,7 @@ MonoBehaviour:
x
:
0
y
:
0
width
:
177
height
:
6
98
height
:
6
84
m_MinSize
:
{
x
:
201
,
y
:
226
}
m_MaxSize
:
{
x
:
4001
,
y
:
4026
}
m_ActualView
:
{
fileID
:
14
}
...
...
@@ -209,7 +209,7 @@ MonoBehaviour:
m_Enabled
:
1
m_EditorHideFlags
:
1
m_Script
:
{
fileID
:
12006
,
guid
:
0000000000000000e000000000000000
,
type
:
0
}
m_Name
:
Scen
eView
m_Name
:
Gam
eView
m_EditorClassIdentifier
:
m_Children
:
[]
m_Position
:
...
...
@@ -217,15 +217,15 @@ MonoBehaviour:
x
:
177
y
:
0
width
:
547
height
:
6
98
height
:
6
84
m_MinSize
:
{
x
:
202
,
y
:
226
}
m_MaxSize
:
{
x
:
4002
,
y
:
4026
}
m_ActualView
:
{
fileID
:
1
5
}
m_ActualView
:
{
fileID
:
1
3
}
m_Panes
:
-
{
fileID
:
15
}
-
{
fileID
:
13
}
m_Selected
:
0
m_LastSelected
:
1
m_Selected
:
1
m_LastSelected
:
0
---
!u!114
&10
MonoBehaviour
:
m_ObjectHideFlags
:
52
...
...
@@ -236,25 +236,25 @@ MonoBehaviour:
m_Enabled
:
1
m_EditorHideFlags
:
1
m_Script
:
{
fileID
:
12006
,
guid
:
0000000000000000e000000000000000
,
type
:
0
}
m_Name
:
ProjectBrowser
m_Name
:
ConsoleWindow
m_EditorClassIdentifier
:
m_Children
:
[]
m_Position
:
serializedVersion
:
2
x
:
0
y
:
6
98
y
:
6
84
width
:
724
height
:
2
85
m_MinSize
:
{
x
:
231
,
y
:
27
6
}
m_MaxSize
:
{
x
:
10001
,
y
:
10
026
}
m_ActualView
:
{
fileID
:
1
6
}
height
:
2
99
m_MinSize
:
{
x
:
101
,
y
:
12
6
}
m_MaxSize
:
{
x
:
4001
,
y
:
4
026
}
m_ActualView
:
{
fileID
:
1
7
}
m_Panes
:
-
{
fileID
:
16
}
-
{
fileID
:
17
}
-
{
fileID
:
18
}
-
{
fileID
:
19
}
m_Selected
:
0
m_LastSelected
:
1
m_Selected
:
1
m_LastSelected
:
0
---
!u!114
&11
MonoBehaviour
:
m_ObjectHideFlags
:
52
...
...
@@ -568,10 +568,10 @@ MonoBehaviour:
m_TextWithWhitespace
:
"
Game
\u200B
"
m_Pos
:
serializedVersion
:
2
x
:
355
y
:
61
width
:
1097
height
:
6
72
x
:
178
y
:
24
width
:
545
height
:
6
58
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -628,22 +628,22 @@ MonoBehaviour:
x
:
0
y
:
21
width
:
1097
height
:
6
51
m_Scale
:
{
x
:
0.2
7125
,
y
:
0.2712
5
}
m_Translation
:
{
x
:
548.5
,
y
:
3
25
.5
}
height
:
6
37
m_Scale
:
{
x
:
0.2
6541665
,
y
:
0.2654166
5
}
m_Translation
:
{
x
:
548.5
,
y
:
3
18
.5
}
m_MarginLeft
:
0
m_MarginRight
:
0
m_MarginTop
:
0
m_MarginBottom
:
0
m_LastShownAreaInsideMargins
:
serializedVersion
:
2
x
:
-20
22.1198
y
:
-1200
width
:
4
044.2395
height
:
2400
x
:
-20
66.562
y
:
-1200
.0001
width
:
4
133.124
height
:
2400
.0002
m_MinimalGUI
:
1
m_defaultScale
:
0.2
712
5
m_LastWindowPixelSize
:
{
x
:
1097
,
y
:
6
72
}
m_defaultScale
:
0.2
654166
5
m_LastWindowPixelSize
:
{
x
:
1097
,
y
:
6
58
}
m_ClearInEditMode
:
1
m_NoCameraWarning
:
1
m_LowResolutionForAspectRatios
:
01000000000000000000
...
...
@@ -674,7 +674,7 @@ MonoBehaviour:
x
:
0
y
:
24
width
:
176
height
:
6
72
height
:
6
58
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -695,68 +695,12 @@ MonoBehaviour:
m_LastClickedID
:
m_Data
:
0
m_ExpandedIDs
:
-
m_Data
:
-232458
-
m_Data
:
-232452
-
m_Data
:
-231888
-
m_Data
:
-228952
-
m_Data
:
-228844
-
m_Data
:
-228838
-
m_Data
:
-223936
-
m_Data
:
-141172
-
m_Data
:
-141166
-
m_Data
:
-139358
-
m_Data
:
-136274
-
m_Data
:
-135680
-
m_Data
:
-131244
-
m_Data
:
-131070
-
m_Data
:
-130508
-
m_Data
:
-127982
-
m_Data
:
-127850
-
m_Data
:
-127262
-
m_Data
:
-124932
-
m_Data
:
-124926
-
m_Data
:
-124364
-
m_Data
:
-121398
-
m_Data
:
-121392
-
m_Data
:
-120814
-
m_Data
:
-117480
-
m_Data
:
-117438
-
m_Data
:
-117396
-
m_Data
:
-117354
-
m_Data
:
-117312
-
m_Data
:
-117306
-
m_Data
:
-116748
-
m_Data
:
-116744
-
m_Data
:
-101862
-
m_Data
:
-101274
-
m_Data
:
-93060
-
m_Data
:
-66496
-
m_Data
:
-66406
-
m_Data
:
-63942
-
m_Data
:
-56900
-
m_Data
:
-56894
-
m_Data
:
-56882
-
m_Data
:
-38740
-
m_Data
:
-38402
-
m_Data
:
-35346
-
m_Data
:
-31936
-
m_Data
:
-30482
-
m_Data
:
-26860
-
m_Data
:
-26604
-
m_Data
:
-25992
-
m_Data
:
-23584
-
m_Data
:
-23350
-
m_Data
:
-22226
-
m_Data
:
-19822
-
m_Data
:
-19622
-
m_Data
:
-19616
-
m_Data
:
-19054
-
m_Data
:
-14498
-
m_Data
:
-14248
-
m_Data
:
-14242
-
m_Data
:
-13630
-
m_Data
:
-9566
-
m_Data
:
-8818
-
m_Data
:
-1342
-
m_Data
:
55606
-
m_Data
:
55648
-
m_Data
:
55828
-
m_Data
:
55890
m_RenameOverlay
:
m_UserAcceptedRename
:
0
m_Name
:
...
...
@@ -803,10 +747,10 @@ MonoBehaviour:
m_TextWithWhitespace
:
"
Scene
\u200B
"
m_Pos
:
serializedVersion
:
2
x
:
178
y
:
24
width
:
545
height
:
672
x
:
355
y
:
61
width
:
1097
height
:
433
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -1393,7 +1337,7 @@ MonoBehaviour:
m_Position
:
m_Target
:
{
x
:
0.3170178
,
y
:
0.01101324
,
z
:
-0.0036561592
}
speed
:
2
m_Value
:
{
x
:
-0.46512085
,
y
:
5.2452955
,
z
:
-1.1591719
}
m_Value
:
{
x
:
0.3170178
,
y
:
0.01101324
,
z
:
-0.0036561592
}
m_RenderMode
:
0
m_CameraMode
:
drawMode
:
0
...
...
@@ -1445,7 +1389,7 @@ MonoBehaviour:
m_Size
:
m_Target
:
10.365613
speed
:
2
m_Value
:
5.9171705
m_Value
:
10.365613
m_Ortho
:
m_Target
:
1
speed
:
2
...
...
@@ -1501,9 +1445,9 @@ MonoBehaviour:
m_Pos
:
serializedVersion
:
2
x
:
0
y
:
722
width
:
72
3
height
:
259
y
:
520
width
:
145
3
height
:
498
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
@@ -1528,7 +1472,7 @@ MonoBehaviour:
m_SkipHidden
:
0
m_SearchArea
:
1
m_Folders
:
-
Assets/
Prefabs/CS
-
Assets/
App/Infrastructure/Core
m_Globs
:
[]
m_ProductIds
:
m_AnyWithAssetOrigin
:
0
...
...
@@ -1538,21 +1482,21 @@ MonoBehaviour:
m_ViewMode
:
1
m_StartGridSize
:
96
m_LastFolders
:
-
Assets/
Prefabs/CS
-
Assets/
App/Infrastructure/Core
m_LastFoldersGridSize
:
96
m_LastProjectPath
:
/home/p0wer/development/ssbookminigames/My project
m_LockTracker
:
m_IsLocked
:
0
m_LastLocalAssetsSearchArea
:
1
m_FolderTreeState
:
scrollPos
:
{
x
:
0
,
y
:
271
}
scrollPos
:
{
x
:
0
,
y
:
79
}
m_SelectedIDs
:
-
m_Data
:
55
710
-
m_Data
:
55
224
m_LastClickedID
:
m_Data
:
55
710
m_Data
:
55
224
m_ExpandedIDs
:
-
m_Data
:
0
-
m_Data
:
5
4850
-
m_Data
:
5
5206
m_RenameOverlay
:
m_UserAcceptedRename
:
0
m_Name
:
...
...
@@ -1585,7 +1529,7 @@ MonoBehaviour:
m_Data
:
0
m_ExpandedIDs
:
-
m_Data
:
0
-
m_Data
:
5
4850
-
m_Data
:
5
5206
m_RenameOverlay
:
m_UserAcceptedRename
:
0
m_Name
:
...
...
@@ -1671,9 +1615,9 @@ MonoBehaviour:
m_Pos
:
serializedVersion
:
2
x
:
0
y
:
7
59
width
:
145
3
height
:
2
59
y
:
7
08
width
:
72
3
height
:
2
73
m_SerializedDataModeController
:
m_DataMode
:
0
m_PreferredDataMode
:
0
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment