public async void LoadCharacter(CharacterMeta meta) { ParallaxHolder.WillDelaySet = true; var isNewCharacter = Context.CharacterManager.ActiveCharacterBundleId != meta.AssetId; if (isNewCharacter) { SpinnerOverlay.Show(); infoCard.Leave(false); characterTransitionElement.Leave(false); } var character = await Context.CharacterManager.SetActiveCharacter(meta.AssetId); if (character == null) { throw new Exception("Character not downloaded or corrupted"); } if (isNewCharacter) { await UniTask.Delay(TimeSpan.FromSeconds(0.4f)); } nameText.text = meta.Name; nameGradient.SetGradient(character.nameGradient.GetGradient()); descriptionText.text = meta.Description; levelCard.SetModel(meta.Level.ToLevel(LevelType.User)); illustratorText.text = meta.Illustrator.Name; illustratorProfileButton.onPointerClick.SetListener(_ => Application.OpenURL(meta.Illustrator.Url)); if (meta.CharacterDesigner != null && !meta.CharacterDesigner.Name.IsNullOrEmptyTrimmed()) { characterDesignerHolder.gameObject.SetActive(true); characterDesignerText.text = meta.CharacterDesigner.Name; characterDesignerProfileButton.onPointerClick.SetListener(_ => Application.OpenURL(meta.CharacterDesigner.Url)); } else { characterDesignerHolder.gameObject.SetActive(false); } infoCard.transform.RebuildLayout(); if (character.musicAudio == null) { muteButtonImage.sprite = volumeSprite; muteButtonImage.SetAlpha(0.3f); muteButton.scaleOnClick = false; muteButton.onPointerClick.RemoveAllListeners(); } else { muteButtonImage.sprite = Context.Player.Settings.PlayCharacterTheme ? volumeSprite : volumeMuteSprite; muteButtonImage.SetAlpha(1f); muteButton.scaleOnClick = true; muteButton.onPointerClick.SetListener(_ => { Context.Player.Settings.PlayCharacterTheme = !Context.Player.Settings.PlayCharacterTheme; Context.Player.SaveSettings(); LoopAudioPlayer.Instance.SetMainAudio(Context.Player.Settings.PlayCharacterTheme ? character.musicAudio : LoopAudioPlayer.Instance.defaultLoopAudio); muteButtonImage.sprite = Context.Player.Settings.PlayCharacterTheme ? volumeSprite : volumeMuteSprite; }); } await characterDisplay.Load(CharacterAsset.GetTachieBundleId(meta.AssetId)); NavigationBackdrop.Instance.UpdateBlur(); infoCard.Enter(); characterTransitionElement.Leave(false, true); characterTransitionElement.Enter(); characterTransitionElement.Apply(it => { it.enterMultiplier = 0.4f; it.enterDelay = 0.4f; it.enterDuration = 0.8f; }); if (Context.IsOffline()) { SpinnerOverlay.Hide(); } else { RestClient.Post(new RequestHelper { Uri = $"{Context.ApiUrl}/profile/{Context.Player.Id}/character", Headers = Context.OnlinePlayer.GetRequestHeaders(), EnableDebug = true, Body = new CharacterPostData { characterId = meta.Id } }) .CatchRequestError(error => { Debug.LogError(error); Toast.Next(Toast.Status.Failure, "TOAST_FAILED_TO_UPDATE_PROFILE_CHARACTER".Get()); }) .Finally(() => { SpinnerOverlay.Hide(); }); } ParallaxHolder.WillDelaySet = false; }