Example #1
0
    IEnumerator _Goto()
    {
        _isSwitching = true;
        if (GetNeedLoadingMask())
        {
            LoadingMask.StartLoading();
            yield return(new WaitForSeconds(LoadingMask.Instance.TimeToUnload));
        }

        BaseUI newUI = null;

        switch (_targetUIState)
        {
        case UIStateName.Entrance:
            newUI = EntranceUI.EnterStage();
            break;

        case UIStateName.Menu:
            newUI = MenuUI.EnterStage();
            break;

        case UIStateName.Match:
            newUI = MatchUI.EnterStage();
            break;

        case UIStateName.Game:
            newUI = GameUI.EnterStage();
            break;

        case UIStateName.PushLevel:
            newUI = PushLevelUI.EnterStage();
            break;

        case UIStateName.EndRound:
            newUI = EndRoundUI.EnterStage();
            break;

        default:
            Debug.LogError("ERROR uiState:" + _targetUIState);
            break;
        }
        switch (_targetUIState)
        {
        case UIStateName.Entrance:
            var sr = Background.GetComponent <SpriteRenderer>();
            sr.sprite = SprSplash;
            break;

        case UIStateName.PushLevel:
            //Background.gameObject.SetActive(false);
            break;

        default:
            //Background.gameObject.SetActive(true);
            sr        = Background.GetComponent <SpriteRenderer>();
            sr.sprite = SprBg;
            break;
        }

        if (!newUI)
        {
            Debug.LogError("GotoUI却没有成功创建UI:" + _targetUIState);
        }

        for (int i = 0; i < _baseUIs.Length; i++)
        {
            if (i == (int)_targetUIState)
            {
                _baseUIs[i] = newUI;
            }
            else
            {
                if (_baseUIs[i])
                {
                    _baseUIs[i].OffStage();
                    _baseUIs[i] = null;
                    Resources.UnloadUnusedAssets();
                }
            }
        }

        LoadingMask.EndLoading();
        _isSwitching = false;
    }
Example #2
0
        /// <summary>
        /// 第一次调用时创建新的岛屿内容,之后调用不会再改动。
        /// </summary>
        /// <param name="pushLevelUI"></param>
        /// <param name="majorLevelId"></param>
        /// <param name="majorLevel"></param>
        /// <param name="majorLevelData"></param>
        public void SetAndRefresh(PushLevelUI pushLevelUI, int majorLevelId, MajorLevelUnlockInfo majorLevel, MajorLevelData majorLevelData)
        {
            PushLevelUI           = pushLevelUI;
            MajorLevelId          = majorLevelId;
            _majorLevelUnlockInfo = majorLevel;
            _majorLevelData       = majorLevelData;

            if (!_artContent)
            {
                var prefab = MorlnDownloadResources.Load <GameObject>("ResourcesForDownload/Island/Island" + (majorLevelId - 1));
                _artContent = PrefabHelper.InstantiateAndReset(prefab, transform);
                //_artContent.transform.localScale = new Vector3(0.5f, 0.5f, 1);
                IslandInfo = _artContent.GetComponent <IslandInfo>();
                if (IslandInfo)
                {
                    IslandInfo.Island = this;
                    IslandInfo.transform.SetSortingLayer("Planet");
                }
            }
            if (!IslandInfo)
            {
                Debug.LogError("没有岛屿内容则不能玩游戏,请检查");
                return;
            }

            if (_majorLevelData == null)
            {
                Debug.LogError("没有_majorLevelData。不用显示了,玩不了!");
                return;
            }
            if (_majorLevelData.SubLevelList == null)
            {
                Debug.LogError("没有_majorLevelData.SubLevelList。不用显示了,玩不了!");
                return;
            }

            while (SubLevelPointList.Count < _majorLevelData.SubLevelList.Count)//确保 小关点 数量足够
            {
                var subLevelPoint = PrefabHelper.InstantiateAndReset <SubLevelPoint>(SubLevelPointTemplate, SubLevelPointContainer);
                subLevelPoint.name = "SubLevel " + SubLevelPointList.Count;
                SubLevelPointList.Add(subLevelPoint);
            }
            var subLevelPointPosList = Route.GetPointsUniformly(_majorLevelData.SubLevelList.Count);

            for (int subId = 1; subId <= SubLevelPointList.Count; subId++)
            {
                var pointI = subId - 1;
                var dataI  = _majorLevelData != null
                                ? _majorLevelData.SubLevelList.FindIndex(x => x.SubLevelId == subId)
                                : -1;

                var unlockI = _majorLevelUnlockInfo != null
                                  ? _majorLevelUnlockInfo.SubLevelUnlockInfoList.FindIndex(x => x.SubLevelId == subId)
                                  : -1;

                if (dataI >= 0) //后者必然true,只为彻底保险
                {
                    var go = SubLevelPointList[pointI].gameObject;
                    go.SetActive(true);
                    go.transform.localPosition = subLevelPointPosList[pointI];
                    SubLevelPointList[pointI].SetAndRefresh(_majorLevelData.MajorLevelId,
                                                            unlockI >= 0 ? _majorLevelUnlockInfo.SubLevelUnlockInfoList[unlockI] : null,
                                                            dataI >= 0 ? _majorLevelData.SubLevelList[dataI] : null);//指数大于0则一定不为null,放心,别管波浪线
                }
                else
                {
                    SubLevelPointList[pointI].gameObject.SetActive(false);
                }
            }
            SubLevelPointTemplate.SetActive(false);

            var locked = _majorLevelUnlockInfo == null || !_majorLevelUnlockInfo.Unlocked;

            IslandInfo.CloudsContainer.SetActive(locked);
        }