Example #1
0
        public void BePopulatedCorrectlyWithNullOrEmptyElements()
        {
            var sceneInfo = new MinimapMetadata.MinimapSceneInfo()
            {
                name        = "foo",
                owner       = null,
                description = "",
                isPOI       = false,
                parcels     = new List <Vector2Int>()
                {
                    new Vector2Int(10, 10), new Vector2Int(10, 11), new Vector2Int(10, 12)
                }
            };

            MinimapMetadata.GetMetadata().Clear();
            MinimapMetadata.GetMetadata().AddSceneInfo(sceneInfo);

            navmapToastView.Populate(new Vector2Int(10, 11), sceneInfo);
            Assert.IsTrue(navmapToastView.gameObject.activeSelf);

            Assert.IsTrue(navmapToastView.sceneLocationText.transform.parent.gameObject.activeInHierarchy);
            Assert.AreEqual("10, 11", navmapToastView.sceneLocationText.text);

            Assert.IsTrue(navmapToastView.sceneTitleText.transform.parent.gameObject.activeInHierarchy);
            Assert.IsFalse(navmapToastView.sceneOwnerText.transform.parent.gameObject.activeInHierarchy);
            Assert.IsFalse(navmapToastView.scenePreviewContainer.gameObject.activeInHierarchy);
        }
Example #2
0
        public void Initialize()
        {
            if (isInitialized)
            {
                return;
            }

            isInitialized = true;
            EnsurePools();
            atlas.InitializeChunks();

            NAVMAP_CHUNK_LAYER = LayerMask.NameToLayer("NavmapChunk");

            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += MapRenderer_OnSceneInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoUpdated  += MapRenderer_OnUserInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoRemoved  += MapRenderer_OnUserInfoRemoved;

            ParcelHighlightButton.onClick.AddListener(ClickMousePositionParcel);

            playerWorldPosition.OnChange += OnCharacterMove;
            playerRotation.OnChange      += OnCharacterRotate;

            parcelHighlightImage.rectTransform.localScale = new Vector3(parcelHightlightScale, parcelHightlightScale, 1f);

            parcelHoldCountdown = parcelHoldTimeInSeconds;

            usersPositionMarkerController = new MapGlobalUsersPositionMarkerController(globalUserMarkerPrefab,
                                                                                       globalUserMarkerContainer,
                                                                                       MapUtils.GetTileToLocalPosition);

            usersPositionMarkerController.SetUpdateMode(MapGlobalUsersPositionMarkerController.UpdateMode.BACKGROUND);

            KernelConfig.i.OnChange += OnKernelConfigChanged;
        }
Example #3
0
        private void Awake()
        {
            i = this;

            usersInfoPool = PoolManager.i.GetPool(MINIMAP_USER_ICONS_POOL_NAME);
            if (usersInfoPool == null)
            {
                usersInfoPool = PoolManager.i.AddPool(
                    MINIMAP_USER_ICONS_POOL_NAME,
                    Instantiate(userIconPrefab.gameObject, overlayContainer.transform),
                    maxPrewarmCount: MINIMAP_USER_ICONS_MAX_PREWARM,
                    isPersistent: true);
                usersInfoPool.ForcePrewarm();
            }

            NAVMAP_CHUNK_LAYER = LayerMask.NameToLayer("NavmapChunk");

            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += MapRenderer_OnSceneInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoUpdated  += MapRenderer_OnUserInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoRemoved  += MapRenderer_OnUserInfoRemoved;

            ParcelHighlightButton.onClick.AddListener(() => { ClickMousePositionParcel(); });

            playerWorldPosition.OnChange += OnCharacterMove;
            playerRotation.OnChange      += OnCharacterRotate;

            parcelHighlightImage.rectTransform.localScale = new Vector3(parcelHightlightScale, parcelHightlightScale, 1f);

            parcelHoldCountdown = parcelHoldTimeInSeconds;
        }
Example #4
0
        public void BePopulatedCorrectly()
        {
            var sceneInfo = new MinimapMetadata.MinimapSceneInfo()
            {
                name        = "foo",
                owner       = "bar",
                description = "foobar",
                isPOI       = false,
                parcels     = new List <Vector2Int>()
                {
                    new Vector2Int(10, 10), new Vector2Int(10, 11), new Vector2Int(10, 12)
                }
            };

            MinimapMetadata.GetMetadata().Clear();
            MinimapMetadata.GetMetadata().AddSceneInfo(sceneInfo);

            navmapToastView.Populate(new Vector2Int(10, 10), sceneInfo);
            Assert.IsTrue(navmapToastView.gameObject.activeSelf);

            Assert.AreEqual(sceneInfo.name, navmapToastView.sceneTitleText.text);
            Assert.AreEqual($"Created by: {sceneInfo.owner}", navmapToastView.sceneOwnerText.text);
            Assert.AreEqual("10, 10", navmapToastView.sceneLocationText.text);

            Assert.IsTrue(navmapToastView.sceneTitleText.gameObject.activeInHierarchy);
            Assert.IsTrue(navmapToastView.sceneOwnerText.gameObject.activeInHierarchy);
        }
Example #5
0
        public void Initialize()
        {
            if (isInitialized)
            {
                return;
            }

            isInitialized = true;
            EnsurePools();
            atlas.InitializeChunks();

            NAVMAP_CHUNK_LAYER = LayerMask.NameToLayer("NavmapChunk");

            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += MapRenderer_OnSceneInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoUpdated  += MapRenderer_OnUserInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoRemoved  += MapRenderer_OnUserInfoRemoved;

            ParcelHighlightButton.onClick.AddListener(ClickMousePositionParcel);

            playerWorldPosition.OnChange += OnCharacterMove;
            playerRotation.OnChange      += OnCharacterRotate;

            parcelHighlightImage.rectTransform.localScale = new Vector3(parcelHightlightScale, parcelHightlightScale, 1f);

            parcelHoldCountdown = parcelHoldTimeInSeconds;
        }
Example #6
0
        void UpdateCurrentSceneData(Vector2Int current, Vector2Int previous)
        {
            const string format = "{0},{1}";

            currentSceneCoordsText.text = string.Format(format, current.x, current.y);
            currentSceneNameText.text   = MinimapMetadata.GetMetadata().GetSceneInfo(current.x, current.y)?.name ?? "Unnamed";
        }
Example #7
0
    /// <summary>
    /// Dispose HUD controller
    /// </summary>
    public void Dispose()
    {
        ReportMuteStatuses();

        if (updateMuteStatusRoutine != null)
        {
            CoroutineStarter.Stop(updateMuteStatusRoutine);
        }

        MinimapMetadata.GetMetadata().OnUserInfoUpdated -= MapRenderer_OnUserInfoUpdated;
        MinimapMetadata.GetMetadata().OnUserInfoRemoved -= MapRenderer_OnUserInfoRemoved;

        CommonScriptableObjects.rendererState.OnChange -= OnRendererStateChanged;
        profile.OnUpdate -= OnUserProfileUpdate;

        if (usersListView != null)
        {
            usersListView.OnRequestMuteUser   -= OnMuteUser;
            usersListView.OnRequestMuteGlobal -= OnMuteAll;
            usersListView.OnGoToCrowdPressed  -= OnGoToCrowd;
            usersListView.OnOpen -= OnListOpen;

            usersListView.Dispose();
        }

        if (usersButtonView != null)
        {
            usersButtonView.OnClick -= ToggleVisibility;
        }
    }
Example #8
0
        void Start()
        {
            mapMetadata = MinimapMetadata.GetMetadata();

            closeButton.onClick.AddListener(() => { ToggleNavMap(); Utils.UnlockCursor(); });
            scrollRect.onValueChanged.AddListener((x) =>
            {
                if (!isOpen) return;

                MapRenderer.i.atlas.UpdateCulling();
                toastView.OnCloseClick();
            });

            toggleNavMapDelegate = (x) => { if (!Input.GetKeyDown(KeyCode.Escape) || isOpen) ToggleNavMap(); };
            toggleNavMapAction.OnTriggered += toggleNavMapDelegate;
            toastView.OnGotoClicked += () => ToggleNavMap(true);

            MapRenderer.OnParcelClicked += TriggerToast;
            MapRenderer.OnParcelHold += TriggerToast;
            MapRenderer.OnParcelHoldCancel += () => { toastView.OnCloseClick(); };

            MinimapHUDView.OnUpdateData += UpdateCurrentSceneData;
            MinimapHUDView.OnOpenNavmapClicked += () => ToggleNavMap();

            toastView.gameObject.SetActive(false);
            scrollRect.gameObject.SetActive(false);
        }
    public void ShowWelcomeNotification()
    {
        if (disableWelcomeNotification)
        {
            return;
        }

        //TODO(Brian): This should be triggered entirely by kernel
        string     notificationText = $"Welcome, {UserProfile.GetOwnUserProfile().userName}!";
        Vector2Int currentCoords    = CommonScriptableObjects.playerCoords.Get();
        string     parcelName       = MinimapMetadata.GetMetadata().GetSceneInfo(currentCoords.x, currentCoords.y)?.name;

        if (!string.IsNullOrEmpty(parcelName))
        {
            notificationText += $" You are in {parcelName} {currentCoords.x}, {currentCoords.y}";
        }

        Notification.Model model = new Notification.Model()
        {
            message = notificationText,
            scene   = "",
            type    = NotificationFactory.Type.GENERIC_WITHOUT_BUTTON,
            timer   = NOTIFICATION_DURATION
        };

        controller.ShowNotification(model);
    }
Example #10
0
    public void SetMinimapData(Vector2Int baseCoord, IMapDataView targetView, Action <IMapDataView> onResolvedCallback, Action <IMapDataView> onRejectedCallback)
    {
        if (targetView.HasMinimapSceneInfo())
        {
            onResolvedCallback?.Invoke(targetView);
            return;
        }

        targetView.SetBaseCoord(baseCoord);

        var info = MinimapMetadata.GetMetadata().GetSceneInfo(baseCoord.x, baseCoord.y);

        if (info != null)
        {
            targetView.SetMinimapSceneInfo(info);
            onResolvedCallback?.Invoke(targetView);
        }
        else
        {
            PendingData pending = null;
            if (!pendingSceneData.TryGetValue(baseCoord, out pending))
            {
                pending = new PendingData();
                pendingSceneData.Add(baseCoord, pending);
            }

            pending.AddPending(targetView, onResolvedCallback, onRejectedCallback);
        }
    }
Example #11
0
        public void Cleanup()
        {
            if (atlas != null)
            {
                atlas.Cleanup();
            }

            foreach (var kvp in scenesOfInterestMarkers)
            {
                if (kvp.Value != null)
                {
                    Destroy(kvp.Value);
                }
            }

            scenesOfInterestMarkers.Clear();

            playerWorldPosition.OnChange -= OnCharacterMove;
            playerRotation.OnChange      -= OnCharacterRotate;
            MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= MapRenderer_OnSceneInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoUpdated  -= MapRenderer_OnUserInfoUpdated;
            MinimapMetadata.GetMetadata().OnUserInfoRemoved  -= MapRenderer_OnUserInfoRemoved;

            ParcelHighlightButton.onClick.RemoveListener(ClickMousePositionParcel);

            usersPositionMarkerController?.Dispose();

            KernelConfig.i.OnChange -= OnKernelConfigChanged;

            isInitialized = false;
        }
Example #12
0
 public void OnDestroy()
 {
     playerWorldPosition.OnChange -= OnCharacterMove;
     playerRotation.OnChange      -= OnCharacterRotate;
     MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= MapRenderer_OnSceneInfoUpdated;
     MinimapMetadata.GetMetadata().OnUserInfoUpdated  -= MapRenderer_OnUserInfoUpdated;
     MinimapMetadata.GetMetadata().OnUserInfoRemoved  -= MapRenderer_OnUserInfoRemoved;
 }
Example #13
0
    public static MinimapMetadata GetMetadata()
    {
        if (minimapMetadata == null)
        {
            minimapMetadata = Resources.Load <MinimapMetadata>("ScriptableObjects/MinimapMetadata");
        }

        return(minimapMetadata);
    }
        private void Awake()
        {
            minimapMetadata = MinimapMetadata.GetMetadata();
            rectTransform   = transform as RectTransform;

            goToButton.onClick.AddListener(OnGotoClick);

            minimapMetadata.OnSceneInfoUpdated += OnMapMetadataInfoUpdated;
        }
    public IEnumerator AddAndRemovePlayersCorrectly()
    {
        UsersAroundListHUDListView listView = controller.usersListView as UsersAroundListHUDListView;

        string[] users = new string[] { "user1", "user2", "user3" };

        UserProfileController.i.AddUserProfileToCatalog(new UserProfileModel()
        {
            name   = users[0],
            userId = users[0]
        });
        UserProfileController.i.AddUserProfileToCatalog(new UserProfileModel()
        {
            userId = users[1],
            name   = users[1]
        });
        UserProfileController.i.AddUserProfileToCatalog(new UserProfileModel()
        {
            name   = users[2],
            userId = users[2]
        });

        MinimapMetadata.GetMetadata().AddOrUpdateUserInfo(new MinimapMetadata.MinimapUserInfo()
        {
            userId        = users[0],
            worldPosition = Vector3.zero
        });

        MinimapMetadata.GetMetadata().AddOrUpdateUserInfo(new MinimapMetadata.MinimapUserInfo()
        {
            userId        = users[1],
            worldPosition = Vector3.zero
        });

        Assert.IsTrue(GetVisibleChildren(listView.contentPlayers) == 2, "listView.content.childCount != 2");
        Assert.IsTrue(listView.availableElements.Count == 0, "listView.availableElements.Count != 0");

        MinimapMetadata.GetMetadata().RemoveUserInfo(users[1]);
        Assert.IsTrue(GetVisibleChildren(listView.contentPlayers) == 1, "listView.content.childCount != 1");
        Assert.IsTrue(listView.availableElements.Count == 1, "listView.availableElements.Count != 1");

        MinimapMetadata.GetMetadata().RemoveUserInfo(users[0]);
        Assert.IsTrue(GetVisibleChildren(listView.contentPlayers) == 0, "listView.content.childCount != 0");
        Assert.IsTrue(listView.availableElements.Count == 2, "listView.availableElements.Count != 2");


        MinimapMetadata.GetMetadata().AddOrUpdateUserInfo(new MinimapMetadata.MinimapUserInfo()
        {
            userId        = users[2],
            worldPosition = Vector3.zero
        });
        Assert.IsTrue(GetVisibleChildren(listView.contentPlayers) == 1, "listView.content.childCount != 1");
        Assert.IsTrue(listView.availableElements.Count == 1, "listView.availableElements.Count != 1");

        yield break;
    }
Example #16
0
    void Initialize(IUsersAroundListHUDListView view)
    {
        usersListView = view;

        usersListView.OnRequestMuteUser   += OnMuteUser;
        usersListView.OnRequestMuteGlobal += OnMuteAll;

        MinimapMetadata.GetMetadata().OnUserInfoUpdated += MapRenderer_OnUserInfoUpdated;
        MinimapMetadata.GetMetadata().OnUserInfoRemoved += MapRenderer_OnUserInfoRemoved;
    }
Example #17
0
        public IEnumerator DisplayParcelOfInterestIconsProperly()
        {
            var sceneInfo = new MinimapMetadata.MinimapSceneInfo();

            sceneInfo.name    = "important scene";
            sceneInfo.isPOI   = true;
            sceneInfo.parcels = new List <Vector2Int>()
            {
                new Vector2Int()
                {
                    x = 0, y = 0
                },
                new Vector2Int()
                {
                    x = 0, y = 1
                },
                new Vector2Int()
                {
                    x = 1, y = 0
                },
                new Vector2Int()
                {
                    x = 1, y = 1
                }
            };

            MinimapMetadata.GetMetadata().AddSceneInfo(sceneInfo);

            var sceneInfo2 = new MinimapMetadata.MinimapSceneInfo();

            sceneInfo2.name    = "non-important scene";
            sceneInfo2.isPOI   = false;
            sceneInfo2.parcels = new List <Vector2Int>()
            {
                new Vector2Int()
                {
                    x = 5, y = 0
                },
            };

            MinimapMetadata.GetMetadata().AddSceneInfo(sceneInfo2);

            MapSceneIcon[] icons = MapRenderer.i.GetComponentsInChildren <MapSceneIcon>();

            Assert.AreEqual(1, icons.Length, "Only 1 icon is marked as POI, but 2 icons were spawned");
            Assert.AreEqual(sceneInfo.name, icons[0].title.text);
            Assert.AreEqual(new Vector3(3010, 3010, 0), icons[0].transform.localPosition);

            yield return(null);
        }
Example #18
0
        public void ReactToPlayerCoordsChange()
        {
            const string sceneName = "SCENE_NAME";

            MinimapMetadata.GetMetadata().AddSceneInfo(
                new MinimapMetadata.MinimapSceneInfo {
                parcels = new List <Vector2Int> {
                    new Vector2Int(-77, -77)
                },
                name = sceneName
            });
            CommonScriptableObjects.playerCoords.Set(new Vector2Int(-77, -77));
            Assert.AreEqual(sceneName, navmapView.currentSceneNameText.text);
            Assert.AreEqual("-77,-77", navmapView.currentSceneCoordsText.text);
        }
Example #19
0
    void Initialize(IUsersAroundListHUDListView view)
    {
        usersListView = view;

        usersListView.OnRequestMuteUser   += OnMuteUser;
        usersListView.OnRequestMuteGlobal += OnMuteAll;
        usersListView.OnGoToCrowdPressed  += OnGoToCrowd;
        usersListView.OnOpen += OnListOpen;

        MinimapMetadata.GetMetadata().OnUserInfoUpdated += MapRenderer_OnUserInfoUpdated;
        MinimapMetadata.GetMetadata().OnUserInfoRemoved += MapRenderer_OnUserInfoRemoved;

        CommonScriptableObjects.rendererState.OnChange += OnRendererStateChanged;
        profile.OnUpdate += OnUserProfileUpdate;
    }
Example #20
0
        private void Awake()
        {
            i = this;

            NAVMAP_CHUNK_LAYER = LayerMask.NameToLayer("NavmapChunk");

            MinimapMetadata.GetMetadata().OnSceneInfoUpdated += MapRenderer_OnSceneInfoUpdated;

            ParcelHighlightButton.onClick.AddListener(() => { ClickMousePositionParcel(); });

            playerWorldPosition.OnChange += OnCharacterMove;
            playerRotation.OnChange      += OnCharacterRotate;

            parcelHighlightImage.rectTransform.localScale = new Vector3(parcelHightlightScale, parcelHightlightScale, 1f);

            parcelHoldCountdown = parcelHoldTimeInSeconds;
        }
Example #21
0
    /// <summary>
    /// Dispose HUD controller
    /// </summary>
    public void Dispose()
    {
        ReportMuteStatuses();

        if (updateMuteStatusRoutine != null)
        {
            CoroutineStarter.Stop(updateMuteStatusRoutine);
        }

        MinimapMetadata.GetMetadata().OnUserInfoUpdated -= MapRenderer_OnUserInfoUpdated;
        MinimapMetadata.GetMetadata().OnUserInfoRemoved -= MapRenderer_OnUserInfoRemoved;

        usersListView?.Dispose();

        if (usersButtonView != null)
        {
            usersButtonView.OnClick -= ToggleVisibility;
        }
    }
Example #22
0
        public IEnumerator DisplayAndUpdateUserIconProperly()
        {
            Vector3 initialPosition  = new Vector3(100, 0, 50);
            Vector3 modifiedPosition = new Vector3(150, 0, -30);

            var userInfo = new MinimapMetadata.MinimapUserInfo();

            userInfo.userId        = "testuser";
            userInfo.worldPosition = initialPosition;

            // Create an user icon
            MinimapMetadata.GetMetadata().AddOrUpdateUserInfo(userInfo);

            MapSceneIcon[] icons = MapRenderer.i.GetComponentsInChildren <MapSceneIcon>();

            Assert.AreEqual(1, icons.Length, "There should be only 1 user icon");
            Vector2 iconGridPosition = DCL.Helpers.Utils.WorldToGridPositionUnclamped(initialPosition);

            Assert.AreEqual(DCL.Helpers.MapUtils.GetTileToLocalPosition(iconGridPosition.x, iconGridPosition.y), icons[0].transform.localPosition);

            // Modifify the position of the user icon
            userInfo.worldPosition = modifiedPosition;

            MinimapMetadata.GetMetadata().AddOrUpdateUserInfo(userInfo);

            icons = MapRenderer.i.GetComponentsInChildren <MapSceneIcon>();

            Assert.AreEqual(1, icons.Length, "There should still be the same user icon");
            iconGridPosition = DCL.Helpers.Utils.WorldToGridPositionUnclamped(modifiedPosition);
            Assert.AreEqual(DCL.Helpers.MapUtils.GetTileToLocalPosition(iconGridPosition.x, iconGridPosition.y), icons[0].transform.localPosition);

            // Remove the user icon
            MinimapMetadata.GetMetadata().RemoveUserInfo(userInfo.userId);

            icons = MapRenderer.i.GetComponentsInChildren <MapSceneIcon>();

            Assert.AreEqual(0, icons.Length, "There should not be any user icon");

            yield return(null);
        }
Example #23
0
        public void CloseWhenCloseButtonIsClicked()
        {
            var sceneInfo = new MinimapMetadata.MinimapSceneInfo()
            {
                name        = "foo",
                owner       = null,
                description = "",
                isPOI       = false,
                parcels     = new List <Vector2Int>()
                {
                    new Vector2Int(10, 10), new Vector2Int(10, 11), new Vector2Int(10, 12)
                }
            };

            MinimapMetadata.GetMetadata().Clear();
            MinimapMetadata.GetMetadata().AddSceneInfo(sceneInfo);

            navmapToastView.Populate(new Vector2Int(10, 11), sceneInfo);
            Assert.IsTrue(navmapToastView.gameObject.activeSelf);
            navmapToastView.OnCloseClick();
            Assert.IsFalse(navmapToastView.gameObject.activeSelf);
        }
Example #24
0
        void Start()
        {
            mapMetadata = MinimapMetadata.GetMetadata();

            closeButton.onClick.AddListener(() =>
            {
                ToggleNavMap();
                Utils.UnlockCursor();
            });
            scrollRect.onValueChanged.AddListener((x) =>
            {
                if (!isOpen)
                {
                    return;
                }

                MapRenderer.i.atlas.UpdateCulling();
                toastView.OnCloseClick();
            });

            toggleNavMapDelegate = (x) =>
            {
                if (!Input.GetKeyDown(KeyCode.Escape) || isOpen)
                {
                    ToggleNavMap();
                }
            };

            toggleNavMapAction.OnTriggered += toggleNavMapDelegate;
            toastView.OnGotoClicked        += () => ToggleNavMap(true);

            MapRenderer.OnParcelClicked    += TriggerToast;
            MapRenderer.OnParcelHold       += TriggerToast;
            MapRenderer.OnParcelHoldCancel += () => { toastView.OnCloseClick(); };
            CommonScriptableObjects.playerCoords.OnChange += UpdateCurrentSceneData;

            Initialize();
        }
Example #25
0
 public ExploreMiniMapDataController()
 {
     MinimapMetadata.GetMetadata().OnSceneInfoUpdated += OnSceneInfoUpdated;
 }
Example #26
0
 public void Dispose()
 {
     MinimapMetadata.GetMetadata().OnSceneInfoUpdated -= OnSceneInfoUpdated;
     pendingSceneData.Clear();
 }
Example #27
0
 private void OnPlayerCoordsChange(Vector2Int current, Vector2Int previous)
 {
     UpdatePlayerPosition(current);
     UpdateSceneName(MinimapMetadata.GetMetadata().GetSceneInfo(current.x, current.y)?.name);
 }