Commit de16be72 authored by Yousef Sameh's avatar Yousef Sameh

user_model avatar ID added

parent a0f231ad
UserSettings/
\ No newline at end of file
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
.utmp/
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
*.log
# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
*.blend1
*.blend1.meta
# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/
# Recordings can get excessive in size
/[Rr]ecordings/
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*
# Jetbrains Rider personal-layer settings
*.DotSettings.user
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Mono auto generated files
mono_crash.*
# Builds
*.apk
*.aab
*.unitypackage
*.unitypackage.meta
*.app
# Crashlytics generated file
crashlytics-build.properties
# TestRunner generated files
InitTestScene*.unity*
# Addressables default ignores, before user customizations
/ServerData
/[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp*
# By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/*.bin*
# Visual Scripting auto-generated files
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
# Auto-generated scenes by play mode tests
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
......@@ -194,12 +194,12 @@ public class UserService
}
public async UniTask<OneOf<UserResult, ErrorResult>> UpdateProfile(
string username,
int grade,
int term,
int curriculum,
string email = null
)
string username = null,
int? grade = null,
int? term = null,
int? curriculum = null,
int? avatarId = null,
string email = null)
{
try
{
......@@ -211,9 +211,10 @@ public class UserService
var update = CurrentUser.Clone() as User;
if (username != null) update.Username = username;
if (email != null) update.Email = email;
update.Grade = grade;
update.Term = term;
update.Curriculum = curriculum;
if (avatarId.HasValue) update.AvatarId = avatarId.Value;
if (grade.HasValue) update.Grade = grade.Value;
if (term.HasValue) update.Term = term.Value;
if (curriculum.HasValue) update.Curriculum = curriculum.Value;
await client
.From<User>()
......
......@@ -40,6 +40,9 @@ public class User : BaseModel, ICloneable
[Column("term")]
public int Term { get; set; }
[Column("avatar_id")]
public int AvatarId { get; set; }
/// <summary>
/// Creates a deep copy of the user object.
/// </summary>
......
......@@ -55,8 +55,6 @@ public class HomeController : MonoBehaviour
SetPlayButtonsEnabled(false);
OnUserChange(UserService.Instance.CurrentUser);
}
private void OnUserChange(User user)
......
using System;
using UnityEngine;
using UnityEngine.UIElements;
......@@ -15,16 +14,29 @@ public class SelectImage : MonoBehaviour
void Start()
{
Index = PlayerPrefs.GetInt("ProfileImageIndex", 0);
profileImage.currentSprite = profileImage.profileImages[Index];
Images = UIDocument.rootVisualElement.Q<ToggleButtonGroup>("Images");
SureImage = UIDocument.rootVisualElement.Q<Button>("SureImage");
Images.RegisterValueChangedCallback(OnValueChanged);
SureImage.clicked += SureImage_clicked;
UserService.Instance.OnUserChanged += OnUserChange;
OnUserChange(UserService.Instance.CurrentUser);
}
private void OnUserChange(User user)
{
if (user == null)
{
Index = 0;
profileImage.currentSprite = profileImage.profileImages[Index];
}
else
{
var index = user.AvatarId;
profileImage.currentSprite = profileImage.profileImages[index];
}
}
private void OnValueChanged(ChangeEvent<ToggleButtonGroupState> evt)
......@@ -49,10 +61,10 @@ public class SelectImage : MonoBehaviour
}
}
private void SureImage_clicked()
private async void SureImage_clicked()
{
profileImage.currentSprite = profileImage.profileImages[Index];
PlayerPrefs.SetInt("ProfileImageIndex", Index);
await UserService.Instance.UpdateProfile(avatarId: Index);
}
}
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