private IEnumerator InitPortalStatusImpl(Action onComplete)
    {
        LoadingQueue loadQueue = new LoadingQueue(this);
        UIntKeyTable <LoadObject> loadTextures = new UIntKeyTable <LoadObject>();

        for (int k = 0; k < locations.Length; k++)
        {
            FieldMapTable.FieldMapTableData tableData = locations[k].tableData;
            if (tableData != null && tableData.hasChildRegion && loadTextures.Get(tableData.iconId) == null)
            {
                loadTextures.Add(tableData.iconId, loadQueue.Load(RESOURCE_CATEGORY.DUNGEON_ICON, ResourceName.GetDungeonIcon(tableData.iconId), false));
            }
        }
        if (loadQueue.IsLoading())
        {
            yield return((object)loadQueue.Wait());
        }
        for (int j = 0; j < locations.Length; j++)
        {
            FieldMapTable.FieldMapTableData tableData2 = locations[j].tableData;
            if (tableData2 != null && tableData2.hasChildRegion)
            {
                locations[j].icon = (loadTextures.Get(tableData2.iconId).loadedObject as Texture2D);
            }
        }
        for (int i = 0; i < portals.Length; i++)
        {
            RegionMapPortal portal = portals[i];
            if (portal.IsVisited())
            {
                portal.Open();
            }
        }
        onComplete?.Invoke();
    }
Exemplo n.º 2
0
    private void CreateVisitedLocationSpot()
    {
        OutGameSettingsManager.QuestMap questMap = MonoBehaviourSingleton <OutGameSettingsManager> .I.questMap;
        MonoBehaviourSingleton <FilterManager> .I.StopBlur(questMap.cameraMoveTime, 0f);

        for (int i = 0; i < regionMapRoot.locations.Length; i++)
        {
            RegionMapLocation regionMapLocation          = regionMapRoot.locations[i];
            FieldMapTable.FieldMapTableData fieldMapData = Singleton <FieldMapTable> .I.GetFieldMapData((uint)regionMapLocation.mapId);

            if ((fieldMapData != null || regionMapLocation.mapId == 0) && (fieldMapData == null || FieldManager.IsShowPortal(fieldMapData.jumpPortalID)))
            {
                if (fieldMapData != null && !MonoBehaviourSingleton <FieldManager> .I.CanJumpToMap(fieldMapData))
                {
                    CreateLocationSpot(regionMapLocation, SpotManager.ICON_TYPE.NOT_OPENED, false);
                }
                else if (regionMapLocation.mapId == newMapData.mapID && !eventData.IsOnlyCameraMoveEvent() && !eventData.IsEnterDungeon() && !eventData.IsQuestToField())
                {
                    CreateLocationSpot(regionMapLocation, SpotManager.ICON_TYPE.NOT_OPENED, false);
                }
                else
                {
                    SpotManager.ICON_TYPE iCON_TYPE = SpotManager.ICON_TYPE.CLEARED;
                    if (regionMapLocation.portal.Length > 0)
                    {
                        for (int j = 0; j < regionMapLocation.portal.Length; j++)
                        {
                            RegionMapPortal regionMapPortal = regionMapLocation.portal[j];
                            if (!regionMapPortal.IsVisited() && regionMapPortal.IsShow())
                            {
                                iCON_TYPE = SpotManager.ICON_TYPE.NEW;
                                break;
                            }
                        }
                    }
                    if (fieldMapData != null)
                    {
                        if (FieldManager.IsToHardPortal(fieldMapData.jumpPortalID))
                        {
                            iCON_TYPE = SpotManager.ICON_TYPE.HARD;
                            if (iCON_TYPE == SpotManager.ICON_TYPE.NEW)
                            {
                                iCON_TYPE = SpotManager.ICON_TYPE.HARD_NEW;
                            }
                        }
                        if (fieldMapData.hasChildRegion && fieldMapData.childRegionId != regionId)
                        {
                            iCON_TYPE = SpotManager.ICON_TYPE.CHILD_REGION;
                        }
                    }
                    CreateLocationSpot(regionMapLocation, iCON_TYPE, false);
                }
            }
        }
    }