< Summary

Class:DCL.NavmapView
Assembly:Navmap
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/NavMap/NavmapView.cs
Covered lines:34
Uncovered lines:72
Coverable lines:106
Total lines:211
Line coverage:32% (34 of 106)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
Start()0%110100%
OnNavmapVisibleChanged(...)0%2100%
Initialize()0%110100%
OnDestroy()0%110100%
SetVisible(...)0%20400%
IsFullscreenHUDOpen_OnChange(...)0%6200%
SetVisibility_Internal(...)0%56700%
OnCloseAction(...)0%110100%
UpdateCurrentSceneData(...)0%440100%
TriggerToast(...)0%6200%
SetExitButtonActive(...)0%2100%
SetAsFullScreenMenuMode(...)0%4.422015.38%
ConfigureMapInFullscreenMenuChanged(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/NavMap/NavmapView.cs

#LineLine coverage
 1using UnityEngine;
 2using UnityEngine.UI;
 3using DCL.Interface;
 4using DCL.Helpers;
 5using TMPro;
 6
 7namespace DCL
 8{
 9    public class NavmapView : MonoBehaviour
 10    {
 11        [Header("References")]
 12        [SerializeField] Button closeButton;
 13        [SerializeField] InputAction_Trigger closeAction;
 14        [SerializeField] internal ScrollRect scrollRect;
 15        [SerializeField] Transform scrollRectContentTransform;
 16        [SerializeField] internal TextMeshProUGUI currentSceneNameText;
 17        [SerializeField] internal TextMeshProUGUI currentSceneCoordsText;
 18        [SerializeField] internal NavmapToastView toastView;
 19
 20        InputAction_Trigger.Triggered selectParcelDelegate;
 21        RectTransform minimapViewport;
 22        Transform mapRendererMinimapParent;
 23        Vector3 atlasOriginalPosition;
 24        MinimapMetadata mapMetadata;
 25        bool waitingForFullscreenHUDOpen = false;
 26
 15627        BaseVariable<Transform> configureMapInFullscreenMenu => DataStore.i.exploreV2.configureMapInFullscreenMenu;
 28
 20629        public BaseVariable<bool> navmapVisible => DataStore.i.HUDs.navmapVisible;
 30        public static event System.Action<bool> OnToggle;
 31
 32        void Start()
 33        {
 5234            mapMetadata = MinimapMetadata.GetMetadata();
 35
 5236            closeButton.onClick.AddListener(() =>
 37            {
 038                navmapVisible.Set(false);
 039            });
 5240            scrollRect.onValueChanged.AddListener((x) =>
 41            {
 042                if (!navmapVisible.Get())
 043                    return;
 44
 045                MapRenderer.i.atlas.UpdateCulling();
 046                toastView.OnCloseClick();
 047            });
 48
 5249            toastView.OnGotoClicked += () => navmapVisible.Set(false);
 50
 5251            MapRenderer.OnParcelClicked += TriggerToast;
 5252            MapRenderer.OnParcelHold += TriggerToast;
 5253            MapRenderer.OnParcelHoldCancel += () => { toastView.OnCloseClick(); };
 5254            CommonScriptableObjects.playerCoords.OnChange += UpdateCurrentSceneData;
 5255            closeAction.OnTriggered += OnCloseAction;
 5256            navmapVisible.OnChange += OnNavmapVisibleChanged;
 57
 5258            configureMapInFullscreenMenu.OnChange += ConfigureMapInFullscreenMenuChanged;
 5259            ConfigureMapInFullscreenMenuChanged(configureMapInFullscreenMenu.Get(), null);
 60
 5261            Initialize();
 5262        }
 63
 064        private void OnNavmapVisibleChanged(bool current, bool previous) { SetVisible(current); }
 65
 66        public void Initialize()
 67        {
 5268            toastView.gameObject.SetActive(false);
 5269            scrollRect.gameObject.SetActive(false);
 5270            DataStore.i.HUDs.isNavMapInitialized.Set(true);
 5271        }
 72
 73        private void OnDestroy()
 74        {
 5275            MapRenderer.OnParcelClicked -= TriggerToast;
 5276            MapRenderer.OnParcelHold -= TriggerToast;
 5277            CommonScriptableObjects.playerCoords.OnChange -= UpdateCurrentSceneData;
 5278            navmapVisible.OnChange -= OnNavmapVisibleChanged;
 5279            closeAction.OnTriggered += OnCloseAction;
 5280            configureMapInFullscreenMenu.OnChange -= ConfigureMapInFullscreenMenuChanged;
 5281        }
 82
 83        internal void SetVisible(bool visible)
 84        {
 085            if (waitingForFullscreenHUDOpen)
 086                return;
 87
 088            if (visible)
 89            {
 090                if (CommonScriptableObjects.isFullscreenHUDOpen.Get())
 91                {
 092                    SetVisibility_Internal(true);
 093                }
 94                else
 95                {
 096                    waitingForFullscreenHUDOpen = true;
 097                    CommonScriptableObjects.isFullscreenHUDOpen.OnChange += IsFullscreenHUDOpen_OnChange;
 98                }
 099            }
 100            else
 101            {
 0102                SetVisibility_Internal(false);
 103            }
 0104        }
 105
 106        private void IsFullscreenHUDOpen_OnChange(bool current, bool previous)
 107        {
 0108            if (!current)
 0109                return;
 110
 0111            CommonScriptableObjects.isFullscreenHUDOpen.OnChange -= IsFullscreenHUDOpen_OnChange;
 0112            SetVisibility_Internal(true);
 0113            waitingForFullscreenHUDOpen = false;
 0114        }
 115
 116        internal void SetVisibility_Internal(bool visible)
 117        {
 0118            if (MapRenderer.i == null)
 0119                return;
 120
 0121            scrollRect.StopMovement();
 122
 0123            scrollRect.gameObject.SetActive(visible);
 0124            MapRenderer.i.parcelHighlightEnabled = visible;
 125
 0126            if (visible)
 127            {
 0128                if (!DataStore.i.exploreV2.isInitialized.Get())
 0129                    Utils.UnlockCursor();
 130
 0131                minimapViewport = MapRenderer.i.atlas.viewport;
 0132                mapRendererMinimapParent = MapRenderer.i.transform.parent;
 0133                atlasOriginalPosition = MapRenderer.i.atlas.chunksParent.transform.localPosition;
 134
 0135                MapRenderer.i.atlas.viewport = scrollRect.viewport;
 0136                MapRenderer.i.transform.SetParent(scrollRectContentTransform);
 0137                MapRenderer.i.atlas.UpdateCulling();
 138
 0139                scrollRect.content = MapRenderer.i.atlas.chunksParent.transform as RectTransform;
 140
 141                // Reparent the player icon parent to scroll everything together
 0142                MapRenderer.i.atlas.overlayLayerGameobject.transform.SetParent(scrollRect.content);
 143
 144                // Center map
 0145                MapRenderer.i.atlas.CenterToTile(Utils.WorldToGridPositionUnclamped(CommonScriptableObjects.playerWorldP
 146
 147                // Set shorter interval of time for populated scenes markers fetch
 0148                MapRenderer.i.usersPositionMarkerController?.SetUpdateMode(MapGlobalUsersPositionMarkerController.Update
 0149            }
 150            else
 151            {
 0152                toastView.OnCloseClick();
 153
 0154                MapRenderer.i.atlas.viewport = minimapViewport;
 0155                MapRenderer.i.transform.SetParent(mapRendererMinimapParent);
 0156                MapRenderer.i.atlas.chunksParent.transform.localPosition = atlasOriginalPosition;
 0157                MapRenderer.i.atlas.UpdateCulling();
 158
 159                // Restore the player icon to its original parent
 0160                MapRenderer.i.atlas.overlayLayerGameobject.transform.SetParent(MapRenderer.i.atlas.chunksParent.transfor
 0161                (MapRenderer.i.atlas.overlayLayerGameobject.transform as RectTransform).anchoredPosition = Vector2.zero;
 162
 0163                MapRenderer.i.UpdateRendering(Utils.WorldToGridPositionUnclamped(CommonScriptableObjects.playerWorldPosi
 164
 165                // Set longer interval of time for populated scenes markers fetch
 0166                MapRenderer.i.usersPositionMarkerController?.SetUpdateMode(MapGlobalUsersPositionMarkerController.Update
 167            }
 168
 0169            OnToggle?.Invoke(visible);
 0170        }
 171
 204172        private void OnCloseAction(DCLAction_Trigger action) { navmapVisible.Set(false); }
 173        void UpdateCurrentSceneData(Vector2Int current, Vector2Int previous)
 174        {
 175            const string format = "{0},{1}";
 1176            currentSceneCoordsText.text = string.Format(format, current.x, current.y);
 1177            currentSceneNameText.text = MinimapMetadata.GetMetadata().GetSceneInfo(current.x, current.y)?.name ?? "Unnam
 1178        }
 179
 180        void TriggerToast(int cursorTileX, int cursorTileY)
 181        {
 0182            var sceneInfo = mapMetadata.GetSceneInfo(cursorTileX, cursorTileY);
 0183            if (sceneInfo == null)
 0184                WebInterface.RequestScenesInfoAroundParcel(new Vector2(cursorTileX, cursorTileY), 15);
 185
 0186            toastView.Populate(new Vector2Int(cursorTileX, cursorTileY), sceneInfo);
 0187        }
 188
 0189        public void SetExitButtonActive(bool isActive) { closeButton.gameObject.SetActive(isActive); }
 190
 191        public void SetAsFullScreenMenuMode(Transform parentTransform)
 192        {
 52193            if (parentTransform == null)
 52194                return;
 195
 0196            transform.SetParent(parentTransform);
 0197            transform.localScale = Vector3.one;
 0198            SetExitButtonActive(false);
 199
 0200            RectTransform rectTransform = transform as RectTransform;
 0201            rectTransform.anchorMin = Vector2.zero;
 0202            rectTransform.anchorMax = Vector2.one;
 0203            rectTransform.pivot = new Vector2(0.5f, 0.5f);
 0204            rectTransform.localPosition = Vector2.zero;
 0205            rectTransform.offsetMax = Vector2.zero;
 0206            rectTransform.offsetMin = Vector2.zero;
 0207        }
 208
 104209        private void ConfigureMapInFullscreenMenuChanged(Transform currentParentTransform, Transform previousParentTrans
 210    }
 211}