< 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:21
Coverable lines:58
Total lines:129
Line coverage:63.7% (37 of 58)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
MinimapHUDController(...)0%110100%
MinimapHUDController()0%110100%
CreateView()0%110100%
Initialize()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%
ToggleSceneUI(...)0%2100%
AddBookmark()0%6200%
ReportScene()0%6200%
ChangeVisibilityForBuilderInWorld(...)0%2100%
SetVisibility(...)0%110100%
AddUsersAroundIndicator(...)0%2100%
OnOnSceneInfoUpdated(...)0%6200%

File(s)

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

#LineLine coverage
 1using DCL;
 2using DCL.Interface;
 3using UnityEngine;
 4
 5public class MinimapHUDController : IHUD
 6{
 7    private static bool VERBOSE = false;
 8
 9    public MinimapHUDView view;
 1010    private FloatVariable minimapZoom => CommonScriptableObjects.minimapZoom;
 011    private StringVariable currentSceneId => CommonScriptableObjects.sceneID;
 12
 1013    public MinimapHUDModel model { get; private set; } = new MinimapHUDModel();
 14
 2015    public MinimapHUDController() : this(new MinimapHUDModel()) { }
 16
 1017    public MinimapHUDController(MinimapHUDModel model)
 18    {
 1019        CommonScriptableObjects.playerCoords.OnChange += OnPlayerCoordsChange;
 1020        CommonScriptableObjects.builderInWorldNotNecessaryUIVisibilityStatus.OnChange += ChangeVisibilityForBuilderInWor
 1021        minimapZoom.Set(1f);
 1022        UpdateData(model);
 1023    }
 24
 925    protected internal virtual MinimapHUDView CreateView() { return MinimapHUDView.Create(this); }
 26
 27    public void Initialize()
 28    {
 929        view = CreateView();
 930        UpdateData(model);
 931    }
 32
 33    public void Dispose()
 34    {
 1035        if (view != null)
 936            UnityEngine.Object.Destroy(view.gameObject);
 37
 1038        CommonScriptableObjects.playerCoords.OnChange -= OnPlayerCoordsChange;
 1039        CommonScriptableObjects.builderInWorldNotNecessaryUIVisibilityStatus.OnChange -= ChangeVisibilityForBuilderInWor
 1040        MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnOnSceneInfoUpdated;
 1041    }
 42
 43    private void OnPlayerCoordsChange(Vector2Int current, Vector2Int previous)
 44    {
 145        UpdatePlayerPosition(current);
 46
 147        MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnOnSceneInfoUpdated;
 148        MinimapMetadata.MinimapSceneInfo sceneInfo = MinimapMetadata.GetMetadata().GetSceneInfo(current.x, current.y);
 149        UpdateSceneName(sceneInfo?.name);
 50
 51        // NOTE: in some cases playerCoords OnChange is triggered before kernel's message with the scene info arrives.
 52        // so in that scenario we subscribe to MinimapMetadata event to wait for the scene info.
 153        if (sceneInfo == null)
 54        {
 055            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += OnOnSceneInfoUpdated;
 56        }
 157    }
 58
 59    public void UpdateData(MinimapHUDModel model)
 60    {
 1961        this.model = model;
 1962        view?.UpdateData(this.model);
 963    }
 64
 65    public void UpdateSceneName(string sceneName)
 66    {
 267        model.sceneName = sceneName;
 268        view?.UpdateData(model);
 169    }
 70
 71    public void UpdatePlayerPosition(Vector2 position)
 72    {
 73        const string format = "{0},{1}";
 274        UpdatePlayerPosition(string.Format(format, position.x, position.y));
 275    }
 76
 77    public void UpdatePlayerPosition(string position)
 78    {
 379        model.playerPosition = position;
 380        view?.UpdateData(model);
 281    }
 82
 083    public void AddZoomDelta(float delta) { minimapZoom.Set(Mathf.Clamp01(minimapZoom.Get() + delta)); }
 84
 085    public void ToggleOptions() { view.ToggleOptions(); }
 86
 087    public void ToggleSceneUI(bool isUIOn) { DataStore.i.HUDs.isSceneUIEnabled.Set(isUIOn); }
 88
 89    public void AddBookmark()
 90    {
 91        //TODO:
 092        if (VERBOSE)
 93        {
 094            Debug.Log("Add bookmark pressed");
 95        }
 096    }
 97
 98    public void ReportScene()
 99    {
 0100        if (!string.IsNullOrEmpty(currentSceneId))
 0101            WebInterface.SendReportScene(currentSceneId);
 0102    }
 103
 0104    public void ChangeVisibilityForBuilderInWorld(bool current, bool previus) { view.gameObject.SetActive(current); }
 105
 2106    public void SetVisibility(bool visible) { view.SetVisibility(visible); }
 107
 108    /// <summary>
 109    /// Enable user's around button/indicator that shows the amount of users around player
 110    /// and toggle the list of players' visibility when pressed
 111    /// </summary>
 112    /// <param name="controller">Controller for the players' list HUD</param>
 113    public void AddUsersAroundIndicator(UsersAroundListHUDController controller)
 114    {
 0115        view.usersAroundListHudButton.gameObject.SetActive(true);
 0116        controller.SetButtonView(view.usersAroundListHudButton);
 0117        controller.ToggleUsersCount(false);
 0118        KernelConfig.i.EnsureConfigInitialized().Then(kc => controller.ToggleUsersCount(kc.features.enablePeopleCounter)
 0119    }
 120
 121    private void OnOnSceneInfoUpdated(MinimapMetadata.MinimapSceneInfo sceneInfo)
 122    {
 0123        if (sceneInfo.parcels.Contains(CommonScriptableObjects.playerCoords.Get()))
 124        {
 0125            MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnOnSceneInfoUpdated;
 0126            UpdateSceneName(sceneInfo.name);
 127        }
 0128    }
 129}