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); } } } }
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); } }
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); }
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); }
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); }