From 15618360df4c3a8409b65f0f2bc9a3fb52d5d221 Mon Sep 17 00:00:00 2001 From: Saul Sayers <saulsayers@gmail.com> Date: Sat, 15 Apr 2023 13:03:30 +0700 Subject: [PATCH] integrate scoreboard --- Assets/Prefabs/LocalScoreBoardCanvas.prefab | 113 +---------- Assets/Scenes/LocalScoreBoard.unity | 185 +++++++++--------- Assets/Scripts/Managers/LeaderboardManager.cs | 48 ----- .../Managers/LeaderboardManager.cs.meta | 11 -- Assets/Scripts/Managers/ScoreBoardManager.cs | 63 +++++- 5 files changed, 150 insertions(+), 270 deletions(-) delete mode 100644 Assets/Scripts/Managers/LeaderboardManager.cs delete mode 100644 Assets/Scripts/Managers/LeaderboardManager.cs.meta diff --git a/Assets/Prefabs/LocalScoreBoardCanvas.prefab b/Assets/Prefabs/LocalScoreBoardCanvas.prefab index e0637b3..397dc28 100644 --- a/Assets/Prefabs/LocalScoreBoardCanvas.prefab +++ b/Assets/Prefabs/LocalScoreBoardCanvas.prefab @@ -588,8 +588,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3421564380825088160} + m_Children: [] m_Father: {fileID: 757445291740208358} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -817,7 +816,7 @@ GameObject: - component: {fileID: 1867618750032795262} - component: {fileID: 1867618750032795257} m_Layer: 5 - m_Name: Date + m_Name: Score m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -884,7 +883,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Date + m_Text: Score --- !u!1 &1867618750533203121 GameObject: m_ObjectHideFlags: 0 @@ -976,7 +975,7 @@ GameObject: - component: {fileID: 1867618750587678501} - component: {fileID: 1867618750587678500} m_Layer: 5 - m_Name: Score + m_Name: Name m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -1043,7 +1042,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Score + m_Text: Name --- !u!1 &1867618751381683968 GameObject: m_ObjectHideFlags: 0 @@ -1124,105 +1123,3 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: No. ---- !u!1001 &4725594349178682031 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 757445291660857971} - m_Modifications: - - target: {fileID: 4488700541150533567, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_Name - value: LocalScoreBoardItem - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_Pivot.x - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_Pivot.y - value: 0.5 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_AnchorMax.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_AnchorMax.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_AnchorMin.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_AnchorMin.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_SizeDelta.x - value: 724 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_SizeDelta.y - value: 46 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_AnchoredPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_AnchoredPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: e4e81bd14816011489dcb558784f7512, type: 3} ---- !u!224 &3421564380825088160 stripped -RectTransform: - m_CorrespondingSourceObject: {fileID: 7993741629831121423, guid: e4e81bd14816011489dcb558784f7512, type: 3} - m_PrefabInstance: {fileID: 4725594349178682031} - m_PrefabAsset: {fileID: 0} diff --git a/Assets/Scenes/LocalScoreBoard.unity b/Assets/Scenes/LocalScoreBoard.unity index 2eb1156..0dde6c8 100644 --- a/Assets/Scenes/LocalScoreBoard.unity +++ b/Assets/Scenes/LocalScoreBoard.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.18028331, g: 0.2257133, b: 0.3069217, a: 1} + m_IndirectSpecularColor: {r: 0.18319218, g: 0.2267955, b: 0.29456192, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -175,7 +175,7 @@ Camera: near clip plane: 0.3 far clip plane: 1000 field of view: 60 - orthographic: 0 + orthographic: 1 orthographic size: 5 m_Depth: -1 m_CullingMask: @@ -298,14 +298,46 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 757445291285196762, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_SortingOrder + value: 0 + objectReference: {fileID: 0} - target: {fileID: 757445291285196765, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} propertyPath: m_Name value: LocalScoreBoardCanvas objectReference: {fileID: 0} + - target: {fileID: 757445291285196765, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 757445291660857971, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} - target: {fileID: 757445291660857971, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} propertyPath: m_SizeDelta.y value: 0 objectReference: {fileID: 0} + - target: {fileID: 1867618750032795257, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_Text + value: Time + objectReference: {fileID: 0} + - target: {fileID: 3421564380825088160, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3421564380825088160, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3421564380825088160, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3421564380825088160, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6810100177073109259, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} propertyPath: m_AnchorMax.y value: 0 @@ -324,97 +356,60 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 6c67d7499ec201640a279a6b98f8931c, type: 3} ---- !u!1 &1428890689 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1428890691} - - component: {fileID: 1428890690} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1428890690 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1428890689} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1428890691 -Transform: +--- !u!1001 &1554473736 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1428890689} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 126720, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_Name + value: Lights + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 409160, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ad67cddd729fb4342be2063a3f5ad7cc, type: 3} diff --git a/Assets/Scripts/Managers/LeaderboardManager.cs b/Assets/Scripts/Managers/LeaderboardManager.cs deleted file mode 100644 index 0e7da95..0000000 --- a/Assets/Scripts/Managers/LeaderboardManager.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using System.IO; -using Newtonsoft.Json.Linq; -using Newtonsoft; - -public class LeaderboardManager : MonoBehaviour -{ - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } - -// CONTOH JSON NYA CEK AJA DI FOLDER SAVEFILE/LEADERBOARD.JSON -// JADI DIA KEK LIST OF LIST OF OBJECTS, BELUM SORTED - public void LoadFromFile() - { - string filePath = Application.dataPath + "/SaveFile/Leaderboard.json"; - if (File.Exists(filePath)) - { - string jsonData = File.ReadAllText(filePath); - JArray dataArray = JArray.Parse(jsonData); - foreach (var data in dataArray) - { - List<object> leaderboardData = new List<object>(data.ToObject<object[]>()); - string username = (string)leaderboardData[0]; - int score = (int)leaderboardData[1]; - string date = (string)leaderboardData[2]; - - // do something with the loaded data - } - } - else - { - Debug.Log("File not found"); - } - } - - -} diff --git a/Assets/Scripts/Managers/LeaderboardManager.cs.meta b/Assets/Scripts/Managers/LeaderboardManager.cs.meta deleted file mode 100644 index b0d5328..0000000 --- a/Assets/Scripts/Managers/LeaderboardManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3aa6c46ddde6f6946ba26dc32c4a38e4 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Managers/ScoreBoardManager.cs b/Assets/Scripts/Managers/ScoreBoardManager.cs index 135008c..42dfb08 100644 --- a/Assets/Scripts/Managers/ScoreBoardManager.cs +++ b/Assets/Scripts/Managers/ScoreBoardManager.cs @@ -2,6 +2,9 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; +using System.IO; +using Newtonsoft.Json.Linq; +using Newtonsoft; #if UNITY_EDITOR using UnityEditor; @@ -16,30 +19,74 @@ public class ScoreBoardManager : MonoBehaviour void Start() { prefab = AssetDatabase.LoadAssetAtPath("Assets/Prefabs/LocalScoreBoardItem.prefab", typeof(GameObject)); + LoadFromFile(); } // Update is called once per frame void Update() { - // INI BUAT TESTING AJAAA - if (Input.GetKeyDown(KeyCode.B)) { - Debug.Log("UPDATE"); - addScoreBoardItem(100, "2019-01-01"); - } + } - void addScoreBoardItem(int score, string date) { + void addScoreBoardItem(string name, int score) { Debug.Log("ADD SCORE BOARD ITEM"); GameObject scoreBoardInstance = Instantiate(prefab, Vector3.zero, Quaternion.identity) as GameObject; scoreBoardInstance.transform.GetChild(0).GetComponent<Text>().text = (content.transform.childCount + 1).ToString() + "."; - scoreBoardInstance.transform.GetChild(1).GetComponent<Text>().text = score.ToString(); - scoreBoardInstance.transform.GetChild(2).GetComponent<Text>().text = date; + scoreBoardInstance.transform.GetChild(1).GetComponent<Text>().text = name; + scoreBoardInstance.transform.GetChild(2).GetComponent<Text>().text = score.ToString(); Debug.Log(scoreBoardInstance.transform.GetChild(1).GetComponent<Text>().text); Debug.Log(scoreBoardInstance.transform.GetChild(2).GetComponent<Text>().text); scoreBoardInstance.transform.SetParent(content.transform, false); } + +// CONTOH JSON NYA CEK AJA DI FOLDER SAVEFILE/LEADERBOARD.JSON +// JADI DIA KEK LIST OF LIST OF OBJECTS, BELUM SORTED + public void LoadFromFile() + { + string filePath = Application.dataPath + "/SaveFile/Leaderboard.json"; + if (File.Exists(filePath)) + { + string jsonData = File.ReadAllText(filePath); + JArray dataArray = JArray.Parse(jsonData); + + List<LeaderboardItem> leaderboardItems = new List<LeaderboardItem>(); + + foreach (var data in dataArray) + { + List<object> leaderboardData = new List<object>(data.ToObject<object[]>()); + string username = (string)leaderboardData[0]; + int score = int.Parse(leaderboardData[1].ToString()); + string date = (string)leaderboardData[2]; + + leaderboardItems.Add(new LeaderboardItem(username, score)); + } + + // sort the leaderboard items in descending order based on score + leaderboardItems.Sort((item1, item2) => item1.Score.CompareTo(item2.Score)); + + foreach (var item in leaderboardItems) + { + addScoreBoardItem(item.Username, item.Score); + } + } + else + { + Debug.Log("File not found"); + } + } + public class LeaderboardItem + { + public string Username { get; set; } + public int Score { get; set; } + + public LeaderboardItem(string username, int score) + { + Username = username; + Score = score; + } + } } -- GitLab