From d94cb5979e29a90e040c46d767ef965e9d371613 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 2 Sep 2018 15:00:41 +0200 Subject: [PATCH] added update completed dialog --- .../Scripts/Updater/HttpHandler.cs | 28 +- .../Scripts/Updater/UpdaterBehaviour.cs | 96 ++-- Assets/updaterScene.unity | 536 +++++++++++++++++- 3 files changed, 603 insertions(+), 57 deletions(-) diff --git a/Assets/RothenburgAR/Scripts/Updater/HttpHandler.cs b/Assets/RothenburgAR/Scripts/Updater/HttpHandler.cs index 11e352a..b3c6f79 100644 --- a/Assets/RothenburgAR/Scripts/Updater/HttpHandler.cs +++ b/Assets/RothenburgAR/Scripts/Updater/HttpHandler.cs @@ -2,14 +2,15 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using UnityEngine; using UnityEngine.Networking; namespace RothenburgAR.Updater { public class HttpRequest { - private string url; - private HttpVerb verb; + private readonly string url; + private readonly HttpVerb verb; private string uploadData; public HttpRequest(String url, HttpVerb verb, String uploadData = null) @@ -19,8 +20,9 @@ namespace RothenburgAR.Updater this.uploadData = uploadData; } - public HttpHandler send() + public HttpHandler Send() { + Debug.Log(string.Format("{1}-Downloading {0}", url, Time.realtimeSinceStartup)); DownloadHandler dl = new DownloadHandlerBuffer(); UploadHandlerRaw ul = null; if (uploadData != null) { ul = new UploadHandlerRaw(Encoding.UTF8.GetBytes(uploadData.ToCharArray())); } @@ -28,7 +30,7 @@ namespace RothenburgAR.Updater string verb = Enum.GetName(typeof(HttpVerb), this.verb); UnityWebRequest wr = new UnityWebRequest(url, verb, dl, ul); - wr.SetRequestHeader("Content-Type", "application/json;charset=UTF-8"); //or sth like that + wr.SetRequestHeader("Content-Type", "application/json;charset=UTF-8"); var operation = wr.SendWebRequest(); @@ -46,26 +48,26 @@ namespace RothenburgAR.Updater public class HttpHandler { - public UploadHandler upload { get; set; } - public DownloadHandler download { get; set; } - public UnityWebRequest request { get; set; } - public UnityWebRequestAsyncOperation operation {get;set;} + public UploadHandler Upload { get; set; } + public DownloadHandler Download { get; set; } + public UnityWebRequest Request { get; set; } + public UnityWebRequestAsyncOperation Operation {get;set;} public bool IsDone { get { //TODO read documentation - return operation.isDone && request.isDone; + return Operation.isDone && Request.isDone; } } public HttpHandler(UploadHandler upload, DownloadHandler download, UnityWebRequest request, UnityWebRequestAsyncOperation operation) { - this.upload = upload; - this.download = download; - this.request = request; - this.operation = operation; + this.Upload = upload; + this.Download = download; + this.Request = request; + this.Operation = operation; } } diff --git a/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs b/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs index 76cf7a6..d6a3af6 100644 --- a/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs +++ b/Assets/RothenburgAR/Scripts/Updater/UpdaterBehaviour.cs @@ -14,18 +14,18 @@ namespace RothenburgAR.Updater public UnityEngine.UI.Slider ProgressBar; public GameObject UpdateDialog; public GameObject UpdateConfirmationDialog; - - private float afterDownloadWaitTime = 10f; + public GameObject UpdateCompletedDialog; + + private readonly float afterDownloadWaitTime = 10f; public VersioncheckAnswer VersionAnswer { get; set; } private List httpHandlers = new List(); - private LogFileHandler logFileHandler; + private readonly LogFileHandler logFileHandler; void Start() { /* TODO: allg. fragen - punkt zum eintragen der credentials? user will ja nur seine/nur bestimmte exhibitions haben schätz ich - oder beim update auswählen lassen, welche kommen sollen + punkt zum eintragen der credentials? */ #if !UNITY_EDITOR @@ -33,10 +33,7 @@ namespace RothenburgAR.Updater #else Debug.Log("Found Unity Editor; Disabled logging into file."); #endif - - FindObjectsOfType().First().enabled = true; - UpdateDialog.SetActive(false); - UpdateConfirmationDialog.SetActive(false); + InitUI(); if (Application.internetReachability == NetworkReachability.NotReachable) { @@ -48,27 +45,38 @@ namespace RothenburgAR.Updater CheckForUpdates(); } + private void InitUI() + { + FindObjectsOfType().First().enabled = true; + UpdateDialog.SetActive(false); + UpdateConfirmationDialog.SetActive(false); + UpdateCompletedDialog.SetActive(false); + ProgressBar.value = 0; + } + private void CheckForUpdates() { // check for updates and ask for permission to download if there are any - string versionMap = GenerateVersionMap(); - HttpHandler http = new HttpRequest(ApiInfo.VersionCheckEndpoint, HttpVerb.POST, versionMap).send(); + HttpHandler http = new HttpRequest(ApiInfo.VersionCheckEndpoint, HttpVerb.POST, versionMap).Send(); httpHandlers.Add(http); - http.operation.completed += ar => + http.Operation.completed += ar => { if (CheckNetworkErrors(http)) { return; } - Debug.Log(http.download.text); + Debug.Log(http.Download.text); - //VersionAnswer = JsonConvert.DeserializeObject(http.download.text); - VersionAnswer = JsonConvert.DeserializeObject(@"{""languages"":[""de"",""en""],""data"":[{""id"":""006e164c-5e31-4ddf-adf5-df7016c8b3a8"",""meta"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""},""tracker"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""}},{""id"":""006e164c-5e31-4ddf-adf5-df7016c8b3a7"",""meta"":{""status"":""updated"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""},""tracker"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""}}]}"); + VersionAnswer = JsonConvert.DeserializeObject(http.Download.text); + //VersionAnswer = JsonConvert.DeserializeObject(@"{""languages"":[""de"",""en""],""data"":[{""id"":""006e164c-5e31-4ddf-adf5-df7016c8b3a8"",""meta"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""},""tracker"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""}},{""id"":""006e164c-5e31-4ddf-adf5-df7016c8b3a7"",""meta"":{""status"":""updated"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""},""tracker"":{""status"":""ok"",""updateUrl"":""https://lambdalike.pa.kaim.network/meta/006e164c-5e31-4ddf-adf5-df7016c8b3a7/{lang}""}}]}"); + Debug.Log(string.Format("{1}-DONE with {0}", ApiInfo.VersionCheckEndpoint, Time.realtimeSinceStartup)); - if (VersionAnswer.data.TrueForAll(d => d.Meta.Status == VersionStatus.ok && d.Tracker.Status == VersionStatus.ok)) + var answer = VersionAnswer; + + if (answer.data.TrueForAll(d => d.Meta.Status == VersionStatus.ok && d.Tracker.Status == VersionStatus.ok)) { // no updates required, continue to app LoadMainScene(); @@ -170,10 +178,10 @@ namespace RothenburgAR.Updater { var path = PathHelper.CombinePaths(PathHelper.ExhibitionPath, exhibition.Id, lang); var url = exhibition.Meta.UpdateUrl.Replace("{lang}", lang); - var http = new HttpRequest(url, HttpVerb.GET).send(); + var http = new HttpRequest(url, HttpVerb.GET).Send(); httpHandlers.Add(http); - http.operation.completed += ar => + http.Operation.completed += ar => { if (CheckNetworkErrors(http)) { @@ -185,9 +193,10 @@ namespace RothenburgAR.Updater Directory.CreateDirectory(path); } - File.WriteAllText(Path.Combine(path, "meta.json"), http.download.text, System.Text.Encoding.UTF8); + File.WriteAllText(Path.Combine(path, "meta.json"), http.Download.text, System.Text.Encoding.UTF8); + Debug.Log(string.Format("{1}-DONE with {0}", url, Time.realtimeSinceStartup)); - var exhibits = JsonConvert.DeserializeObject>(http.download.text); + var exhibits = JsonConvert.DeserializeObject>(http.Download.text); foreach (var exhibit in exhibits) { UpdateMedia(exhibit); @@ -206,39 +215,45 @@ namespace RothenburgAR.Updater foreach (var mediaId in mediaIDs) { var path = PathHelper.CombinePaths(PathHelper.MediaPath, mediaId); + var filepath = Path.Combine(path, "media.zip"); + + //TODO cancel download if unnecessary + if (File.Exists(filepath)) continue; + + // create file and dir if nonexistent + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + if (!File.Exists(filepath)) File.Create(filepath).Close(); + var url = ApiInfo.FileEndpoint.Replace("{id}", mediaId); - var http = new HttpRequest(url, HttpVerb.GET).send(); + var http = new HttpRequest(url, HttpVerb.GET).Send(); httpHandlers.Add(http); - http.operation.completed += ar => + http.Operation.completed += ar => { if (CheckNetworkErrors(http)) { return; } - if (!Directory.Exists(path)) - { - Directory.CreateDirectory(path); - } + var type = http.Request.GetResponseHeader("Content-Type"); + File.WriteAllBytes(filepath, http.Download.data); + Debug.Log(string.Format("{1}-DONE with {0}", url, Time.realtimeSinceStartup)); - //TODO find out media type - var type = http.request.GetResponseHeader("Content-Type"); - File.WriteAllBytes(Path.Combine(path, "media.dat"), http.download.data); + //TODO unzip }; } } private bool CheckNetworkErrors(HttpHandler http) { - if (http.request.isNetworkError || http.request.isHttpError) + if (http.Request.isNetworkError || http.Request.isHttpError) { //TODO notify user about error (decide on level of detail) Debug.LogError(String.Format("Error while downloading\nurl: {0}\nNetwork Error: {1}\nHttp Error: {2}\nHttp Response Code: {3}", - http.request.url, - http.request.isNetworkError, - http.request.isHttpError, - http.request.responseCode)); + http.Request.url, + http.Request.isNetworkError, + http.Request.isHttpError, + http.Request.responseCode)); return true; } @@ -250,21 +265,23 @@ namespace RothenburgAR.Updater throw new NotImplementedException(); } - private static void LoadMainScene() + public void LoadMainScene() { + Debug.Log("Loading mainScene"); UnityEngine.SceneManagement.SceneManager.LoadScene("mainScene"); } private DateTime downloadEndedTime = DateTime.Now.AddSeconds(1); - + void Update() { + // Update the download progress bar if (httpHandlers.Count > 0) { float downloadProgress = 0f; httpHandlers.ForEach(h => { - downloadProgress += h.operation.progress; + downloadProgress += h.Operation.progress; }); downloadProgress /= httpHandlers.Count; @@ -272,16 +289,17 @@ namespace RothenburgAR.Updater ProgressBar.value = downloadProgress; } - // Continue to Main Scene after all downloads are done and 3 seconds have passed without any new downloads triggering. + // Continue to Main Scene after all downloads are done and this.afterDownloadWaitTime seconds have passed without any new downloads triggering. if (httpHandlers.All(h => h.IsDone)) { if (downloadEndedTime > DateTime.Now) { + Debug.Log("Done Updating"); + UpdateCompletedDialog.SetActive(true); downloadEndedTime = DateTime.Now; } if (downloadEndedTime.AddSeconds(afterDownloadWaitTime) < DateTime.Now) { - Debug.Log("Done Updating"); LoadMainScene(); } } diff --git a/Assets/updaterScene.unity b/Assets/updaterScene.unity index ce220dc..c77573c 100644 --- a/Assets/updaterScene.unity +++ b/Assets/updaterScene.unity @@ -211,6 +211,7 @@ MonoBehaviour: ProgressBar: {fileID: 1616505721} UpdateDialog: {fileID: 869888021} UpdateConfirmationDialog: {fileID: 1979410602} + UpdateCompletedDialog: {fileID: 318423819} --- !u!4 &289788188 Transform: m_ObjectHideFlags: 0 @@ -224,6 +225,198 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &318423819 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 318423820} + - component: {fileID: 318423822} + - component: {fileID: 318423821} + m_Layer: 5 + m_Name: UpdatesCompleted + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &318423820 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 318423819} + 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_Children: + - {fileID: 2032181273} + - {fileID: 426346270} + m_Father: {fileID: 485155447} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.02, y: 0.01} + m_AnchorMax: {x: 0.98, y: 0.84} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &318423821 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 318423819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &318423822 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 318423819} +--- !u!1 &426346269 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 426346270} + - component: {fileID: 426346273} + - component: {fileID: 426346272} + - component: {fileID: 426346271} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &426346270 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426346269} + 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_Children: + - {fileID: 1042781313} + m_Father: {fileID: 318423820} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.2, y: 0.35} + m_AnchorMax: {x: 0.8, y: 0.45} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &426346271 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426346269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.011764707, g: 0.6627451, b: 0.9568628, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 426346272} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 289788187} + m_MethodName: LoadMainScene + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &426346272 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426346269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &426346273 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 426346269} --- !u!1 &485155446 GameObject: m_ObjectHideFlags: 0 @@ -255,6 +448,7 @@ RectTransform: - {fileID: 1676323380} - {fileID: 562107609} - {fileID: 1979410603} + - {fileID: 318423820} m_Father: {fileID: 869888025} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -859,6 +1053,172 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: SizeClass: 1 +--- !u!1 &1042781312 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1042781313} + - component: {fileID: 1042781316} + - component: {fileID: 1042781315} + - component: {fileID: 1042781314} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1042781313 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1042781312} + 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_Children: [] + m_Father: {fileID: 426346270} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1042781314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1042781312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b136c9157840904ba79e96d50f494bc, type: 3} + m_Name: + m_EditorClassIdentifier: + SizeClass: 1 +--- !u!114 &1042781315 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1042781312} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1453722849, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_text: OK + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 715b80e429c437e40867928a4e1fc975, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 715b80e429c437e40867928a4e1fc975, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4279308561 + m_fontColor: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 38.4 + m_fontSizeBase: 38.4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 15 + m_fontSizeMax: 1000 + m_fontStyle: 0 + m_textAlignment: 514 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 1042781315} + characterCount: 2 + spriteCount: 0 + spaceCount: 0 + wordCount: 1 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1042781316 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1042781312} --- !u!1 &1061370337 GameObject: m_ObjectHideFlags: 0 @@ -1064,11 +1424,11 @@ MonoBehaviour: lineCount: 3 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 + m_havePropertiesChanged: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 + m_isInputParsingRequired: 1 m_inputSource: 0 m_hasFontAssetChanged: 0 m_subTextObjects: @@ -1546,7 +1906,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1979410603 RectTransform: m_ObjectHideFlags: 0 @@ -1668,6 +2028,172 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1981763282} +--- !u!1 &2032181272 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2032181273} + - component: {fileID: 2032181276} + - component: {fileID: 2032181275} + - component: {fileID: 2032181274} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2032181273 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032181272} + 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_Children: [] + m_Father: {fileID: 318423820} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2032181274 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032181272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b136c9157840904ba79e96d50f494bc, type: 3} + m_Name: + m_EditorClassIdentifier: + SizeClass: 1 +--- !u!114 &2032181275 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032181272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1453722849, guid: 89f0137620f6af44b9ba852b4190e64e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_text: Updates abgeschlossen. + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 715b80e429c437e40867928a4e1fc975, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 715b80e429c437e40867928a4e1fc975, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4279308561 + m_fontColor: {r: 0.06666667, g: 0.06666667, b: 0.06666667, a: 1} + m_enableVertexGradient: 0 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_outlineColor: + serializedVersion: 2 + rgba: 4278190080 + m_fontSize: 38.4 + m_fontSizeBase: 38.4 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 15 + m_fontSizeMax: 1000 + m_fontStyle: 0 + m_textAlignment: 1026 + m_isAlignmentEnumConverted: 1 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_firstOverflowCharacterIndex: -1 + m_linkedTextComponent: {fileID: 0} + m_isLinkedTextComponent: 0 + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_ignoreRectMaskCulling: 0 + m_ignoreCulling: 1 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_firstVisibleCharacter: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_textInfo: + textComponent: {fileID: 2032181275} + characterCount: 22 + spriteCount: 0 + spaceCount: 1 + wordCount: 2 + linkCount: 0 + lineCount: 1 + pageCount: 1 + materialCount: 1 + m_havePropertiesChanged: 0 + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_spriteAnimator: {fileID: 0} + m_isInputParsingRequired: 0 + m_inputSource: 0 + m_hasFontAssetChanged: 0 + m_subTextObjects: + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + - {fileID: 0} + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &2032181276 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032181272} --- !u!1 &2035082178 GameObject: m_ObjectHideFlags: 0 @@ -1878,11 +2404,11 @@ MonoBehaviour: lineCount: 1 pageCount: 1 materialCount: 1 - m_havePropertiesChanged: 0 + m_havePropertiesChanged: 1 m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_spriteAnimator: {fileID: 0} - m_isInputParsingRequired: 0 + m_isInputParsingRequired: 1 m_inputSource: 0 m_hasFontAssetChanged: 0 m_subTextObjects: