< 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:45
Uncovered lines:29
Coverable lines:74
Total lines:156
Line coverage:60.8% (45 of 74)
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%8.516058.82%
OnCloseAction(...)0%110100%
UpdateCurrentSceneData(...)0%440100%
TriggerToast(...)0%6200%

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
 026        public BaseVariable<bool> navmapVisible => DataStore.i.HUDs.navmapVisible;
 27        public static event System.Action<bool> OnToggle;
 28
 29        void Start()
 30        {
 10431            mapMetadata = MinimapMetadata.GetMetadata();
 32
 10433            closeButton.onClick.AddListener(() =>
 34            {
 035                navmapVisible.Set(false);
 036                Utils.UnlockCursor();
 037            });
 10438            scrollRect.onValueChanged.AddListener((x) =>
 39            {
 040                if (!navmapVisible.Get())
 041                    return;
 42
 043                MapRenderer.i.atlas.UpdateCulling();
 044                toastView.OnCloseClick();
 045            });
 46
 10447            toastView.OnGotoClicked += () => navmapVisible.Set(false);
 48
 10449            MapRenderer.OnParcelClicked += TriggerToast;
 10450            MapRenderer.OnParcelHold += TriggerToast;
 10451            MapRenderer.OnParcelHoldCancel += () => { toastView.OnCloseClick(); };
 10452            CommonScriptableObjects.playerCoords.OnChange += UpdateCurrentSceneData;
 10453            closeAction.OnTriggered += OnCloseAction;
 10454            navmapVisible.OnChange += OnNavmapVisibleChanged;
 55
 10456            Initialize();
 10457        }
 058        private void OnNavmapVisibleChanged(bool current, bool previous) { SetVisible(current); }
 59
 60        public void Initialize()
 61        {
 10662            toastView.gameObject.SetActive(false);
 10663            scrollRect.gameObject.SetActive(false);
 10664        }
 65
 66        private void OnDestroy()
 67        {
 10368            MapRenderer.OnParcelClicked -= TriggerToast;
 10369            MapRenderer.OnParcelHold -= TriggerToast;
 10370            CommonScriptableObjects.playerCoords.OnChange -= UpdateCurrentSceneData;
 10371            navmapVisible.OnChange -= OnNavmapVisibleChanged;
 10372            closeAction.OnTriggered += OnCloseAction;
 10373        }
 74
 75        internal void SetVisible(bool visible)
 76        {
 277            if (MapRenderer.i == null)
 078                return;
 79
 280            scrollRect.StopMovement();
 81
 282            scrollRect.gameObject.SetActive(visible);
 283            MapRenderer.i.parcelHighlightEnabled = visible;
 84
 285            if (visible)
 86            {
 287                Utils.UnlockCursor();
 88
 289                minimapViewport = MapRenderer.i.atlas.viewport;
 290                mapRendererMinimapParent = MapRenderer.i.transform.parent;
 291                atlasOriginalPosition = MapRenderer.i.atlas.chunksParent.transform.localPosition;
 92
 293                MapRenderer.i.atlas.viewport = scrollRect.viewport;
 294                MapRenderer.i.transform.SetParent(scrollRectContentTransform);
 295                MapRenderer.i.atlas.UpdateCulling();
 96
 297                scrollRect.content = MapRenderer.i.atlas.chunksParent.transform as RectTransform;
 98
 99                // Reparent the player icon parent to scroll everything together
 2100                MapRenderer.i.atlas.overlayLayerGameobject.transform.SetParent(scrollRect.content);
 101
 102                // Center map
 2103                MapRenderer.i.atlas.CenterToTile(Utils.WorldToGridPositionUnclamped(CommonScriptableObjects.playerWorldP
 104
 105                // Set shorter interval of time for populated scenes markers fetch
 2106                MapRenderer.i.usersPositionMarkerController?.SetUpdateMode(MapGlobalUsersPositionMarkerController.Update
 107
 2108                AudioScriptableObjects.dialogOpen.Play(true);
 109
 2110                CommonScriptableObjects.isFullscreenHUDOpen.Set(true);
 2111            }
 112            else
 113            {
 0114                Utils.LockCursor();
 115
 0116                toastView.OnCloseClick();
 117
 0118                MapRenderer.i.atlas.viewport = minimapViewport;
 0119                MapRenderer.i.transform.SetParent(mapRendererMinimapParent);
 0120                MapRenderer.i.atlas.chunksParent.transform.localPosition = atlasOriginalPosition;
 0121                MapRenderer.i.atlas.UpdateCulling();
 122
 123                // Restore the player icon to its original parent
 0124                MapRenderer.i.atlas.overlayLayerGameobject.transform.SetParent(MapRenderer.i.atlas.chunksParent.transfor
 0125                (MapRenderer.i.atlas.overlayLayerGameobject.transform as RectTransform).anchoredPosition = Vector2.zero;
 126
 0127                MapRenderer.i.UpdateRendering(Utils.WorldToGridPositionUnclamped(CommonScriptableObjects.playerWorldPosi
 128
 129                // Set longer interval of time for populated scenes markers fetch
 0130                MapRenderer.i.usersPositionMarkerController?.SetUpdateMode(MapGlobalUsersPositionMarkerController.Update
 131
 0132                AudioScriptableObjects.dialogClose.Play(true);
 0133                CommonScriptableObjects.isFullscreenHUDOpen.Set(false);
 134            }
 135
 2136            OnToggle?.Invoke(visible);
 0137        }
 138
 198139        private void OnCloseAction(DCLAction_Trigger action) { navmapVisible.Set(false); }
 140        void UpdateCurrentSceneData(Vector2Int current, Vector2Int previous)
 141        {
 142            const string format = "{0},{1}";
 18143            currentSceneCoordsText.text = string.Format(format, current.x, current.y);
 18144            currentSceneNameText.text = MinimapMetadata.GetMetadata().GetSceneInfo(current.x, current.y)?.name ?? "Unnam
 18145        }
 146
 147        void TriggerToast(int cursorTileX, int cursorTileY)
 148        {
 0149            var sceneInfo = mapMetadata.GetSceneInfo(cursorTileX, cursorTileY);
 0150            if (sceneInfo == null)
 0151                WebInterface.RequestScenesInfoAroundParcel(new Vector2(cursorTileX, cursorTileY), 15);
 152
 0153            toastView.Populate(new Vector2Int(cursorTileX, cursorTileY), sceneInfo);
 0154        }
 155    }
 156}