Commit c32eb974 authored by Yousef Sameh's avatar Yousef Sameh

MCQ merge fix

parent 13d81c32
...@@ -66,10 +66,8 @@ public class SessionListener : Singleton<SessionListener> ...@@ -66,10 +66,8 @@ public class SessionListener : Singleton<SessionListener>
private void OnUserChanged(User user) private void OnUserChanged(User user)
{ {
if (SceneManager.GetActiveScene().name != "MainMenu") UserService.Instance.OnUserChange -= OnUserChanged;
{ LoggedIn.Invoke();
LoggedIn.Invoke();
}
} }
private async UniTask<bool> UserFileFoundAndLoaded() private async UniTask<bool> UserFileFoundAndLoaded()
......
...@@ -59,6 +59,8 @@ public class UserService : Singleton<UserService> ...@@ -59,6 +59,8 @@ public class UserService : Singleton<UserService>
}; };
await supabase.From<User>().Insert(user); await supabase.From<User>().Insert(user);
CurrentUser = user;
OnUserChange?.Invoke(CurrentUser);
return new UserResult(user); return new UserResult(user);
} }
catch (Exception ex) catch (Exception ex)
......
...@@ -57,7 +57,7 @@ public class LeaderboardController : MonoBehaviour ...@@ -57,7 +57,7 @@ public class LeaderboardController : MonoBehaviour
private void ApplyTopThree(int index, LeaderboardPlayerModel player) private void ApplyTopThree(int index, LeaderboardPlayerModel player)
{ {
var root = leaderboardDocument.rootVisualElement; var root = leaderboardDocument.rootVisualElement.Q<VisualElement>("Leaderboard");
Label name; Label name;
Label xp; Label xp;
......
...@@ -6,19 +6,14 @@ public class ProfileController : MonoBehaviour ...@@ -6,19 +6,14 @@ public class ProfileController : MonoBehaviour
[SerializeField] private UIDocument profileDocument; [SerializeField] private UIDocument profileDocument;
private Label name; private Label name;
private Label rank; private Button logoutButton;
private Label xp;
private CustomProgressBar xpProgressBar;
void Awake() void Awake()
{ {
var root = profileDocument.rootVisualElement.Q("Profile"); var root = profileDocument.rootVisualElement.Q("Settings");
name = root.Q<Label>("Username"); name = root.Q<Label>("Username");
rank = root.Q<Label>("Rank"); logoutButton = root.Q<Button>("LogoutButton");
xp = root.Q<Label>("Xp"); logoutButton.clicked += () => SupabaseAuthentication.Instance.LogOut();
xpProgressBar = root.Q<CustomProgressBar>("ProgressBar");
UserService.Instance.OnUserChange += OnUserChange; UserService.Instance.OnUserChange += OnUserChange;
OnUserChange(UserService.Instance.CurrentUser); OnUserChange(UserService.Instance.CurrentUser);
...@@ -27,9 +22,5 @@ public class ProfileController : MonoBehaviour ...@@ -27,9 +22,5 @@ public class ProfileController : MonoBehaviour
private void OnUserChange(User user) private void OnUserChange(User user)
{ {
name.text = user.Username; name.text = user.Username;
rank.text = AppUtils.RankToArabic(user.Rank);
xp.text = user.Points.ToString();
xpProgressBar.Value = user.Points / 5000f;
} }
} }
...@@ -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/ALArcade/Hakwaty%20Font/TS%20Hakwaty%20Bold.otf?fileID=12800000&amp;guid=3fd066470b6b5214a844c6c22bfaa0a4&amp;type=3#TS Hakwaty Bold&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-left;">
<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>
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
</ui:Button> </ui:Button>
</ui:VisualElement> </ui:VisualElement>
</ui:VisualElement> </ui:VisualElement>
<ui:Label text="عبد الرحمن" name="FirstName" class="text-bold-black" style="color: rgb(255, 255, 255);"/> <ui:Label text="عبد الرحمن" name="Username" class="text-bold-black" style="color: rgb(255, 255, 255);"/>
<ui:Label text="abdo@gmail.com" name="FirstXp" class="text-light" style="color: rgba(153, 153, 153, 0.7); padding-top: 10px;"/>
</ui:VisualElement> </ui:VisualElement>
</ui:VisualElement> </ui:VisualElement>
<ui:VisualElement name="Contant" class="padding" style="flex-grow: 1;"> <ui:VisualElement name="Contant" class="padding" style="flex-grow: 1;">
......
...@@ -634,10 +634,10 @@ MonoBehaviour: ...@@ -634,10 +634,10 @@ MonoBehaviour:
m_OnCullStateChanged: m_OnCullStateChanged:
m_PersistentCalls: m_PersistentCalls:
m_Calls: [] m_Calls: []
text: "\u062A\u062D\u0645\u064A\u0644..." text: "\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644..."
fontStack: {fileID: 11400000, guid: 657d8db1dabff4325ae70686887b629b, type: 2} fontStack: {fileID: 11400000, guid: 657d8db1dabff4325ae70686887b629b, type: 2}
appearance: {fileID: 11400000, guid: 3a559cf5d653f05ea807e1be5655df92, type: 2} appearance: {fileID: 11400000, guid: 3a559cf5d653f05ea807e1be5655df92, type: 2}
fontSize: 100 fontSize: 75
baseDirection: 2 baseDirection: 2
wordWrap: 1 wordWrap: 1
horizontalAlignment: 1 horizontalAlignment: 1
......
...@@ -119,6 +119,50 @@ NavMeshSettings: ...@@ -119,6 +119,50 @@ 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
...@@ -151,6 +195,7 @@ Transform: ...@@ -151,6 +195,7 @@ Transform:
- {fileID: 918718236} - {fileID: 918718236}
- {fileID: 1841206267} - {fileID: 1841206267}
- {fileID: 803660555} - {fileID: 803660555}
- {fileID: 1154832527}
m_Father: {fileID: 2035341440} m_Father: {fileID: 2035341440}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &659928730 --- !u!1 &659928730
...@@ -276,6 +321,51 @@ MonoBehaviour: ...@@ -276,6 +321,51 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: Assembly-CSharp::MainmenuAnimation m_EditorClassIdentifier: Assembly-CSharp::MainmenuAnimation
mainMenu: {fileID: 1455761156} mainMenu: {fileID: 1455761156}
--- !u!1 &1154832526
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1154832527}
- component: {fileID: 1154832528}
m_Layer: 0
m_Name: Profile Controller
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1154832527
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1154832526}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -6.307274, y: 366.3949, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 652396694}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1154832528
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1154832526}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fc2b3d6a8d39f3230aef9e126ee2b1ea, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::ProfileController
profileDocument: {fileID: 1455761156}
--- !u!1 &1163643458 --- !u!1 &1163643458
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
...@@ -603,7 +693,7 @@ GameObject: ...@@ -603,7 +693,7 @@ GameObject:
- component: {fileID: 1841206267} - component: {fileID: 1841206267}
- component: {fileID: 1841206266} - component: {fileID: 1841206266}
m_Layer: 0 m_Layer: 0
m_Name: MainMenuController m_Name: Mainmenu Controller
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0
...@@ -678,3 +768,4 @@ SceneRoots: ...@@ -678,3 +768,4 @@ SceneRoots:
m_Roots: m_Roots:
- {fileID: 2035341440} - {fileID: 2035341440}
- {fileID: 1709733325} - {fileID: 1709733325}
- {fileID: 69988541}
This diff is collapsed.
fileFormatVersion: 2
guid: a4581ccba94d64445bfb85db49711926
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
This diff is collapsed.
fileFormatVersion: 2
guid: 70e093a0ef85a3e418cc77c732bc9e48
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
...@@ -368,7 +368,6 @@ namespace com.al_arcade.cs ...@@ -368,7 +368,6 @@ namespace com.al_arcade.cs
{ {
var audio = SSAudioManager.Instance; var audio = SSAudioManager.Instance;
audio.PlayVictory(); audio.PlayVictory();
StartCoroutine(DelayedAction(0.7f, () => audio.PlayCheer())); // shared helper
SSParticleManager.Instance?.PlayScreenConfetti(); SSParticleManager.Instance?.PlayScreenConfetti();
bot?.PlayVictoryDance(); bot?.PlayVictoryDance();
...@@ -379,6 +378,8 @@ namespace com.al_arcade.cs ...@@ -379,6 +378,8 @@ namespace com.al_arcade.cs
protected override IEnumerator NoChallengeVictorySequence() protected override IEnumerator NoChallengeVictorySequence()
{ {
StartCoroutine(DelayedAction(0.7f, () => SSAudioManager.Instance.PlayCheer())); // shared helper
yield return new WaitForSeconds(1f); yield return new WaitForSeconds(1f);
uiManager?.ShowResults(_score, _correctCount, _wrongClicks, _questions.Length, _streak); uiManager?.ShowResults(_score, _correctCount, _wrongClicks, _questions.Length, _streak);
......
...@@ -104,5 +104,6 @@ public class ChallengeCanvas : MonoBehaviour ...@@ -104,5 +104,6 @@ public class ChallengeCanvas : MonoBehaviour
{ {
SceneManager.LoadScene("MainMenu"); SceneManager.LoadScene("MainMenu");
AnimateOut(); AnimateOut();
challengeManager.EndChallenge();
} }
} }
\ No newline at end of file
...@@ -132,4 +132,9 @@ public class ChallengeManager : MonoBehaviour ...@@ -132,4 +132,9 @@ public class ChallengeManager : MonoBehaviour
await ChallengeService.Instance.AddChallenge(true, timeSaved, startTime, DateTime.UtcNow); await ChallengeService.Instance.AddChallenge(true, timeSaved, startTime, DateTime.UtcNow);
} }
public void EndChallenge()
{
Destroy(gameObject, 5);
}
} }
\ No newline at end of file
...@@ -603,7 +603,6 @@ MonoBehaviour: ...@@ -603,7 +603,6 @@ MonoBehaviour:
gameSceneNames: gameSceneNames:
- cs - cs
- tf - tf
- oldmcq
transitionSettings: {fileID: 11400000, guid: 057babd6f13132c449650d99e3c4e99c, type: 2} transitionSettings: {fileID: 11400000, guid: 057babd6f13132c449650d99e3c4e99c, type: 2}
winningPoints: 100 winningPoints: 100
timeSavedBonusMultiplier: 2 timeSavedBonusMultiplier: 2
......
...@@ -50,7 +50,7 @@ public class McqCompetitor : MonoBehaviour ...@@ -50,7 +50,7 @@ public class McqCompetitor : MonoBehaviour
{ {
if (manager == null) print("Null manager"); if (manager == null) print("Null manager");
_manager = manager; _manager = manager;
manager.onAnswerGiven.AddListener(ChangeZLevel); manager.onAnswerGiven?.AddListener(ChangeZLevel);
manager.onGameOver.AddListener(Stop); manager.onGameOver.AddListener(Stop);
} }
......
...@@ -62,7 +62,7 @@ namespace com.al_arcade.mcq ...@@ -62,7 +62,7 @@ namespace com.al_arcade.mcq
base.Awake(); base.Awake();
_mainCamera = Camera.main; _mainCamera = Camera.main;
onAnswerGiven.AddListener(CameraFeedback); onAnswerGiven?.AddListener(CameraFeedback);
} }
// ─── BaseGameManager implementation ────────────────────────────────── // ─── BaseGameManager implementation ──────────────────────────────────
......
...@@ -58,8 +58,8 @@ namespace com.al_arcade.mcq ...@@ -58,8 +58,8 @@ namespace com.al_arcade.mcq
{ {
if (manager == null) print("Null manager"); if (manager == null) print("Null manager");
_manager = manager; _manager = manager;
manager.onAnswerGiven.AddListener(PlayAnimation); manager.onAnswerGiven?.AddListener(PlayAnimation);
manager.onGameOver.AddListener(Stop); manager.onGameOver?.AddListener(Stop);
} }
private void PlayAnimation(bool correct) private void PlayAnimation(bool correct)
......
...@@ -37,8 +37,8 @@ namespace com.al_arcade.shared ...@@ -37,8 +37,8 @@ namespace com.al_arcade.shared
// ─── Shared UnityEvents ────────────────────────────────────────────── // ─── Shared UnityEvents ──────────────────────────────────────────────
[Header("Base Events")] [Header("Base Events")]
public UnityEvent onGameStart; public UnityEvent onGameStart = new();
public UnityEvent<bool> onAnswerGiven; public UnityEvent<bool> onAnswerGiven = new();
// ───────────────────────────────────────────────────────────────────── // ─────────────────────────────────────────────────────────────────────
// Abstract API – every subclass must implement these // Abstract API – every subclass must implement these
......
This diff is collapsed.
fileFormatVersion: 2
guid: 03b90b40492b121419ff3e2b51d6ea5a
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
...@@ -15,34 +15,34 @@ EditorUserSettings: ...@@ -15,34 +15,34 @@ EditorUserSettings:
value: 2550581500 value: 2550581500
flags: 0 flags: 0
RecentlyUsedSceneGuid-0: RecentlyUsedSceneGuid-0:
value: 5305515503010a0e0f580977147208444e151a78787b726775711931bbe1613e value: 07540056530459025956087011710b444116197f2d712769297d1866e6e5353b
flags: 0 flags: 0
RecentlyUsedSceneGuid-1: RecentlyUsedSceneGuid-1:
value: 5701055506000a030f5c542744260844404f4d73797975367c2c1e6ab7e2653d value: 52080c51560d5f03580b5e7242700c4446164f7d2e7f77612c281f32e0b8603d
flags: 0 flags: 0
RecentlyUsedSceneGuid-2: RecentlyUsedSceneGuid-2:
value: 07540056530459025956087011710b444116197f2d712769297d1866e6e5353b value: 0003525055055d020e0b0a7216755d444215417e787d27362e2f4866b2e1323e
flags: 0 flags: 0
RecentlyUsedSceneGuid-3: RecentlyUsedSceneGuid-3:
value: 060203560401505a595d0a7345200d44404e1b7e2d707e617b7f4d63e7b6606b value: 0752035101010f0c54595b2046760e44134e4e7a7f7d71677c2c4836b7b4633e
flags: 0 flags: 0
RecentlyUsedSceneGuid-4: RecentlyUsedSceneGuid-4:
value: 52080c51560d5f03580b5e7242700c4446164f7d2e7f77612c281f32e0b8603d value: 5304575f5c0c51035d5a5e771271594417154e7c2d7b70647b7b4c35bbe1646d
flags: 0 flags: 0
RecentlyUsedSceneGuid-5: RecentlyUsedSceneGuid-5:
value: 515251560603590259570f76147a5d4447154b282e7e25667e714830b6e36d6d value: 5302565f55575d0b59575e2041710e44474e1e2c7f2d743278781965e7e16139
flags: 0 flags: 0
RecentlyUsedSceneGuid-6: RecentlyUsedSceneGuid-6:
value: 575755530005085a5556097346745b4417164b2e292a73347a2b486be7e6306a value: 540151565c06080b0808547711705a44474f1b297b7f25677e7b1f30bbe56060
flags: 0 flags: 0
RecentlyUsedSceneGuid-7: RecentlyUsedSceneGuid-7:
value: 0003525055055d020e0b0a7216755d444215417e787d27362e2f4866b2e1323e value: 060203560401505a595d0a7345200d44404e1b7e2d707e617b7f4d63e7b6606b
flags: 0 flags: 0
RecentlyUsedSceneGuid-8: RecentlyUsedSceneGuid-8:
value: 0752035101010f0c54595b2046760e44134e4e7a7f7d71677c2c4836b7b4633e value: 515251560603590259570f76147a5d4447154b282e7e25667e714830b6e36d6d
flags: 0 flags: 0
RecentlyUsedSceneGuid-9: RecentlyUsedSceneGuid-9:
value: 5304575f5c0c51035d5a5e771271594417154e7c2d7b70647b7b4c35bbe1646d value: 575755530005085a5556097346745b4417164b2e292a73347a2b486be7e6306a
flags: 0 flags: 0
UnityEditor.ShaderGraph.Blackboard: UnityEditor.ShaderGraph.Blackboard:
value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7 value: 18135939215a0a5004000b0e15254b524c030a3f2964643d120d1230e9e93a3fd6e826abbd2e2d293c4ead313b08042de6030a0afa240c0d020be94c4ba75e435d8715fa32c70d15d11612dacc11fee5d3c5d1fe9ab1bf968e93e2ffcbc3e7e2f0b3ffe0e8b0be9af8ffaeffff8e85dd8390e3949c8899daa7
......
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