/// <summary> /// Begin a scene transition by passing in the door that we are planning on loading from. /// This will return true if the scene transition began successfully /// </summary> /// <param name="PlayerCharacter"></param> /// <param name="DoorToLoad"></param> /// <returns></returns> public bool LoadNewRoomFromDoorActor(EHPlayerCharacter PlayerCharacter, DoorData DoorToLoad, bool bLoadLevelAsync = true) { if (bIsExecutingSceneTransition) { Debug.LogWarning("Scene Transition Is Currently In Progress"); return(false); } StartCoroutine(SceneTransitionCoroutine(PlayerCharacter, DoorToLoad)); return(true); }
/// <summary> /// /// </summary> /// <param name="HitData"></param> private void OnPlayerExitDialogueTrigger(FTriggerData HitData) { EHPlayerCharacter PlayerCharacter = HitData.OtherCollider.GetComponent <EHPlayerCharacter>(); if (PlayerCharacter != null) { PlayerCharacterReference = null; PlayerCharacterReference.PlayerController.UnbindActionToInput(EHPlayerController.JUMP_COMMAND, EHBasePlayerController.ButtonInputType.Button_Pressed, OnActionButtonPressed); } }
/// <summary> /// This will transition to another door if a player character has entered /// </summary> /// <param name="TriggerData"></param> private void OnPlayerEnterRoom(FTriggerData TriggerData) { Debug.Log("Something Entered: " + TriggerData.OtherCollider.name); EHPlayerCharacter PlayerCharacter = TriggerData.OtherCollider.GetComponent <EHPlayerCharacter>(); if (PlayerCharacter != null) { Debug.Log("Player Has exited"); BaseGameOverseer.Instance.GameHUD.GetScreenTransition().LoadNewRoomFromDoorActor(PlayerCharacter, AssociatedDoorData.GetConnectedDoorData()); } }
private void Start() { CachedPlayerCharacter = BaseGameOverseer.Instance.PlayerController.GetComponent <EHPlayerCharacter>(); if (CachedPlayerCharacter) { CachedPlayerCharacter.DamageableComponent.OnCharacterHealthChanged += OnHealthUpdated; CachedMaxHealth = CachedPlayerCharacter.DamageableComponent.MaxHealth; CachedCurrentHealth = CachedPlayerCharacter.DamageableComponent.Health; SpawnHealthBarsBasedOnMaxHealth(); SetHealthUI(); } }
protected override void Awake() { base.Awake(); BaseGameOverseer.Instance.PlayerController = this; PlayerCharacter = GetComponent <EHPlayerCharacter>(); }
public virtual void InitilalizeState(EHBaseAIController AIControllerOwner) { this.AIControllerOwner = AIControllerOwner; PlayerReference = BaseGameOverseer.Instance.PlayerController.GetPlayerCharacter(); bIsInitialized = true; }
/// <summary> /// Coroutine that carries our our scene transition /// </summary> /// <param name="PlayerCharacter"></param> /// <param name="DoorToLoad"></param> /// <returns></returns> private IEnumerator SceneTransitionCoroutine(EHPlayerCharacter PlayerCharacter, DoorData DoorToLoad) { if (!PlayerCharacter) { Debug.LogWarning("The player that was passed in was null"); yield break; } if (!DoorToLoad) { Debug.LogWarning("The Door to load was null"); yield break; } bIsExecutingSceneTransition = true; Image_BlackScreen.color = Color.clear; Image_BlackScreen.gameObject.SetActive(true); PlayerCharacter.GetComponent <EHPlayerController>().enabled = false; float TimeThatHasPassed = 0; while (TimeThatHasPassed < TransitionTimeSeconds) { yield return(null); TimeThatHasPassed += EHTime.RealDeltaTime; Image_BlackScreen.color = new Color(0, 0, 0, TimeThatHasPassed / TransitionTimeSeconds); } Image_BlackScreen.color = Color.black; RoomActor CurrentlyLoadedRoom = BaseGameOverseer.Instance.CurrentlyLoadedRoom; if (CurrentlyLoadedRoom.GetAssociatedRoomData() != DoorToLoad.GetDoorRoom()) { if (CurrentlyLoadedRoom && CurrentlyLoadedRoom.GetAssociatedRoomData()) { print(CurrentlyLoadedRoom.GetAssociatedRoomData().RoomScene); yield return(SceneManager.UnloadSceneAsync(CurrentlyLoadedRoom.GetAssociatedRoomData().RoomScene)); } yield return(SceneManager.LoadSceneAsync(DoorToLoad.GetDoorRoom().RoomScene, LoadSceneMode.Additive)); } yield return(new WaitForSecondsRealtime(0.5f)); DoorActor DoorToSpawnFrom = BaseGameOverseer.Instance.CurrentlyLoadedRoom.GetRoomDoorTriggerFromDoorData(DoorToLoad); Vector3 CharacterSpawnPosition = Vector3.zero; if (DoorToSpawnFrom == null) { Debug.LogError("There was no associated door actor to spawn our character"); } else { CharacterSpawnPosition = DoorToSpawnFrom.GetSpawnPosition(); } PlayerCharacter.SetCharacterAtPosition(CharacterSpawnPosition); EHPhysics2D Physics2D = PlayerCharacter.GetComponent <EHPhysics2D>(); if (Physics2D) { Physics2D.Velocity = Vector2.zero; } BaseGameOverseer.Instance.MainGameCamera.FocusCameraImmediate(); PlayerCharacter.GetComponent <EHPlayerController>().enabled = true; TimeThatHasPassed = 0; bIsExecutingSceneTransition = false; while (TimeThatHasPassed < TransitionTimeSeconds && !bIsExecutingSceneTransition) { yield return(null); TimeThatHasPassed += EHTime.RealDeltaTime; Image_BlackScreen.color = new Color(0, 0, 0, 1 - (TimeThatHasPassed / TransitionTimeSeconds)); } Image_BlackScreen.color = Color.clear; }