diff --git a/Assets/Common/ScriptableObjects/Users.meta b/Assets/Accounts.meta similarity index 77% rename from Assets/Common/ScriptableObjects/Users.meta rename to Assets/Accounts.meta index a247723..7919d00 100644 --- a/Assets/Common/ScriptableObjects/Users.meta +++ b/Assets/Accounts.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: dc83c2f6756fa3e43976e529562dd622 +guid: 6d0ffbb5478491d4cab023dd561128ea folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Common/ScriptableObjects/Users/dvschuyl.asset.meta b/Assets/Accounts/Prefabs.meta similarity index 52% rename from Assets/Common/ScriptableObjects/Users/dvschuyl.asset.meta rename to Assets/Accounts/Prefabs.meta index 7237501..1a6f6f8 100644 --- a/Assets/Common/ScriptableObjects/Users/dvschuyl.asset.meta +++ b/Assets/Accounts/Prefabs.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: 5953482dbce359e4eb263eea279dd0c5 -NativeFormatImporter: +guid: 32d13c7982bb5b1449abb4c889b61826 +folderAsset: yes +DefaultImporter: externalObjects: {} - mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Common/Prefabs/Avatar.prefab b/Assets/Accounts/Prefabs/Avatar.prefab similarity index 100% rename from Assets/Common/Prefabs/Avatar.prefab rename to Assets/Accounts/Prefabs/Avatar.prefab diff --git a/Assets/Common/Prefabs/Avatar.prefab.meta b/Assets/Accounts/Prefabs/Avatar.prefab.meta similarity index 100% rename from Assets/Common/Prefabs/Avatar.prefab.meta rename to Assets/Accounts/Prefabs/Avatar.prefab.meta diff --git a/Assets/Common/ScriptableObjects/UserTemplate.asset.meta b/Assets/Accounts/Scenes.meta similarity index 52% rename from Assets/Common/ScriptableObjects/UserTemplate.asset.meta rename to Assets/Accounts/Scenes.meta index 373e415..c2f0beb 100644 --- a/Assets/Common/ScriptableObjects/UserTemplate.asset.meta +++ b/Assets/Accounts/Scenes.meta @@ -1,8 +1,8 @@ fileFormatVersion: 2 -guid: 9195fb19688f1834fac39d356f965c20 -NativeFormatImporter: +guid: eecb682f6c673164e96e4f8965d6b1c4 +folderAsset: yes +DefaultImporter: externalObjects: {} - mainObjectFileID: 11400000 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Common/Scenes/UserCreationScreen.unity b/Assets/Accounts/Scenes/UserCreationScreen.unity similarity index 100% rename from Assets/Common/Scenes/UserCreationScreen.unity rename to Assets/Accounts/Scenes/UserCreationScreen.unity diff --git a/Assets/Common/Scenes/UserCreationScreen.unity.meta b/Assets/Accounts/Scenes/UserCreationScreen.unity.meta similarity index 100% rename from Assets/Common/Scenes/UserCreationScreen.unity.meta rename to Assets/Accounts/Scenes/UserCreationScreen.unity.meta diff --git a/Assets/Accounts/ScriptableObjects.meta b/Assets/Accounts/ScriptableObjects.meta new file mode 100644 index 0000000..de095e3 --- /dev/null +++ b/Assets/Accounts/ScriptableObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e1138319cd1864546a021b76adee333c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Accounts/ScriptableObjects/UserList.asset b/Assets/Accounts/ScriptableObjects/UserList.asset new file mode 100644 index 0000000..3d05324 --- /dev/null +++ b/Assets/Accounts/ScriptableObjects/UserList.asset @@ -0,0 +1,32 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3f3d6d68c3c3db64e91cf5ec9537ccda, type: 3} + m_Name: UserList + m_EditorClassIdentifier: + storedUserList: + currentUserIndex: 0 + storedUsers: + - username: dvschuyl + avatar: {fileID: 21300000, guid: f2344cd67769733ceb363a41e1d88a65, type: 3} + playtime: 0 + courses: + - entries: + - key: courseIndex + bytes: 0001000000ffffffff01000000000000000c0200000046417373656d626c792d4353686172702c2056657273696f6e3d302e302e302e302c2043756c747572653d6e65757472616c2c205075626c69634b6579546f6b656e3d6e756c6c05010000000b436f75727365496e646578010000000776616c75655f5f000802000000000000000b + - key: courseProgress + bytes: 0001000000ffffffff010000000000000004010000000d53797374656d2e53696e676c6501000000076d5f76616c7565000b0000403f0b + minigames: + - entries: + - key: minigameIndex + bytes: 0001000000ffffffff01000000000000000c0200000046417373656d626c792d4353686172702c2056657273696f6e3d302e302e302e302c2043756c747572653d6e65757472616c2c205075626c69634b6579546f6b656e3d6e756c6c05010000000d4d696e6967616d65496e646578010000000776616c75655f5f000802000000000000000b + - key: highscore + bytes: 0001000000ffffffff010000000000000004010000000c53797374656d2e496e74333201000000076d5f76616c75650008000000000b diff --git a/Assets/Common/ScriptableObjects/UserList.asset.meta b/Assets/Accounts/ScriptableObjects/UserList.asset.meta similarity index 100% rename from Assets/Common/ScriptableObjects/UserList.asset.meta rename to Assets/Accounts/ScriptableObjects/UserList.asset.meta diff --git a/Assets/Accounts/Scripts.meta b/Assets/Accounts/Scripts.meta new file mode 100644 index 0000000..c8a538e --- /dev/null +++ b/Assets/Accounts/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 221fac2e860d54348be4de169ea910d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Common/Scripts/Progress.cs b/Assets/Accounts/Scripts/Progress.cs similarity index 98% rename from Assets/Common/Scripts/Progress.cs rename to Assets/Accounts/Scripts/Progress.cs index b3ef721..dccaf17 100644 --- a/Assets/Common/Scripts/Progress.cs +++ b/Assets/Accounts/Scripts/Progress.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Runtime.Serialization.Formatters.Binary; diff --git a/Assets/Common/Scripts/Progress.cs.meta b/Assets/Accounts/Scripts/Progress.cs.meta similarity index 83% rename from Assets/Common/Scripts/Progress.cs.meta rename to Assets/Accounts/Scripts/Progress.cs.meta index b84b95f..f99f844 100644 --- a/Assets/Common/Scripts/Progress.cs.meta +++ b/Assets/Accounts/Scripts/Progress.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 183eab19332f33a48a745b7b264611fc +guid: d887bc641cc7a8f4abf9d4eb34d26923 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Common/Scripts/User.cs b/Assets/Accounts/Scripts/User.cs similarity index 94% rename from Assets/Common/Scripts/User.cs rename to Assets/Accounts/Scripts/User.cs index f766aa6..e6ef53f 100644 --- a/Assets/Common/Scripts/User.cs +++ b/Assets/Accounts/Scripts/User.cs @@ -1,10 +1,9 @@ using System; -using System.Collections; using System.Collections.Generic; using UnityEngine; -[CreateAssetMenu(menuName = "Create new Scriptable/User")] -public class User : ScriptableObject +[Serializable] +public class User { [Header("Personal data")] // User nickname diff --git a/Assets/Common/Scripts/User.cs.meta b/Assets/Accounts/Scripts/User.cs.meta similarity index 83% rename from Assets/Common/Scripts/User.cs.meta rename to Assets/Accounts/Scripts/User.cs.meta index 230cf16..9ddccdf 100644 --- a/Assets/Common/Scripts/User.cs.meta +++ b/Assets/Accounts/Scripts/User.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3c6c5919d9f747143b377c2bc34cd28b +guid: ae6d59a84b340534f8bbfc7101ce4a2f MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Common/Scripts/UserCreationScreen.cs b/Assets/Accounts/Scripts/UserCreationScreen.cs similarity index 96% rename from Assets/Common/Scripts/UserCreationScreen.cs rename to Assets/Accounts/Scripts/UserCreationScreen.cs index cd9de56..4a97cee 100644 --- a/Assets/Common/Scripts/UserCreationScreen.cs +++ b/Assets/Accounts/Scripts/UserCreationScreen.cs @@ -1,10 +1,7 @@ -using System; -using System.Collections; using System.Collections.Generic; using System.Text.RegularExpressions; using TMPro; using UnityEngine; -using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; @@ -83,7 +80,7 @@ public class UserCreationScreen : MonoBehaviour string username = inputName.text; if (IsValidUsername(username)) { - if (!users.GetUserByUsername(username)) + if (users.GetUserByUsername(username) == null) { // Create a new entry in the UserList ScriptableObject users.CreateAndAddNewUser(username, sprites[selectedAvatar]); diff --git a/Assets/Common/Scripts/UserCreationScreen.cs.meta b/Assets/Accounts/Scripts/UserCreationScreen.cs.meta similarity index 100% rename from Assets/Common/Scripts/UserCreationScreen.cs.meta rename to Assets/Accounts/Scripts/UserCreationScreen.cs.meta diff --git a/Assets/Accounts/Scripts/UserList.cs b/Assets/Accounts/Scripts/UserList.cs new file mode 100644 index 0000000..d568d28 --- /dev/null +++ b/Assets/Accounts/Scripts/UserList.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.IO; +using UnityEngine; + +[CreateAssetMenu(menuName = "Create new Scriptable/UserList")] +public class UserList : ScriptableObject +{ + // Serializable UserList content + [Serializable] + public class StoredUserList + { + public int currentUserIndex; + public List storedUsers = new List(); + } + [Header("Users")] + [SerializeField] + // Reference to serializable version of UserList + private StoredUserList storedUserList = new StoredUserList(); + + // Path to .json file + public static string PATH = null; + + void OnEnable() + { + PATH = $"{Application.dataPath}/users.json"; + Load(); + } + + // Create a new User + public User CreateNewUser(string name, Sprite avatar) + { + User user = new User(); + user.username = name; + user.avatar = avatar; + return user; + } + + // Create a new User and add to list + public User CreateAndAddNewUser(string name, Sprite avatar) + { + User user = CreateNewUser(name, avatar); + storedUserList.storedUsers.Add(user); + Save(); + return user; + } + + // Get user by username, returns `null` if no user can be found with such name + public User GetUserByUsername(string username) + { + foreach (User user in storedUserList.storedUsers) + if (user.username == username) return user; + + return null; + } + + // Get a list of all users + public List GetUsers() + { + return storedUserList.storedUsers; + } + + // Get the current active user + public User GetCurrentUser() + { + return storedUserList.storedUsers[storedUserList.currentUserIndex]; + } + + // Save the userList + public void Save() + { + string json = JsonUtility.ToJson(storedUserList); + File.CreateText(PATH).Close(); + File.WriteAllText(PATH, json); + } + + // Load the userList into this object + public void Load() + { + try + { + storedUserList.storedUsers.Clear(); + + string text = File.ReadAllText(PATH); + storedUserList = JsonUtility.FromJson(text); + } + catch (FileNotFoundException) { Debug.Log($"Path '{PATH}' not found"); } + } +} diff --git a/Assets/Common/Scripts/UserList.cs.meta b/Assets/Accounts/Scripts/UserList.cs.meta similarity index 100% rename from Assets/Common/Scripts/UserList.cs.meta rename to Assets/Accounts/Scripts/UserList.cs.meta diff --git a/Assets/Accounts/Tests.meta b/Assets/Accounts/Tests.meta new file mode 100644 index 0000000..0a6cfeb --- /dev/null +++ b/Assets/Accounts/Tests.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8156c3a6e88d0bb4ebabdf7c26979081 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Common/Tests/TestProgress.cs b/Assets/Accounts/Tests/TestProgress.cs similarity index 99% rename from Assets/Common/Tests/TestProgress.cs rename to Assets/Accounts/Tests/TestProgress.cs index 721b4c3..e24ea06 100644 --- a/Assets/Common/Tests/TestProgress.cs +++ b/Assets/Accounts/Tests/TestProgress.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.Runtime.Serialization; using UnityEngine; diff --git a/Assets/Common/Tests/TestProgress.cs.meta b/Assets/Accounts/Tests/TestProgress.cs.meta similarity index 100% rename from Assets/Common/Tests/TestProgress.cs.meta rename to Assets/Accounts/Tests/TestProgress.cs.meta diff --git a/Assets/Common/Tests/TestUserCreationScreen.cs b/Assets/Accounts/Tests/TestUserCreationScreen.cs similarity index 93% rename from Assets/Common/Tests/TestUserCreationScreen.cs rename to Assets/Accounts/Tests/TestUserCreationScreen.cs index 620fcda..f0166c7 100644 --- a/Assets/Common/Tests/TestUserCreationScreen.cs +++ b/Assets/Accounts/Tests/TestUserCreationScreen.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; public class TestUserCreationScreen : MonoBehaviour diff --git a/Assets/Common/Tests/TestUserCreationScreen.cs.meta b/Assets/Accounts/Tests/TestUserCreationScreen.cs.meta similarity index 100% rename from Assets/Common/Tests/TestUserCreationScreen.cs.meta rename to Assets/Accounts/Tests/TestUserCreationScreen.cs.meta diff --git a/Assets/Common/Scenes/StartScreen.unity b/Assets/Common/Scenes/StartScreen.unity index 6243f6b..4ba2340 100644 --- a/Assets/Common/Scenes/StartScreen.unity +++ b/Assets/Common/Scenes/StartScreen.unity @@ -797,6 +797,7 @@ GameObject: - component: {fileID: 906197777} - component: {fileID: 906197779} - component: {fileID: 906197778} + - component: {fileID: 906197780} m_Layer: 5 m_Name: Panel m_TagString: Untagged @@ -867,6 +868,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 906197776} m_CullTransparentMesh: 1 +--- !u!114 &906197780 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 906197776} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7cdd358c46e3f94398d91b7118e6d39, type: 3} + m_Name: + m_EditorClassIdentifier: + userList: {fileID: 11400000, guid: 072bec636a40f7e4e93b0ac624a3bda2, type: 2} --- !u!1 &955994877 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Common/ScriptableObjects/UserList.asset b/Assets/Common/ScriptableObjects/UserList.asset deleted file mode 100644 index e674e63..0000000 --- a/Assets/Common/ScriptableObjects/UserList.asset +++ /dev/null @@ -1,18 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3f3d6d68c3c3db64e91cf5ec9537ccda, type: 3} - m_Name: UserList - m_EditorClassIdentifier: - userTemplate: {fileID: 11400000, guid: 9195fb19688f1834fac39d356f965c20, type: 2} - users: - - {fileID: 11400000, guid: 5953482dbce359e4eb263eea279dd0c5, type: 2} - currentUserIndex: 0 diff --git a/Assets/Common/ScriptableObjects/UserTemplate.asset b/Assets/Common/ScriptableObjects/UserTemplate.asset deleted file mode 100644 index 212a12f..0000000 --- a/Assets/Common/ScriptableObjects/UserTemplate.asset +++ /dev/null @@ -1,19 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3c6c5919d9f747143b377c2bc34cd28b, type: 3} - m_Name: UserTemplate - m_EditorClassIdentifier: - username: - avatar: {fileID: 21300000, guid: 0c9156aa9168241eaacc01c996d6aa97, type: 3} - playtime: 0 - courses: [] - minigames: [] diff --git a/Assets/Common/ScriptableObjects/Users/dvschuyl.asset b/Assets/Common/ScriptableObjects/Users/dvschuyl.asset deleted file mode 100644 index aaa0407..0000000 --- a/Assets/Common/ScriptableObjects/Users/dvschuyl.asset +++ /dev/null @@ -1,29 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3c6c5919d9f747143b377c2bc34cd28b, type: 3} - m_Name: dvschuyl - m_EditorClassIdentifier: - username: dvschuyl - avatar: {fileID: 21300000, guid: 2098bf9fafbc5b31e89e5b7ad8f1f5e2, type: 3} - playtime: 0 - courses: - - entries: - - key: courseIndex - bytes: 0001000000ffffffff01000000000000000c0200000046417373656d626c792d4353686172702c2056657273696f6e3d302e302e302e302c2043756c747572653d6e65757472616c2c205075626c69634b6579546f6b656e3d6e756c6c05010000000b436f75727365496e646578010000000776616c75655f5f000802000000000000000b - - key: courseProgress - bytes: 0001000000ffffffff010000000000000004010000000d53797374656d2e53696e676c6501000000076d5f76616c7565000b0000803e0b - minigames: - - entries: - - key: minigameIndex - bytes: 0001000000ffffffff01000000000000000c0200000046417373656d626c792d4353686172702c2056657273696f6e3d302e302e302e302c2043756c747572653d6e65757472616c2c205075626c69634b6579546f6b656e3d6e756c6c05010000000d4d696e6967616d65496e646578010000000776616c75655f5f000802000000000000000b - - key: highscore - bytes: 0001000000ffffffff010000000000000004010000000c53797374656d2e496e74333201000000076d5f76616c75650008000000000b diff --git a/Assets/Common/Scripts/ChangeSceneOnClick.cs b/Assets/Common/Scripts/ChangeSceneOnClick.cs index c55cca4..9cd6c42 100644 --- a/Assets/Common/Scripts/ChangeSceneOnClick.cs +++ b/Assets/Common/Scripts/ChangeSceneOnClick.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; diff --git a/Assets/Common/Scripts/CourseItem.cs b/Assets/Common/Scripts/CourseItem.cs index 0db864e..b00e9d0 100644 --- a/Assets/Common/Scripts/CourseItem.cs +++ b/Assets/Common/Scripts/CourseItem.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; diff --git a/Assets/Common/Scripts/CourseListManager.cs b/Assets/Common/Scripts/CourseListManager.cs index 260f590..d953f1d 100644 --- a/Assets/Common/Scripts/CourseListManager.cs +++ b/Assets/Common/Scripts/CourseListManager.cs @@ -1,6 +1,3 @@ -using System; -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; diff --git a/Assets/Common/Scripts/CourseScreenManager.cs b/Assets/Common/Scripts/CourseScreenManager.cs index c7bfddb..e542a94 100644 --- a/Assets/Common/Scripts/CourseScreenManager.cs +++ b/Assets/Common/Scripts/CourseScreenManager.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; @@ -26,7 +25,7 @@ public class CourseScreenManager : MonoBehaviour void Start() { - User user = userList.users[userList.currentUserIndex]; + User user = userList.GetCurrentUser(); // Recent courses List> recentCourses = user.GetRecentCourses(); diff --git a/Assets/Common/Scripts/Minigame.cs b/Assets/Common/Scripts/Minigame.cs index 556ffc6..c479817 100644 --- a/Assets/Common/Scripts/Minigame.cs +++ b/Assets/Common/Scripts/Minigame.cs @@ -1,6 +1,3 @@ -using System; -using System.Collections; -using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(menuName = "Create new Scriptable/Minigame")] diff --git a/Assets/Common/Scripts/MinigameIndex.cs b/Assets/Common/Scripts/MinigameIndex.cs index daa7a17..8019e99 100644 --- a/Assets/Common/Scripts/MinigameIndex.cs +++ b/Assets/Common/Scripts/MinigameIndex.cs @@ -1,6 +1,3 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; // TODO: add other courses public enum MinigameIndex diff --git a/Assets/Common/Scripts/MinigameItem.cs b/Assets/Common/Scripts/MinigameItem.cs index 8d7e34d..398e284 100644 --- a/Assets/Common/Scripts/MinigameItem.cs +++ b/Assets/Common/Scripts/MinigameItem.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; diff --git a/Assets/Common/Scripts/MinigameList.cs b/Assets/Common/Scripts/MinigameList.cs index e73a48b..aa62b30 100644 --- a/Assets/Common/Scripts/MinigameList.cs +++ b/Assets/Common/Scripts/MinigameList.cs @@ -1,4 +1,3 @@ -using System.Collections; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/Common/Scripts/MinigameListManager.cs b/Assets/Common/Scripts/MinigameListManager.cs index b88c3ca..daf4d07 100644 --- a/Assets/Common/Scripts/MinigameListManager.cs +++ b/Assets/Common/Scripts/MinigameListManager.cs @@ -1,6 +1,3 @@ -using System; -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; diff --git a/Assets/Common/Scripts/StartScreenManager.cs b/Assets/Common/Scripts/StartScreenManager.cs new file mode 100644 index 0000000..40a8cfb --- /dev/null +++ b/Assets/Common/Scripts/StartScreenManager.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using UnityEngine.SceneManagement; + +public class StartScreenManager : MonoBehaviour +{ + + public UserList userList; + + void Awake() + { + if (!File.Exists(UserList.PATH) || userList.GetUsers().Count <= 0) + { + SceneManager.LoadScene("Accounts/Scenes/UserCreationScreen"); + } + } +} diff --git a/Assets/Common/Scripts/StartScreenManager.cs.meta b/Assets/Common/Scripts/StartScreenManager.cs.meta new file mode 100644 index 0000000..19de89a --- /dev/null +++ b/Assets/Common/Scripts/StartScreenManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7cdd358c46e3f94398d91b7118e6d39 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Common/Scripts/UserButton.cs b/Assets/Common/Scripts/UserButton.cs index 2ce765d..0468eb1 100644 --- a/Assets/Common/Scripts/UserButton.cs +++ b/Assets/Common/Scripts/UserButton.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; @@ -18,7 +16,7 @@ public class UserButton : MonoBehaviour void Start() { - User user = userList.users[userList.currentUserIndex]; + User user = userList.GetCurrentUser(); avatar.sprite = user.avatar; username.text = user.username; } diff --git a/Assets/Common/Scripts/UserList.cs b/Assets/Common/Scripts/UserList.cs deleted file mode 100644 index 96f4ade..0000000 --- a/Assets/Common/Scripts/UserList.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System.Collections.Generic; -using UnityEditor; -using UnityEngine; -using UnityEngine.UI; - -[CreateAssetMenu(menuName = "Create new Scriptable/UserList")] -public class UserList : ScriptableObject -{ - [Header("Template")] - // Reference to User template - public ScriptableObject userTemplate; - - [Header("Users")] - // List of users - public List users = new List(); - // Current user - public int currentUserIndex = 0; - - // Create a new User - public User CreateNewUser(string name, Sprite avatar) - { - User user = ScriptableObject.CreateInstance(); - user.username = name; - user.avatar = avatar; - return user; - } - - // Create a new User and add to list - public User CreateAndAddNewUser(string name, Sprite avatar) - { - User user = CreateNewUser(name, avatar); - users.Add(user); - EditorUtility.SetDirty(this); - AssetDatabase.CreateAsset(user, $"Assets/Common/ScriptableObjects/Users/{name}.asset"); - AssetDatabase.SaveAssets(); - return user; - } - - // Get user by username, returns `null` if no user can be found with such name - public User GetUserByUsername(string username) - { - foreach (User user in users) - if (user.username == username) return user; - - return null; - } -} diff --git a/Assets/Courses/Images/Course1_A.png b/Assets/Courses/Images/Course1_A.png new file mode 100644 index 0000000..e28964c Binary files /dev/null and b/Assets/Courses/Images/Course1_A.png differ diff --git a/Assets/Courses/Images/Course1_A.png.meta b/Assets/Courses/Images/Course1_A.png.meta new file mode 100644 index 0000000..d606ef9 --- /dev/null +++ b/Assets/Courses/Images/Course1_A.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 7ff2526af24167b4083dab0d9fd486ea +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Images/Course1_B.png b/Assets/Courses/Images/Course1_B.png new file mode 100644 index 0000000..63c6578 Binary files /dev/null and b/Assets/Courses/Images/Course1_B.png differ diff --git a/Assets/Courses/Images/Course1_B.png.meta b/Assets/Courses/Images/Course1_B.png.meta new file mode 100644 index 0000000..b5a2d12 --- /dev/null +++ b/Assets/Courses/Images/Course1_B.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: d3257ee00bfdbda47a799c8f06c6d77f +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Images/Course1_C.png b/Assets/Courses/Images/Course1_C.png new file mode 100644 index 0000000..8a3e5b4 Binary files /dev/null and b/Assets/Courses/Images/Course1_C.png differ diff --git a/Assets/Courses/Images/Course1_C.png.meta b/Assets/Courses/Images/Course1_C.png.meta new file mode 100644 index 0000000..c923bfa --- /dev/null +++ b/Assets/Courses/Images/Course1_C.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: e47a565fbc3fc844d88b91d005ecad13 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Images/Course1_D.png b/Assets/Courses/Images/Course1_D.png new file mode 100644 index 0000000..e7f6675 Binary files /dev/null and b/Assets/Courses/Images/Course1_D.png differ diff --git a/Assets/Courses/Images/Course1_D.png.meta b/Assets/Courses/Images/Course1_D.png.meta new file mode 100644 index 0000000..cabe0d0 --- /dev/null +++ b/Assets/Courses/Images/Course1_D.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: baa045d4a29c90042a39d942e961d75e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Images/Course1_E.png b/Assets/Courses/Images/Course1_E.png new file mode 100644 index 0000000..31272f4 Binary files /dev/null and b/Assets/Courses/Images/Course1_E.png differ diff --git a/Assets/Courses/Images/Course1_E.png.meta b/Assets/Courses/Images/Course1_E.png.meta new file mode 100644 index 0000000..5c65c2f --- /dev/null +++ b/Assets/Courses/Images/Course1_E.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: b4fae62de1dbf1541911ec439204c7b0 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Scenes/Course_0.unity b/Assets/Courses/Scenes/Course_0.unity index 12b14c9..fea624e 100644 --- a/Assets/Courses/Scenes/Course_0.unity +++ b/Assets/Courses/Scenes/Course_0.unity @@ -360,8 +360,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 499.51, y: 75.41319} - m_SizeDelta: {x: 628.8, y: 656.5303} + m_AnchoredPosition: {x: 479.99994, y: 117.00006} + m_SizeDelta: {x: 960, y: 540} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &378145456 MonoBehaviour: @@ -1068,7 +1068,7 @@ VideoPlayer: m_EnabledAudioTracks: 01 m_DirectAudioMutes: 00 m_ControlledAudioTrackCount: 1 - m_PlayOnAwake: 0 + m_PlayOnAwake: 1 m_SkipOnDrop: 1 m_Looping: 1 m_WaitForFirstFrame: 0 @@ -1530,8 +1530,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: -711, y: -273} - m_SizeDelta: {x: -1526.6854, y: -890.9896} + m_AnchoredPosition: {x: -480, y: -347.2475} + m_SizeDelta: {x: -960, y: -694.495} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1374011071 MonoBehaviour: @@ -1792,8 +1792,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -183.44, y: 201.84} - m_SizeDelta: {x: 605.04, y: 403.68} + m_AnchoredPosition: {x: -483.02, y: 117.00003} + m_SizeDelta: {x: 960, y: 540} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1493108464 MonoBehaviour: @@ -2511,8 +2511,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: -183.44, y: -214.75} - m_SizeDelta: {x: 605.04, y: 328.74} + m_AnchoredPosition: {x: -480, y: -346.49997} + m_SizeDelta: {x: 960, y: 387} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2145235737 MonoBehaviour: @@ -2534,9 +2534,9 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 21300000, guid: 30a9e696d55191746a1dc569bff763c4, type: 3} + m_Sprite: {fileID: 21300000, guid: 7ff2526af24167b4083dab0d9fd486ea, type: 3} m_Type: 0 - m_PreserveAspect: 0 + m_PreserveAspect: 1 m_FillCenter: 1 m_FillMethod: 4 m_FillAmount: 1 diff --git a/Assets/Courses/ScriptableObjects/Fingerspelling.asset b/Assets/Courses/ScriptableObjects/Fingerspelling.asset index 5d07463..a551b99 100644 --- a/Assets/Courses/ScriptableObjects/Fingerspelling.asset +++ b/Assets/Courses/ScriptableObjects/Fingerspelling.asset @@ -18,14 +18,17 @@ MonoBehaviour: thumbnail: {fileID: 21300000, guid: f2344cd67769733ceb363a41e1d88a65, type: 3} learnables: - name: A - image: {fileID: 21300000, guid: fceabadca8d3ed2cdbf652d2826639ea, type: 3} - clip: {fileID: 32900000, guid: 219638b5c33528443a0a1bc0946ed68e, type: 3} + image: {fileID: 21300000, guid: 7ff2526af24167b4083dab0d9fd486ea, type: 3} + clip: {fileID: 32900000, guid: b68a9e85e3d7ef54090a3b2b55805512, type: 3} - name: B - image: {fileID: 21300000, guid: c2620dd626ef0921cb6a5f2d2b1fbea8, type: 3} - clip: {fileID: 32900000, guid: 01bb71617b10fe4429a03f2127286a90, type: 3} + image: {fileID: 21300000, guid: d3257ee00bfdbda47a799c8f06c6d77f, type: 3} + clip: {fileID: 32900000, guid: b5e4209dcd808d24f9d604fd18da5fc6, type: 3} - name: C - image: {fileID: 21300000, guid: 68ac0fd4dcce2b9c09ac3ff5c2604ef2, type: 3} - clip: {fileID: 32900000, guid: 5fc69105a51e8dc498ec01e5068b4d3d, type: 3} + image: {fileID: 21300000, guid: e47a565fbc3fc844d88b91d005ecad13, type: 3} + clip: {fileID: 32900000, guid: bcbdb21be858c5b408e43a68e04776f7, type: 3} - name: D - image: {fileID: 21300000, guid: d3f490003d163ac7b99ccfbee2025738, type: 3} - clip: {fileID: 32900000, guid: 126ae1ab33f626b49bbafe6595619a5f, type: 3} + image: {fileID: 21300000, guid: baa045d4a29c90042a39d942e961d75e, type: 3} + clip: {fileID: 32900000, guid: ae312dbb761984948859db24e60ee518, type: 3} + - name: E + image: {fileID: 21300000, guid: b4fae62de1dbf1541911ec439204c7b0, type: 3} + clip: {fileID: 32900000, guid: 2bc7a026c60d06d498be3cf9e9c89639, type: 3} diff --git a/Assets/Courses/Scripts/Course.cs b/Assets/Courses/Scripts/Course.cs index 600d41a..6b6f6af 100644 --- a/Assets/Courses/Scripts/Course.cs +++ b/Assets/Courses/Scripts/Course.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Video; diff --git a/Assets/Courses/Scripts/CourseIndex.cs b/Assets/Courses/Scripts/CourseIndex.cs index 59fdffd..1917461 100644 --- a/Assets/Courses/Scripts/CourseIndex.cs +++ b/Assets/Courses/Scripts/CourseIndex.cs @@ -1,6 +1,3 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; // TODO: add other courses public enum CourseIndex diff --git a/Assets/Courses/Scripts/CourseList.cs b/Assets/Courses/Scripts/CourseList.cs index cf5bd99..cb15777 100644 --- a/Assets/Courses/Scripts/CourseList.cs +++ b/Assets/Courses/Scripts/CourseList.cs @@ -1,4 +1,3 @@ -using System.Collections; using System.Collections.Generic; using UnityEngine; diff --git a/Assets/Courses/Scripts/StartPause.cs b/Assets/Courses/Scripts/StartPause.cs index 8509a75..86216cd 100644 --- a/Assets/Courses/Scripts/StartPause.cs +++ b/Assets/Courses/Scripts/StartPause.cs @@ -1,10 +1,7 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.Video; using UnityEngine.UI; using TMPro; -using UnityEditor; public class StartPause : MonoBehaviour { @@ -37,8 +34,8 @@ public class StartPause : MonoBehaviour // Index of the current word/letter in the course.learnables list private int currentWordIndex = 0; - // In my example, i have 4 videos/images - private int maxWords = 4; + // This holds the amount of words in the course + private int maxWords; // Number of correct words so far // (can be modified to a list or something like that to give better feedback) private int correctWords = 0; @@ -47,9 +44,9 @@ public class StartPause : MonoBehaviour { // Setting up course course = courselist.courses[courselist.currentCourseIndex]; - + maxWords = course.learnables.Count; // Create entry in current user for keeping track of progress - user = userList.users[userList.currentUserIndex]; + user = userList.GetCurrentUser(); progress = user.courses.Find((p) => p != null && p.Get("courseIndex") == course.index); if (progress == null) { @@ -58,7 +55,7 @@ public class StartPause : MonoBehaviour progress.AddOrUpdate("courseProgress", -1.0f); user.courses.Add(progress); } - EditorUtility.SetDirty(user); + userList.Save(); // Setup UI button.image.sprite = pauseSprite; @@ -73,10 +70,9 @@ public class StartPause : MonoBehaviour player.clip = course.learnables[currentWordIndex].clip; // This loads first frame, so that it can be used as a sort-of preview for the video player.Play(); - player.Pause(); - // As the video will start paused -> show button + // As the video will start playiing -> hide button Color col = button.image.color; - col.a = 255; + col.a = 0; button.image.color = col; } @@ -116,7 +112,7 @@ public class StartPause : MonoBehaviour // TODO: fix correct word count correctWords++; progress.AddOrUpdate("courseProgress", (float)correctWords / (float)maxWords); - EditorUtility.SetDirty(user); + userList.Save(); // Update UI if course is not finished yet if (currentWordIndex < maxWords) @@ -135,5 +131,6 @@ public class StartPause : MonoBehaviour { // TODO: update progress (maybe this can also be at the `NextSign()`-method) progress.AddOrUpdate("courseProgress", correctWords / maxWords); + userList.Save(); } } diff --git a/Assets/Courses/Scripts/Webcam.cs b/Assets/Courses/Scripts/Webcam.cs index 57d99a8..605985d 100644 --- a/Assets/Courses/Scripts/Webcam.cs +++ b/Assets/Courses/Scripts/Webcam.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; diff --git a/Assets/Courses/Videos/Course1_A.mp4 b/Assets/Courses/Videos/Course1_A.mp4 new file mode 100644 index 0000000..d9e8690 Binary files /dev/null and b/Assets/Courses/Videos/Course1_A.mp4 differ diff --git a/Assets/Courses/Videos/Course1_A.mp4.meta b/Assets/Courses/Videos/Course1_A.mp4.meta new file mode 100644 index 0000000..0bd24e6 --- /dev/null +++ b/Assets/Courses/Videos/Course1_A.mp4.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: b68a9e85e3d7ef54090a3b2b55805512 +VideoClipImporter: + externalObjects: {} + serializedVersion: 2 + frameRange: 0 + startFrame: -1 + endFrame: -1 + colorSpace: 0 + deinterlace: 0 + encodeAlpha: 0 + flipVertical: 0 + flipHorizontal: 0 + importAudio: 1 + targetSettings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Videos/Course1_B.mp4 b/Assets/Courses/Videos/Course1_B.mp4 new file mode 100644 index 0000000..f18bb62 Binary files /dev/null and b/Assets/Courses/Videos/Course1_B.mp4 differ diff --git a/Assets/Courses/Videos/Course1_B.mp4.meta b/Assets/Courses/Videos/Course1_B.mp4.meta new file mode 100644 index 0000000..be8b74c --- /dev/null +++ b/Assets/Courses/Videos/Course1_B.mp4.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: b5e4209dcd808d24f9d604fd18da5fc6 +VideoClipImporter: + externalObjects: {} + serializedVersion: 2 + frameRange: 0 + startFrame: -1 + endFrame: -1 + colorSpace: 0 + deinterlace: 0 + encodeAlpha: 0 + flipVertical: 0 + flipHorizontal: 0 + importAudio: 1 + targetSettings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Videos/Course1_C.mp4 b/Assets/Courses/Videos/Course1_C.mp4 new file mode 100644 index 0000000..d7e05be Binary files /dev/null and b/Assets/Courses/Videos/Course1_C.mp4 differ diff --git a/Assets/Courses/Videos/Course1_C.mp4.meta b/Assets/Courses/Videos/Course1_C.mp4.meta new file mode 100644 index 0000000..8b15fa1 --- /dev/null +++ b/Assets/Courses/Videos/Course1_C.mp4.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: bcbdb21be858c5b408e43a68e04776f7 +VideoClipImporter: + externalObjects: {} + serializedVersion: 2 + frameRange: 0 + startFrame: -1 + endFrame: -1 + colorSpace: 0 + deinterlace: 0 + encodeAlpha: 0 + flipVertical: 0 + flipHorizontal: 0 + importAudio: 1 + targetSettings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Videos/Course1_D.mp4 b/Assets/Courses/Videos/Course1_D.mp4 new file mode 100644 index 0000000..5fcecc9 Binary files /dev/null and b/Assets/Courses/Videos/Course1_D.mp4 differ diff --git a/Assets/Courses/Videos/Course1_D.mp4.meta b/Assets/Courses/Videos/Course1_D.mp4.meta new file mode 100644 index 0000000..0c363b3 --- /dev/null +++ b/Assets/Courses/Videos/Course1_D.mp4.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: ae312dbb761984948859db24e60ee518 +VideoClipImporter: + externalObjects: {} + serializedVersion: 2 + frameRange: 0 + startFrame: -1 + endFrame: -1 + colorSpace: 0 + deinterlace: 0 + encodeAlpha: 0 + flipVertical: 0 + flipHorizontal: 0 + importAudio: 1 + targetSettings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Courses/Videos/Course1_E.mp4 b/Assets/Courses/Videos/Course1_E.mp4 new file mode 100644 index 0000000..233f46b Binary files /dev/null and b/Assets/Courses/Videos/Course1_E.mp4 differ diff --git a/Assets/Courses/Videos/Course1_E.mp4.meta b/Assets/Courses/Videos/Course1_E.mp4.meta new file mode 100644 index 0000000..3682495 --- /dev/null +++ b/Assets/Courses/Videos/Course1_E.mp4.meta @@ -0,0 +1,18 @@ +fileFormatVersion: 2 +guid: 2bc7a026c60d06d498be3cf9e9c89639 +VideoClipImporter: + externalObjects: {} + serializedVersion: 2 + frameRange: 0 + startFrame: -1 + endFrame: -1 + colorSpace: 0 + deinterlace: 0 + encodeAlpha: 0 + flipVertical: 0 + flipHorizontal: 0 + importAudio: 1 + targetSettings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SpellingBee/Scripts/GameController.cs b/Assets/SpellingBee/Scripts/GameController.cs index 5635d45..b0aa81f 100644 --- a/Assets/SpellingBee/Scripts/GameController.cs +++ b/Assets/SpellingBee/Scripts/GameController.cs @@ -1,12 +1,9 @@ using System.Collections; using System.Collections.Generic; -using System.IO; using System; using TMPro; using UnityEngine; using UnityEngine.UI; -using static Unity.VisualScripting.Member; -using UnityEditor; public class GameController : MonoBehaviour { @@ -107,7 +104,7 @@ public class GameController : MonoBehaviour replayButton.onClick.AddListener(Start); // Create entry in current user for keeping track of progress - user = userList.users[userList.currentUserIndex]; + user = userList.GetCurrentUser(); progress = user.minigames.Find((p) => p != null && p.Get("minigameIndex") == minigame.index); if (progress == null) { @@ -118,7 +115,8 @@ public class GameController : MonoBehaviour progress.AddOrUpdate("highscore", 0); user.minigames.Add(progress); } - EditorUtility.SetDirty(user); + userList.Save(); + DeleteWord(); // TODO: change to ScriptableObject themeList = ThemeLoader.LoadJson(); @@ -191,7 +189,7 @@ public class GameController : MonoBehaviour if (score < highscore) { progress.AddOrUpdate("highsscore", score); - EditorUtility.SetDirty(user); + userList.Save(); } // @lukas stuff diff --git a/Assets/SpellingBee/Scripts/ThemeItem.cs b/Assets/SpellingBee/Scripts/ThemeItem.cs index e8cbe26..af2a9b1 100644 --- a/Assets/SpellingBee/Scripts/ThemeItem.cs +++ b/Assets/SpellingBee/Scripts/ThemeItem.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections; -using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.Events; -using UnityEngine.SceneManagement; using UnityEngine.UI; public class ThemeItem : MonoBehaviour diff --git a/Assets/SpellingBee/Scripts/ThemeLoader.cs b/Assets/SpellingBee/Scripts/ThemeLoader.cs index 6e3b151..2ede8c1 100644 --- a/Assets/SpellingBee/Scripts/ThemeLoader.cs +++ b/Assets/SpellingBee/Scripts/ThemeLoader.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; // JSON structure containing all themes/words diff --git a/Assets/SpellingBee/Scripts/ThemeSelectionController.cs b/Assets/SpellingBee/Scripts/ThemeSelectionController.cs index e4cd8fc..d635ca4 100644 --- a/Assets/SpellingBee/Scripts/ThemeSelectionController.cs +++ b/Assets/SpellingBee/Scripts/ThemeSelectionController.cs @@ -1,8 +1,4 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; -using UnityEngine.UI; -using TMPro; using UnityEngine.SceneManagement; public class ThemeSelectionController : MonoBehaviour diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 62cd5e8..8d34d1a 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -5,12 +5,15 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 1 - path: Assets/Common/Scenes/CoursesScreen.unity - guid: 4fb0b014dad7fcdcb96413a2c31b9cd1 - enabled: 1 path: Assets/Common/Scenes/StartScreen.unity guid: a50df781449ac1fa5a036626c4710b24 + - enabled: 1 + path: Assets/Accounts/Scenes/UserCreationScreen.unity + guid: 401cfc17c01f88847b434260a6a93933 + - enabled: 1 + path: Assets/Common/Scenes/CoursesScreen.unity + guid: 4fb0b014dad7fcdcb96413a2c31b9cd1 - enabled: 1 path: Assets/Common/Scenes/ListMinigamesScreen.unity guid: bfec7d1fbaa2ffd038ca6a86e6213bb7 diff --git a/UserList b/UserList new file mode 100644 index 0000000..e69de29