< Summary

Class:MinimapHUDController
Assembly:MinimapHUD
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Minimap/MinimapHUDController.cs
Covered lines:37
Uncovered lines:17
Coverable lines:54
Total lines:121
Line coverage:68.5% (37 of 54)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
MinimapHUDController(...)0%110100%
MinimapHUDController()0%110100%
Dispose()0%220100%
OnPlayerCoordsChange(...)0%4.054085.71%
UpdateData(...)0%220100%
UpdateSceneName(...)0%220100%
UpdatePlayerPosition(...)0%110100%
UpdatePlayerPosition(...)0%220100%
AddZoomDelta(...)0%2100%
ToggleOptions()0%2100%
AddBookmark()0%6200%
ReportScene()0%6200%
ChangeVisibilityForBuilderInWorld(...)0%2100%
SetVisibility(...)0%110100%
AddUsersAroundIndicator(...)0%110100%
OnOnSceneInfoUpdated(...)0%6200%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/Minimap/MinimapHUDController.cs

#LineLine coverage
 1using DCL.Interface;
 2using UnityEngine;
 3
 4public class MinimapHUDController : IHUD
 5{
 6    private static bool VERBOSE = false;
 7
 8    public MinimapHUDView view;
 9
 910    private FloatVariable minimapZoom => CommonScriptableObjects.minimapZoom;
 011    private StringVariable currentSceneId => CommonScriptableObjects.sceneID;
 12
 913    public MinimapHUDModel model { get; private set; } = new MinimapHUDModel();
 014    public RectTransform minimapTooltipReference { get => view.minimapTooltipReference; }
 015    public RectTransform usersAroundTooltipReference { get => view.usersAroundTooltipReference; }
 16
 1817    public MinimapHUDController() : this(new MinimapHUDModel()) { }
 18
 919    public MinimapHUDController(MinimapHUDModel model)
 20    {
 921        CommonScriptableObjects.playerCoords.OnChange += OnPlayerCoordsChange;
 922        CommonScriptableObjects.builderInWorldNotNecessaryUIVisibilityStatus.OnChange += ChangeVisibilityForBuilderInWor
 923        minimapZoom.Set(1f);
 24
 925        view = MinimapHUDView.Create(this);
 926        UpdateData(model);
 927    }
 28
 29    public void Dispose()
 30    {
 931        if (view != null)
 932            UnityEngine.Object.Destroy(view.gameObject);
 33
 934        CommonScriptableObjects.playerCoords.OnChange -= OnPlayerCoordsChange;
 935        CommonScriptableObjects.builderInWorldNotNecessaryUIVisibilityStatus.OnChange -= ChangeVisibilityForBuilderInWor
 936        MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnOnSceneInfoUpdated;
 937    }
 38
 39    private void OnPlayerCoordsChange(Vector2Int current, Vector2Int previous)
 40    {
 141        UpdatePlayerPosition(current);
 42
 143        MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnOnSceneInfoUpdated;
 144        MinimapMetadata.MinimapSceneInfo sceneInfo = MinimapMetadata.GetMetadata().GetSceneInfo(current.x, current.y);
 145        UpdateSceneName(sceneInfo?.name);
 46
 47        // NOTE: in some cases playerCoords OnChange is triggered before kernel's message with the scene info arrives.
 48        // so in that scenario we subscribe to MinimapMetadata event to wait for the scene info.
 149        if (sceneInfo == null)
 50        {
 051            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += OnOnSceneInfoUpdated;
 52        }
 153    }
 54
 55    public void UpdateData(MinimapHUDModel model)
 56    {
 957        this.model = model;
 958        view?.UpdateData(this.model);
 959    }
 60
 61    public void UpdateSceneName(string sceneName)
 62    {
 263        model.sceneName = sceneName;
 264        view?.UpdateData(model);
 265    }
 66
 67    public void UpdatePlayerPosition(Vector2 position)
 68    {
 69        const string format = "{0},{1}";
 270        UpdatePlayerPosition(string.Format(format, position.x, position.y));
 271    }
 72
 73    public void UpdatePlayerPosition(string position)
 74    {
 375        model.playerPosition = position;
 376        view?.UpdateData(model);
 377    }
 78
 079    public void AddZoomDelta(float delta) { minimapZoom.Set(Mathf.Clamp01(minimapZoom.Get() + delta)); }
 80
 081    public void ToggleOptions() { view.ToggleOptions(); }
 82
 83    public void AddBookmark()
 84    {
 85        //TODO:
 086        if (VERBOSE)
 87        {
 088            Debug.Log("Add bookmark pressed");
 89        }
 090    }
 91
 92    public void ReportScene()
 93    {
 094        if (!string.IsNullOrEmpty(currentSceneId))
 095            WebInterface.SendReportScene(currentSceneId);
 096    }
 97
 098    public void ChangeVisibilityForBuilderInWorld(bool current, bool previus) { view.gameObject.SetActive(current); }
 99
 2100    public void SetVisibility(bool visible) { view.SetVisibility(visible); }
 101
 102    /// <summary>
 103    /// Enable user's around button/indicator that shows the amount of users around player
 104    /// and toggle the list of players' visibility when pressed
 105    /// </summary>
 106    /// <param name="controller">Controller for the players' list HUD</param>
 107    public void AddUsersAroundIndicator(UsersAroundListHUDController controller)
 108    {
 1109        view.usersAroundListHudButton.gameObject.SetActive(true);
 1110        controller.SetButtonView(view.usersAroundListHudButton);
 1111    }
 112
 113    private void OnOnSceneInfoUpdated(MinimapMetadata.MinimapSceneInfo sceneInfo)
 114    {
 0115        if (sceneInfo.parcels.Contains(CommonScriptableObjects.playerCoords.Get()))
 116        {
 0117            MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnOnSceneInfoUpdated;
 0118            UpdateSceneName(sceneInfo.name);
 119        }
 0120    }
 121}