Exemple #1
0
 /// <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);
 }
Exemple #2
0
    /// <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);
        }
    }
Exemple #3
0
    /// <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());
        }
    }
Exemple #4
0
 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>();
 }
Exemple #6
0
 public virtual void InitilalizeState(EHBaseAIController AIControllerOwner)
 {
     this.AIControllerOwner = AIControllerOwner;
     PlayerReference        = BaseGameOverseer.Instance.PlayerController.GetPlayerCharacter();
     bIsInitialized         = true;
 }
Exemple #7
0
    /// <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;
    }