< Summary

Class:DCL.NavmapVisibilityBehaviour
Assembly:Navmap
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/HUD/NavMap/NavmapVisibilityBehaviour.cs
Covered lines:19
Uncovered lines:43
Coverable lines:62
Total lines:146
Line coverage:30.6% (19 of 62)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
NavmapVisibilityBehaviour(...)0%110100%
Dispose()0%220100%
OnNavmapVisibilityChanged(...)0%2100%
OnExploreOpenChanged(...)0%6200%
SetVisible(...)0%5.44055.56%
OnFullScreenOpened(...)0%6200%
SetVisibility_Internal(...)0%90900%

File(s)

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

#LineLine coverage
 1using System;
 2using DCL.Helpers;
 3using UnityEngine;
 4using UnityEngine.UI;
 5using static DCL.MapGlobalUsersPositionMarkerController;
 6
 7namespace DCL
 8{
 9    public class NavmapVisibilityBehaviour : IDisposable
 10    {
 11        private Vector3 atlasOriginalPosition;
 12
 13        private Transform mapRendererMinimapParent;
 14        private RectTransform minimapViewport;
 15
 16        private bool waitingForFullscreenHUDOpen;
 17
 18        private readonly BaseVariable<bool> navmapVisible;
 19
 20        private readonly ScrollRect scrollRect;
 21        private readonly Transform scrollRectContentTransform;
 22
 23        private readonly NavmapZoom zoom;
 24        private readonly NavmapToastView toastView;
 25
 226        public NavmapVisibilityBehaviour(BaseVariable<bool> navmapVisible, ScrollRect scrollRect, Transform scrollRectCo
 27        {
 228            this.navmapVisible = navmapVisible;
 29
 230            this.scrollRect = scrollRect;
 231            this.scrollRectContentTransform = scrollRectContentTransform;
 32
 233            this.zoom = zoom;
 234            this.toastView = toastView;
 35
 236            DataStore.i.exploreV2.isOpen.OnChange += OnExploreOpenChanged;
 237            navmapVisible.OnChange += OnNavmapVisibilityChanged;
 238        }
 39
 40        public void Dispose()
 41        {
 242            DataStore.i.exploreV2.isOpen.OnChange -= OnExploreOpenChanged;
 243            navmapVisible.OnChange -= OnNavmapVisibilityChanged;
 44
 245            if (waitingForFullscreenHUDOpen == false)
 146                CommonScriptableObjects.isFullscreenHUDOpen.OnChange -= OnFullScreenOpened;
 247        }
 48
 49        private void OnNavmapVisibilityChanged(bool isVisible, bool _) =>
 050            SetVisible(isVisible);
 51
 52        private void OnExploreOpenChanged(bool isOpen, bool _)
 53        {
 054            if (!isOpen)
 055                SetVisible(false);
 056        }
 57
 58        internal void SetVisible(bool visible)
 59        {
 160            if (waitingForFullscreenHUDOpen)
 061                return;
 62
 163            if (visible)
 64            {
 165                if (CommonScriptableObjects.isFullscreenHUDOpen.Get())
 66                {
 067                    SetVisibility_Internal(true);
 68                }
 69                else
 70                {
 171                    waitingForFullscreenHUDOpen = true;
 172                    CommonScriptableObjects.isFullscreenHUDOpen.OnChange += OnFullScreenOpened;
 73                }
 74            }
 75            else
 76            {
 077                SetVisibility_Internal(false);
 78            }
 079        }
 80
 81        private void OnFullScreenOpened(bool isFullScreen, bool _)
 82        {
 083            CommonScriptableObjects.isFullscreenHUDOpen.OnChange -= OnFullScreenOpened;
 84
 085            if (!isFullScreen)
 086                return;
 87
 088            SetVisibility_Internal(true);
 089            waitingForFullscreenHUDOpen = false;
 090        }
 91
 92        private void SetVisibility_Internal(bool visible)
 93        {
 094            if (MapRenderer.i == null)
 095                return;
 96
 097            scrollRect.StopMovement();
 98
 099            scrollRect.gameObject.SetActive(visible);
 0100            MapRenderer.i.parcelHighlightEnabled = visible;
 101
 0102            if (visible)
 103            {
 0104                if (!DataStore.i.exploreV2.isInitialized.Get())
 0105                    Utils.UnlockCursor();
 106
 0107                MapRenderer.i.scaleFactor = zoom.Scale;
 108
 0109                if (minimapViewport == null || mapRendererMinimapParent == null)
 110                {
 0111                    minimapViewport = MapRenderer.i.atlas.viewport;
 0112                    mapRendererMinimapParent = MapRenderer.i.transform.parent;
 113                }
 114
 0115                atlasOriginalPosition = MapRenderer.i.atlas.chunksParent.transform.localPosition;
 116
 0117                MapRenderer.i.atlas.viewport = scrollRect.viewport;
 0118                MapRenderer.i.transform.SetParent(scrollRectContentTransform);
 0119                MapRenderer.i.atlas.UpdateCulling();
 120
 0121                scrollRect.content = MapRenderer.i.atlas.chunksParent.transform as RectTransform;
 122
 123                // Center map
 0124                MapRenderer.i.atlas.CenterToTile(Utils.WorldToGridPositionUnclamped(DataStore.i.player.playerWorldPositi
 125
 126                // Set shorter interval of time for populated scenes markers fetch
 0127                MapRenderer.i.usersPositionMarkerController?.SetUpdateMode(UpdateMode.FOREGROUND);
 128            }
 0129            else if (minimapViewport != null)
 130            {
 0131                zoom.ResetToDefault();
 0132                toastView.Close();
 133
 0134                MapRenderer.i.atlas.viewport = minimapViewport;
 0135                MapRenderer.i.transform.SetParent(mapRendererMinimapParent);
 0136                MapRenderer.i.atlas.chunksParent.transform.localPosition = atlasOriginalPosition;
 0137                MapRenderer.i.atlas.UpdateCulling();
 138
 0139                MapRenderer.i.UpdateRendering(Utils.WorldToGridPositionUnclamped(DataStore.i.player.playerWorldPosition.
 140
 141                // Set longer interval of time for populated scenes markers fetch
 0142                MapRenderer.i.usersPositionMarkerController?.SetUpdateMode(UpdateMode.BACKGROUND);
 143            }
 0144        }
 145    }
 146}