< 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:7
Uncovered lines:92
Coverable lines:99
Total lines:233
Line coverage:7% (7 of 99)
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%20400%

File(s)

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

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 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    {
 130        int nPairs = view.wearableGridPairs.Length;
 3431        for (int i = 0; i < nPairs; i++)
 32        {
 1633            view.wearableGridPairs[i].selector.OnItemClicked += OnSelectWearable;
 34        }
 35
 136        nftItemSelector.OnItemClicked += OnSelectWearable;
 37
 138        view.OnSetVisibility += OnSetAvatarEditorVisibility;
 139        view.OnRandomize += OnClickRandomize;
 140    }
 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 (musicFadeOut != null)
 209            {
 0210                StopCoroutine(musicFadeOut);
 0211                StartCoroutine(eventMusic.FadeIn(1f));
 212            }
 213
 0214            if (!eventMusic.source.isPlaying)
 0215                eventMusic.Play();
 216
 0217            view.eyeColorSelector.OnColorChanged += OnEyeColorChanged;
 0218            view.skinColorSelector.OnColorChanged += OnSkinColorChanged;
 0219            view.hairColorSelector.OnColorChanged += OnHairColorChanged;
 0220            view.OnAvatarAppear += OnAvatarAppear;
 0221        }
 222        else
 223        {
 0224            musicFadeOut = eventMusic.FadeOut(2f);
 0225            StartCoroutine(musicFadeOut);
 226
 0227            view.eyeColorSelector.OnColorChanged -= OnEyeColorChanged;
 0228            view.skinColorSelector.OnColorChanged -= OnSkinColorChanged;
 0229            view.hairColorSelector.OnColorChanged -= OnHairColorChanged;
 0230            view.OnAvatarAppear -= OnAvatarAppear;
 231        }
 0232    }
 233}