Example #1
0
    public EnumLevelState currentLevelState;            //of the level that just finished, not written to server yet.

    private void BattleGrade(int score)
    {
        string levelName = LevelManager.Singleton.CurrentLevel;

        LevelData ld = _levelConfig.GetLevelData(levelName);

        if (_consumeTime <= ld.minTime)
        {
            currentLevelState = EnumLevelState.S;
        }
        else
        if (_consumeTime <= ld.minTime + (ld.maxTime - ld.minTime) / 3)
        {
            currentLevelState = EnumLevelState.A;
        }
        else
        if (_consumeTime <= ld.minTime + (ld.maxTime - ld.minTime) * 2 / 3)
        {
            currentLevelState = EnumLevelState.B;
        }
        else
        if (_consumeTime < ld.maxTime)
        {
            currentLevelState = EnumLevelState.C;
        }
        else
        {
            currentLevelState = EnumLevelState.D;
        }
    }
 public void Refresh()
 {
     foreach (FCWorldmapLevelChessPiece chesspiece in levels)
     {
         EnumLevelState levelState = GetLevelState(chesspiece.levelName);
         chesspiece.LevelState = levelState;
     }
 }
        public static LevelStateChangeEventArgs Create(LevelData levelData, EnumLevelState lastState, EnumLevelState currentState, object userData = null)
        {
            LevelStateChangeEventArgs levelStateChangeEventArgs = ReferencePool.Acquire <LevelStateChangeEventArgs>();

            levelStateChangeEventArgs.LevelData    = levelData;
            levelStateChangeEventArgs.LastState    = lastState;
            levelStateChangeEventArgs.CurrentState = currentState;
            return(levelStateChangeEventArgs);
        }
    private void DisplayNormalScore(EnumLevelState preLevelState)
    {
        PlayerInfo profile = PlayerInfo.Instance;

        EnumLevelState state = profile.GetLevelState(_levelName);

        bool isLocked = state == EnumLevelState.LOCKED;

        if (isLocked && preLevelState == EnumLevelState.LOCKED && profile.difficultyLevel == 0)
        {
            transform.parent.gameObject.SetActive(false);
            return;
        }

        _imageButton.isEnabled = !(isLocked && profile.difficultyLevel == 0);

        if (_locked != null)
        {
            if (profile.difficultyLevel > 0)
            {
                _locked.SetActive(state > EnumLevelState.NEW_UNLOCK);
            }
            else
            {
                _locked.SetActive(state != EnumLevelState.NEW_UNLOCK);
            }
        }

        if (_levelScore != null)
        {
            if (PlayerInfo.Instance.difficultyLevel > 0) //always enabled
            {
                if (state > EnumLevelState.NEW_UNLOCK)   //passed, we have a score
                {
                    _levelScore.mainTexture = _scoreTextures[(int)state];
                }
                else //no score, make it available
                {
                    _levelScore.mainTexture = _scoreTextures[(int)EnumLevelState.NEW_UNLOCK];
                }
            }
            else
            {
                _levelScore.mainTexture = _scoreTextures[(int)state];
            }

            if (state >= EnumLevelState.D)
            {
                UISprite sprite = _imageButton.GetComponentInChildren <UISprite>();
                if (sprite != null)
                {
                    sprite.gameObject.SetActive(false);
                }
            }
        }
    }
Example #5
0
    public void ChangeLevelState(string levelName, int difficultyLevel, EnumLevelState state)
    {
        Dictionary <string, EnumLevelState> currentLevelState = this.GetLevelStateDict(difficultyLevel);

        if (currentLevelState.ContainsKey(levelName))
        {
            if ((int)state > (int)currentLevelState[levelName])
            {
                currentLevelState[levelName] = state;
                CalculateUnlockLevel();
            }
        }
        else
        {
            currentLevelState.Add(levelName, state);
        }
    }
Example #6
0
        public void LevelPause()
        {
            if (CurrentLevelIndex == NONE_LEVEL_INDEX)
            {
                Log.Error("Only can pause in level");
                return;
            }

            if (LevelState != EnumLevelState.Normal && LevelState != EnumLevelState.Prepare)
            {
                Log.Error("Only can pause when level is in Normal or Prepare State,now is {0}", LevelState.ToString());
                return;
            }

            stateBeforePause = LevelState;
            ChangeLevelState(EnumLevelState.Pause);
        }
Example #7
0
        private void ChangeLevelState(EnumLevelState targetLevelState)
        {
            if (LevelState == targetLevelState)
            {
                return;
            }

            LevelData levelData = GetLevelData(CurrentLevelIndex);

            if (levelData == null)
            {
                Log.Error("Can not found level '{0}.'", CurrentLevelIndex);
                return;
            }

            EnumLevelState lastLevelState = LevelState;

            LevelState = targetLevelState;
            GameEntry.Event.Fire(this, LevelStateChangeEventArgs.Create(levelData, lastLevelState, LevelState));
            Log.Debug("Current level is '{0}',level state is '{1}.'", levelData.Name, LevelState.ToString());
        }
    public bool TryStartTutorialTown(EnumTutorial tutorialId)
    {
        if (tutorialId == EnumTutorial.Town_Equip)
        {
            if (PlayerInfo.Instance.IsEquipedItem(k_equip_item1))
            {
                PlayerInfo.Instance.ChangeTutorialState(tutorialId, EnumTutorialState.Finished);
                return(false);
            }
        }

        EnumTutorialState state = PlayerInfo.Instance.GetTutorialState(tutorialId);

        if (state == 0)         //if this tutorial is not active or finish, check if can start.
        {
            TutorialTown      tutorialTown = GetTutorialTown(tutorialId);
            EnumTutorialState preState     = EnumTutorialState.Finished;
            if (tutorialTown.preId != EnumTutorial.None)
            {
                preState = PlayerInfo.Instance.GetTutorialState(tutorialTown.preId);
            }

            if (preState == EnumTutorialState.Finished)             //if pre turiral have finish
            {
                EnumLevelState levelState = EnumLevelState.D;
                if (!string.IsNullOrEmpty(tutorialTown.level))
                {
                    levelState = PlayerInfo.Instance.GetLevelState(tutorialTown.level);
                }

                if (levelState >= EnumLevelState.D)
                {
                    PlayerInfo.Instance.ChangeTutorialState(tutorialId, EnumTutorialState.Active);
                    isInTutorial = true;
                    return(true);
                }
            }
        }
        return(false);
    }
Example #9
0
    void CalculateUnlockLevel()
    {
        List <LevelData> list           = new List <LevelData>(LevelManager.Singleton.LevelsConfig.levels);
        LevelData        firstLevelData = null;
        bool             hasFound       = false;

        foreach (LevelData ld in list)
        {
            if (ld.preLevelID == 0 && ld.available)
            {
                firstLevelData = ld;
            }
            if (!ld.available)
            {
                continue;
            }
            EnumLevelState prelvState = PlayerInfo.Instance.GetLevelState(ld.preLevelID);
            EnumLevelState lvState    = PlayerInfo.Instance.GetLevelState(ld.levelName);
            if (lvState == EnumLevelState.NEW_UNLOCK //new unlock
                ||
                (lvState == EnumLevelState.LOCKED &&
                 prelvState != EnumLevelState.LOCKED &&
                 prelvState != EnumLevelState.NEW_UNLOCK
                )
                ||
                (
                    lvState == EnumLevelState.LOCKED && ld.preLevelID == 0
                )
                )
            {
                PlayerInfo.Instance.ChangeLevelState(ld.levelName, difficultyLevel, EnumLevelState.NEW_UNLOCK);
                _newUnlockLevelData = ld;
                hasFound            = true;
            }
        }
        if (!hasFound)
        {
            _newUnlockLevelData = null;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (isRequestLevelChange)
        {
            isRequestLevelChange = false;
            CurrentLevelState = EnumLevelState.PREPARING;
            Player.GetComponent<PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.AUTO;

            transitionTimer = Time.time;

            switch (CurrentLevel)
            {
                case EnumLevels.LEVEL1:
                    LoadLevel1();
                    break;
                case EnumLevels.LEVEL2:
                    LoadLevel2();
                    break;
                case EnumLevels.LEVEL3:
                    LoadLevel3();
                    break;
                case EnumLevels.FINAL:
                    //final level
                    break;
            }
        }

        switch (CurrentLevelState)
        {
            case EnumLevelState.NORMAL:
                //do nothing. the level is ready
                if (TriggerBox_Level1_2.GetComponent<RoomTrigger>().CheckPointReached)
                {
                    isRequestLevelChange = true;
                    CurrentLevel = EnumLevels.LEVEL2;
                }
                else if (TriggerBox_Level2_3.GetComponent<RoomTrigger>().CheckPointReached)
                {
                    isRequestLevelChange = true;
                    CurrentLevel = EnumLevels.LEVEL3;
                }
                else if (TriggerBox_Level3_final.GetComponent<RoomTrigger>().CheckPointReached)
                {
                    isRequestLevelChange = true;
                    CurrentLevel = EnumLevels.FINAL;
                }
                break;
            case EnumLevelState.PREPARING:
                if (Time.time - transitionTimer > transitionTimerLimit)
                {
                    Debug.Log("everything set. start level!");
                    SceneManager.ResetSceneState();
                    CurrentLevelState = EnumLevelState.NORMAL;
                    Player.GetComponent<PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.NORMAL;
                }

                //spawn enemies

                //move cameras

                //prepare player

                break;
        }
    }
 public LevelStateChangeEventArgs()
 {
     LastState    = EnumLevelState.None;
     CurrentState = EnumLevelState.None;
     LevelData    = null;
 }
    // Update is called once per frame
    void Update()
    {
        if (isRequestLevelChange)
        {
            isRequestLevelChange = false;
            CurrentLevelState    = EnumLevelState.PREPARING;
            Player.GetComponent <PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.AUTO;

            transitionTimer = Time.time;

            switch (CurrentLevel)
            {
            case EnumLevels.LEVEL1:
                LoadLevel1();
                break;

            case EnumLevels.LEVEL2:
                LoadLevel2();
                break;

            case EnumLevels.LEVEL3:
                LoadLevel3();
                break;

            case EnumLevels.FINAL:
                //final level
                break;
            }
        }

        switch (CurrentLevelState)
        {
        case EnumLevelState.NORMAL:
            //do nothing. the level is ready
            if (TriggerBox_Level1_2.GetComponent <RoomTrigger>().CheckPointReached)
            {
                isRequestLevelChange = true;
                CurrentLevel         = EnumLevels.LEVEL2;
            }
            else if (TriggerBox_Level2_3.GetComponent <RoomTrigger>().CheckPointReached)
            {
                isRequestLevelChange = true;
                CurrentLevel         = EnumLevels.LEVEL3;
            }
            else if (TriggerBox_Level3_final.GetComponent <RoomTrigger>().CheckPointReached)
            {
                isRequestLevelChange = true;
                CurrentLevel         = EnumLevels.FINAL;
            }
            break;

        case EnumLevelState.PREPARING:
            if (Time.time - transitionTimer > transitionTimerLimit)
            {
                Debug.Log("everything set. start level!");
                SceneManager.ResetSceneState();
                CurrentLevelState = EnumLevelState.NORMAL;
                Player.GetComponent <PlayerScript>().CurrentControlMode = PlayerScript.EnumControlMode.NORMAL;
            }

            //spawn enemies

            //move cameras

            //prepare player

            break;
        }
    }
    public void UpdateState()
    {
        if (_levelName != null)
        {
            PlayerInfo profile = PlayerInfo.Instance;

            LevelData levelData = LevelManager.Singleton.LevelsConfig.GetLevelData(_levelName);

            if (levelData == null || !levelData.available)
            {
                transform.parent.gameObject.SetActive(false);
                return;
            }

            if (TryStartTutorial())
            {
                if (_levelName != "village2")
                {
                    transform.parent.gameObject.SetActive(false);
                    return;
                }
            }

            SendMessage(_iconBGSetting);

            int unlockLevel = levelData.unlockPlayerLevel;

            int prvLevelID = levelData.id;

            EnumLevelState preLevelState = EnumLevelState.D;

            if (prvLevelID > 0)
            {
                preLevelState = profile.GetLevelState(levelData.levelName);
            }

            if (preLevelState >= EnumLevelState.D && profile.CurrentLevel >= unlockLevel)
            {
                profile.ChangeLevelState(_levelName, profile.difficultyLevel, EnumLevelState.NEW_UNLOCK);
            }

            EnumLevelState state = profile.GetLevelState(_levelName);

            bool isLocked = state == EnumLevelState.LOCKED;

            SendMessage(_scoreDisplaySetting, preLevelState);

            if (isLocked && preLevelState == EnumLevelState.LOCKED && profile.difficultyLevel == 0)
            {
                transform.parent.gameObject.SetActive(false);
                return;
            }

            if (_pathLoft != null)
            {
                if (state >= EnumLevelState.D)
                {
                    _pathLoft.UnlockEffect = false;
                    _pathLoft.UpdatePath();
                }
                else if (state == EnumLevelState.NEW_UNLOCK)
                {
                    _pathLoft.UnlockEffect = true;
                    _pathLoft.UpdatePath();
                }
            }

            if (_highlight != null)
            {
                bool highLight = (state == EnumLevelState.NEW_UNLOCK);
                _highlight.SetActive(highLight);
            }
        }
    }
 private void DisplayNoScore(EnumLevelState preLevelState)
 {
     //do nothing
     _locked.SetActive(false);
 }