< Summary

Class:AvatarEditorHUDAnimationController
Assembly:AvatarEditorHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/AvatarEditorHUD/Scripts/AvatarEditorHUDAnimationController.cs
Covered lines:0
Uncovered lines:47
Coverable lines:47
Total lines:100
Line coverage:0% (0 of 47)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:7
Method coverage:0% (0 of 7)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AvatarEditorHUDAnimationController(...)0%2100%
AvatarAppearFeedback(...)0%6200%
OnClickRandomize()0%2100%
PlayAnimation(...)0%2100%
OnSelectWearable(...)0%7022600%
GetRandomizedName(...)0%2100%
Dispose()0%2100%

File(s)

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

#LineLine coverage
 1using DCL;
 2using DCLServices.WearablesCatalogService;
 3using System;
 4using UnityEngine;
 5
 6public class AvatarEditorHUDAnimationController : IDisposable
 7{
 8    private readonly IAvatarEditorHUDView hudView;
 9    private readonly IWearablesCatalogService wearablesCatalogService;
 10    internal string activeCategory;
 11    private int currentAnimationIndexShown;
 12
 013    public AvatarEditorHUDAnimationController(
 14        IAvatarEditorHUDView avatarEditorHUDView,
 15        IWearablesCatalogService wearablesCatalogService)
 16    {
 017        this.hudView = avatarEditorHUDView;
 018        this.wearablesCatalogService = wearablesCatalogService;
 19
 020        hudView.OnRandomize += OnClickRandomize;
 021        hudView.WearableSelectorClicked += OnSelectWearable;
 022        hudView.OnAvatarAppearFeedback += AvatarAppearFeedback;
 023    }
 24
 25    public void AvatarAppearFeedback(AvatarModel avatarModelToUpdate)
 26    {
 027        if (!string.IsNullOrEmpty(activeCategory))
 28        {
 029            PlayAnimation(avatarModelToUpdate);
 30        }
 031    }
 32
 33    private void OnClickRandomize()
 34    {
 035        activeCategory = "";
 036    }
 37
 38    private void PlayAnimation(AvatarModel avatarModelToUpdate)
 39    {
 040        avatarModelToUpdate.expressionTriggerTimestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
 041        hudView.CharacterPreview.PlayEmote(activeCategory, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds());
 042    }
 43
 44    public void OnSelectWearable(string wearableId)
 45    {
 046        wearablesCatalogService.WearablesCatalog.TryGetValue(wearableId, out var wearable);
 047        switch (wearable.data.category)
 48        {
 49            case WearableLiterals.Categories.FEET:
 050                activeCategory = GetRandomizedName("Outfit_Shoes_v0",2);
 051                break;
 52            case WearableLiterals.Categories.LOWER_BODY:
 053                activeCategory = GetRandomizedName("Outfit_Lower_v0",3);
 054                break;
 55            case WearableLiterals.Categories.UPPER_BODY:
 056                activeCategory = GetRandomizedName("Outfit_Upper_v0",3);
 057                break;
 58            case "eyewear":
 059                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 060                break;
 61            case "tiara":
 062                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 063                break;
 64            case "earring":
 065                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 066                break;
 67            case "hat":
 068                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 069                break;
 70            case "top_head":
 071                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 072                break;
 73            case "helmet":
 074                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 075                break;
 76            case "mask":
 077                activeCategory = GetRandomizedName("Outfit_Accessories_v0",3);
 078                break;
 79            case "skin":
 080                activeCategory = GetRandomizedName("Outfit_Upper_v0",3);
 081                break;
 82            default:
 083                activeCategory = "";
 84                break;
 85        }
 086    }
 87
 88    private string GetRandomizedName(string baseString, int limit)
 89    {
 090        currentAnimationIndexShown = (currentAnimationIndexShown + 1) % limit;
 091        return baseString + (currentAnimationIndexShown + 1);
 92    }
 93
 94    public void Dispose()
 95    {
 096        hudView.OnAvatarAppearFeedback -= AvatarAppearFeedback;
 097        hudView.OnRandomize -= OnClickRandomize;
 098        hudView.WearableSelectorClicked -= OnSelectWearable;
 099    }
 100}