< Summary

Class:AvatarEditorHUDAudioHandler
Assembly:AvatarEditorHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarEditorHUD/Scripts/AvatarEditorHUDAudioHandler.cs
Covered lines:9
Uncovered lines:94
Coverable lines:103
Total lines:244
Line coverage:8.7% (9 of 103)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Start()0%220100%
OnSelectWearable(...)0%11903400%
OnEyeColorChanged(...)0%2100%
OnSkinColorChanged(...)0%2100%
OnHairColorChanged(...)0%2100%
OnClickRandomize()0%2100%
ResetLastClickedWearable()0%2100%
OnAvatarAppear(...)0%42600%
PlayRarity()0%12300%
PlayVoiceReaction(...)0%1101000%
OnSetAvatarEditorVisibility(...)0%42600%
OnDestroy()0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarEditorHUD/Scripts/AvatarEditorHUDAudioHandler.cs

#LineLine coverage
 1using DCL;
 2using System.Collections;
 3using UnityEngine;
 4using UnityEngine.UI;
 5using Categories = WearableLiterals.Categories;
 6using Rarity = WearableLiterals.ItemRarity;
 7
 8public class AvatarEditorHUDAudioHandler : MonoBehaviour
 9{
 10    [SerializeField]
 11    AvatarEditorHUDView view;
 12
 13    [SerializeField]
 14    ItemSelector nftItemSelector;
 15
 16    [SerializeField]
 17    Button randomizeButton;
 18
 19    [SerializeField]
 20    AudioEvent eventMusic, eventRarity, eventAvatarAppear, eventReactionMale, eventReactionFemale, eventWearableClothing
 21               eventWearableFootwear, eventWearableHair, eventWearableHatMask, eventWearableRarity;
 22
 23    WearableItem lastSelectedWearable = null;
 24    bool hasClickedRandomize = false, wearableIsSameAsPrevious = false;
 25
 26    IEnumerator musicFadeOut;
 27
 28    private void Start()
 29    {
 4830        int nPairs = view.wearableGridPairs.Length;
 172831        for (int i = 0; i < nPairs; i++)
 32        {
 81633            view.wearableGridPairs[i].selector.OnItemClicked += OnSelectWearable;
 34        }
 35
 4836        nftItemSelector.OnItemClicked += OnSelectWearable;
 37
 4838        view.OnSetVisibility += OnSetAvatarEditorVisibility;
 4839        view.OnRandomize += OnClickRandomize;
 4840    }
 41
 42    void OnSelectWearable(string wearableId)
 43    {
 044        CatalogController.wearableCatalog.TryGetValue(wearableId, out var wearable);
 045        wearableIsSameAsPrevious = (wearable == lastSelectedWearable);
 046        if (wearableIsSameAsPrevious)
 047            return;
 48
 049        lastSelectedWearable = wearable;
 050        if (wearable == null)
 051            return;
 52
 053        switch (wearable.data.category)
 54        {
 55            case Categories.EYEBROWS:
 056                eventWearableHair.Play(true);
 057                break;
 58            case "facial_hair":
 059                eventWearableHair.Play(true);
 060                break;
 61            case Categories.FEET:
 062                eventWearableFootwear.Play(true);
 063                break;
 64            case Categories.HAIR:
 065                eventWearableHair.Play(true);
 066                break;
 67            case Categories.LOWER_BODY:
 068                eventWearableClothing.Play(true);
 069                break;
 70            case Categories.UPPER_BODY:
 071                eventWearableClothing.Play(true);
 072                break;
 73            case "eyewear":
 074                eventWearableEyewear.Play(true);
 075                break;
 76            case "tiara":
 077                eventWearableJewelry.Play(true);
 078                break;
 79            case "earring":
 080                eventWearableJewelry.Play(true);
 081                break;
 82            case "hat":
 083                eventWearableHatMask.Play(true);
 084                break;
 85            case "top_head":
 086                eventWearableFootwear.Play(true);
 087                break;
 88            case "helmet":
 089                eventWearableFootwear.Play(true);
 090                break;
 91            case "mask":
 092                eventWearableHatMask.Play(true);
 93                break;
 94            default:
 95                break;
 96        }
 097    }
 98
 099    void OnEyeColorChanged(Color color) { ResetLastClickedWearable(); }
 100
 0101    void OnSkinColorChanged(Color color) { ResetLastClickedWearable(); }
 102
 0103    void OnHairColorChanged(Color color) { ResetLastClickedWearable(); }
 104
 105    void OnClickRandomize()
 106    {
 0107        hasClickedRandomize = true;
 0108        ResetLastClickedWearable();
 0109    }
 110
 0111    void ResetLastClickedWearable() { lastSelectedWearable = null; }
 112
 113    void OnAvatarAppear(AvatarModel model)
 114    {
 0115        if (!view.isOpen)
 0116            return;
 117
 0118        eventAvatarAppear.Play(true);
 119
 0120        if (!wearableIsSameAsPrevious)
 121        {
 0122            if (lastSelectedWearable != null)
 0123                PlayRarity();
 124
 0125            if (lastSelectedWearable != null || hasClickedRandomize)
 0126                PlayVoiceReaction(model.bodyShape);
 127        }
 128
 0129        hasClickedRandomize = false;
 0130    }
 131
 132    void PlayRarity()
 133    {
 0134        if (lastSelectedWearable.rarity == null)
 0135            return;
 136
 137        /*switch (lastClickedWearable.rarity)
 138         {
 139             case Rarity.RARE:
 140                 eventRarity.SetIndex(0);
 141                 break;
 142             case Rarity.EPIC:
 143                 eventRarity.SetIndex(1);
 144                 break;
 145             case Rarity.LEGENDARY:
 146                 eventRarity.SetIndex(2);
 147                 break;
 148             case Rarity.MYTHIC:
 149                 eventRarity.SetIndex(3);
 150                 break;
 151             case Rarity.UNIQUE:
 152                 eventRarity.SetIndex(4);
 153                 break;
 154             default:
 155                 eventRarity.SetIndex(0);
 156                 break;
 157         }*/
 158
 0159        if (lastSelectedWearable.rarity == Rarity.UNIQUE)
 0160            eventRarity.SetIndex(1);
 161        else
 0162            eventRarity.SetIndex(0);
 163
 0164        eventRarity.Play(true);
 0165    }
 166
 167    void PlayVoiceReaction(string bodyShape)
 168    {
 0169        float chanceToPlay = 0.75f;
 0170        AudioEvent eventReaction = null;
 171
 0172        if (bodyShape.Contains("Female"))
 0173            eventReaction = eventReactionFemale;
 174        else
 0175            eventReaction = eventReactionMale;
 176
 0177        if (lastSelectedWearable != null)
 178        {
 0179            if (lastSelectedWearable.rarity == Rarity.EPIC
 180                || lastSelectedWearable.rarity == Rarity.LEGENDARY
 181                || lastSelectedWearable.rarity == Rarity.MYTHIC
 182                || lastSelectedWearable.rarity == Rarity.UNIQUE)
 183            {
 0184                eventReaction.RandomizeIndex(14, 28);
 0185                chanceToPlay = 1f;
 0186            }
 187            else
 188            {
 0189                eventReaction.RandomizeIndex(0, 14);
 190            }
 191        }
 192
 0193        if (eventReaction != null && Random.Range(0f, 1f) <= chanceToPlay)
 194        {
 0195            if (!eventReaction.source.isPlaying)
 196            {
 0197                eventReaction.PlayScheduled(0.6f);
 198            }
 199        }
 0200    }
 201
 202    void OnSetAvatarEditorVisibility(bool visible)
 203    {
 0204        AudioScriptableObjects.listItemAppear.ResetPitch();
 205
 0206        if (visible)
 207        {
 0208            if (DataStore.i.common.isSignUpFlow.Get())
 209            {
 0210                if (musicFadeOut != null)
 211                {
 0212                    StopCoroutine(musicFadeOut);
 0213                    StartCoroutine(eventMusic.FadeIn(1f));
 214                }
 215
 0216                if (!eventMusic.source.isPlaying)
 0217                    eventMusic.Play();
 218            }
 219
 0220            view.eyeColorPickerComponent.OnColorChanged += OnEyeColorChanged;
 0221            view.skinColorSelector.OnColorSelectorChange += OnSkinColorChanged;
 0222            view.hairColorPickerComponent.OnColorChanged += OnHairColorChanged;
 0223            view.OnAvatarAppear += OnAvatarAppear;
 0224        }
 225        else
 226        {
 0227            if (DataStore.i.common.isSignUpFlow.Get())
 228            {
 0229                musicFadeOut = eventMusic.FadeOut(2f);
 0230                StartCoroutine(musicFadeOut);
 231            }
 232
 0233            view.eyeColorPickerComponent.OnColorChanged -= OnEyeColorChanged;
 0234            view.skinColorSelector.OnColorSelectorChange -= OnSkinColorChanged;
 0235            view.hairColorPickerComponent.OnColorChanged -= OnHairColorChanged;
 0236            view.OnAvatarAppear -= OnAvatarAppear;
 237        }
 0238    }
 239
 240    private void OnDestroy()
 241    {
 48242        view.OnSetVisibility -= OnSetAvatarEditorVisibility;
 48243    }
 244}