Esempio n. 1
0
    //=====================================================

    private void OnPostCutsceneFadeOutCompleteEvent()
    {
        ScreenManager.FadeOutCompleteEvent -= OnPostCutsceneFadeOutCompleteEvent;

        _isFadeCompelete = true;

        // Stop and clear cameraPathAnimator reference
        if (_cameraPathAnimator)
        {
            _cameraPathAnimator.Stop();
            _cameraPathAnimator = null;
        }

        // Returning to same scene - fade-in
        if (_currentCutscene == eCutsceneType.CRAWL_DOOR ||
            _currentCutscene == eCutsceneType.OBLIVION_PORTAL ||
            _currentCutscene == eCutsceneType.SWITCH_OPENS_DOOR_BOLT_01 ||
            _currentCutscene == eCutsceneType.SWITCH_OPENS_DOOR_BOLT_02 ||
            _currentCutscene == eCutsceneType.SWITCH_OPENS_DOOR_BOLT_03 ||
            _currentCutscene == eCutsceneType.SWITCH_OPENS_DOOR ||
            _currentCutscene == eCutsceneType.SWITCH_ACTIVATES_PLATFORM ||
            _currentCutscene == eCutsceneType.OPEN_CHEST ||
            _currentCutscene == eCutsceneType.DEATH_RESPAWN ||
            _currentCutscene == eCutsceneType.FLY_THRU ||
            _currentCutscene == eCutsceneType.BOSS_ROOM_START)
        {
            // Switch cameras
            _camera.GetComponent <AudioListener>().enabled = false;
            _camera.enabled = false;
            _mainCamera.GetComponent <AudioListener>().enabled = true;
            _mainCamera.enabled = true;
            _mainCamera.transform.FindChild("CameraInGameGui").GetComponent <Camera>().enabled = true;
            _mainCamera.GetComponent <CameraMovement>().InitWithPlayer(false);

            // Fade in - include short pause if necessary for fairy aniamtions
            var delay = (_currentCutscene == eCutsceneType.CRAWL_DOOR ||
                         _currentCutscene == eCutsceneType.OBLIVION_PORTAL) ? 0.3f : 0.0f;
            StartCoroutine(DelayPostCutsceneFadeIn(delay));
        }

        // Reset for next cutscene
        _currentCutscene = eCutsceneType.NULL;
        _cutsceneObject  = null;

        if (CutsceneCompleteEvent != null)
        {
            CutsceneCompleteEvent();
        }

        // Un-block player input
        if (InputManager.Instance != null)
        {
            InputManager.Instance.OnBlockInput(false);
        }
    }
Esempio n. 2
0
    //=====================================================

    private IEnumerator ShowKeyCollectedPopup(ICutsceneObject obj, ePuzzleKeyType keyType)
    {
        var isFinalKey = GameDataManager.Instance.GetNumKeysCollected(CurrentLocation) >=
                         Convert.ToInt32(SettingsManager.GetSettingsItem("NUM_PUZZLE_ROOM_KEYS", (int)CurrentLocation));

        yield return(new WaitForSeconds(1.5f));

        PopupKeyCollected.PopupKeyExitScene += OnPopupKeyExitScene;

        PopupKeyCollected.Instance.Show(obj, keyType, isFinalKey);
    }
Esempio n. 3
0
    //=====================================================

    public void OnKeyCollected(ICutsceneObject obj, ePuzzleKeyType keyType)
    {
        if (InputManager.Instance != null)
        {
            InputManager.Instance.OnBlockInput(true);
        }

        // Eject player from puzzle-room - ensure player isn't flagged as dead
        _isPlayerDead = false;

        PlayerManager.OnCelebrate();

        StartCoroutine(ShowKeyCollectedPopup(obj, keyType));
    }
Esempio n. 4
0
    //=====================================================

    #region Private Methods

    void Awake()
    {
        Instance = this;
        _camera  = this.transform.GetComponentInChildren <Camera>();

        _currentCutscene       = eCutsceneType.NULL;
        _cutsceneObject        = null;
        _cutsceneTimer         = 0.0f;
        _cameraPath            = null;
        _isCameraFollowingPath = false;
        _cameraPathAnimator    = null;
        _isFadeCompelete       = false;
        _isPaused               = false;
        _durationStartToEnd     = 0.0f;
        _tweenId                = -1;
        _checkForCancelCutscene = false;
    }
Esempio n. 5
0
    //=====================================================

    private void OnBossWinsEvent(ICutsceneObject cutsceneObject)
    {
        Debug.Log("OnBossWinsEvent !!!!!!");

        _timer = -1.0f;

        // Hide health bar
        _healthBar.gameObject.SetActive(false);

        CurrentState = eBossState.IDLE;

        // Stop referenced managers
        _gridManager.OnBossDeadEvent();
        _enemyManager.OnClearEnemiesEvent(true);

        _isPlayerDefeated = true;
    }
Esempio n. 6
0
    //=====================================================

    public void Show(ICutsceneObject obj, ePuzzleKeyType keyType, bool _isFinalKey)
    {
        // ToDo: show additional info for collecting all keys in scene

        if (_camera == null)
        {
            _camera = transform.FindChild("GuiCamera").gameObject;
        }

        if (_camera == null)
        {
            return;
        }

        // Store cutscene object - pass back to GameManager when closing popup
        _keyCutsceneObject = obj;

        _camera.SetActive(true);

        _keyType = keyType;

        //var id = "";
        switch (_keyType)
        {
        default:
            _imgKey.sprite = _keyDefault;
            _txtKeyId.text = TextManager.GetText("POPUP_KEY") + " " + ((int)_keyType - 1);
            break;

        case ePuzzleKeyType.KEY_GEM_RED:
            _imgKey.sprite = _keyRedGems;
            _txtKeyId.text = TextManager.GetText("POPUP_KEY_RED_GEMS");
            break;

        case ePuzzleKeyType.KEY_GEM_100:
            _imgKey.sprite = _key100Gems;
            _txtKeyId.text = TextManager.GetText("POPUP_KEY_100_GEMS");
            break;
        }

        //_txtKeyId.text = TextManager.GetText( "POPUP_KEY" ) + " " + id;
        _txtCollected.text = TextManager.GetText("POPUP_KEY_COLLECTED");
    }
Esempio n. 7
0
    //=====================================================

    private void OnPopupKeyExitScene(ICutsceneObject obj, bool exitScene = true)
    {
        PopupKeyCollected.PopupKeyExitScene -= OnPopupKeyExitScene;

        // Remain in current scene? e.g. collecting 100 gems exposing 100_gem_key
        if (exitScene == false)
        {
            if (InputManager.Instance != null)
            {
                InputManager.Instance.OnBlockInput(false);
            }

            return;
        }

        SetNextLocation(eLocation.MAIN_HALL);

        // Signal Cutscene to start fade-out. GameManager waits for fade-out completed event
        if (KeyCollectedEvent != null)
        {
            KeyCollectedEvent(obj);
        }
    }
Esempio n. 8
0
    //=====================================================
    // Start cutscene. Optional param could be used for door-bolt-index
    public void OnStartCutscene(eCutsceneType cutsceneType, ICutsceneObject cutsceneObject = null, int param = 0)
    {
        Debug.Log("OnStartCutscene");

        // Clear for now - set after fade-in to cutscene
        _currentCutscene = eCutsceneType.NULL;

        // Set up cutscene stuff then fade-out -> fade-in to cutscene -> fade-out (optional fade-in to same scene)
        _cutsceneType   = cutsceneType;
        _cutsceneObject = cutsceneObject;
        _cutsceneTimer  = (_cutsceneObject != null) ? _cutsceneObject.CutsceneDuration() : 2.5f;

        // Is the cutscene using a camera fly-thru object
        if (cutsceneObject != null && cutsceneObject.IsFlyThruAvailable() == true)
        {
            _cameraPathAnimator = cutsceneObject.GetFlyThruAnimator();
        }

        _cameraPath = (_cameraPathAnimator == null && _cutsceneObject != null) ? _cutsceneObject.CameraPath() : null;

        _fadeSpeed       = 1.0f;
        _isFadeCompelete = false;

        switch (_cutsceneType)
        {
        case eCutsceneType.RETURN_TO_START:
        case eCutsceneType.GO_TO_COMMON_ROOM:
        case eCutsceneType.CRAWL_DOOR:
        case eCutsceneType.OBLIVION_PORTAL:
        case eCutsceneType.ENTER_PUZZLE_ROOM:
        case eCutsceneType.LEAVE_PUZZLE_ROOM:
        case eCutsceneType.ENTER_PLAYER_HUB:
        case eCutsceneType.LEAVE_PLAYER_HUB:
        case eCutsceneType.ENTER_BOSS_ROOM:
        case eCutsceneType.LEAVE_BOSS_ROOM:
        case eCutsceneType.COLLECT_KEY:
        case eCutsceneType.SWITCH_OPENS_DOOR_BOLT_01:
        case eCutsceneType.SWITCH_OPENS_DOOR_BOLT_02:
        case eCutsceneType.SWITCH_OPENS_DOOR_BOLT_03:
        case eCutsceneType.SWITCH_OPENS_DOOR:
        case eCutsceneType.SWITCH_ACTIVATES_PLATFORM:
        case eCutsceneType.OPEN_CHEST:
        case eCutsceneType.DEATH_RESPAWN:
        case eCutsceneType.DEATH:
        case eCutsceneType.FLY_THRU:
        case eCutsceneType.BOSS_ROOM_START:
        case eCutsceneType.BOSS_ROOM_BOSS_LOSES:
        case eCutsceneType.BOSS_ROOM_BOSS_WINS:
            _fadeSpeed = 1.0f;
            break;
        }

        _durationStartToEnd = _cutsceneTimer;

        // Fade out from game -> fade in to cutscene
        if (cutsceneType != eCutsceneType.NULL &&
            cutsceneType != eCutsceneType.GO_TO_COMMON_ROOM &&
            cutsceneType != eCutsceneType.RETURN_TO_START &&
            cutsceneType != eCutsceneType.DEATH_RESPAWN &&
            cutsceneType != eCutsceneType.DEATH &&
            _cutsceneType != eCutsceneType.BOSS_ROOM_START)
        {
            ScreenManager.FadeOutCompleteEvent += OnPreCutsceneFadeOutCompleteEvent;
            ScreenManager.FadeOut(_fadeSpeed);
        }
        // Fade in to Boss game immediately
        else if (_cutsceneType == eCutsceneType.BOSS_ROOM_START)
        {
            Invoke("OnPreCutsceneFadeOutCompleteEvent", 0.5f);
        }
        // Fade out from game -> no cutscene
        else
        {
            ScreenManager.FadeOutCompleteEvent += OnPostCutsceneFadeOutCompleteEvent;
            ScreenManager.FadeOut(_fadeSpeed);

            _currentCutscene = cutsceneType;
        }

        // Block player input
        if (InputManager.Instance != null)
        {
            InputManager.Instance.OnBlockInput(true);
        }
    }
Esempio n. 9
0
    //=====================================================

    public void OnBossRoomBossWinsEvent(ICutsceneObject cutsceneObject)
    {
        OnStartCutscene(eCutsceneType.BOSS_ROOM_BOSS_WINS, cutsceneObject);
    }
Esempio n. 10
0
    //=====================================================

    public void OnBossRoomBossLosesEvent(ICutsceneObject cutsceneObject)
    {
        OnStartCutscene(eCutsceneType.BOSS_ROOM_BOSS_LOSES, cutsceneObject);
    }
Esempio n. 11
0
    //=====================================================

    public void OnBossRoomStartEvent(ICutsceneObject cutsceneObject)
    {
        OnStartCutscene(eCutsceneType.BOSS_ROOM_START, cutsceneObject);
    }
Esempio n. 12
0
    //=====================================================

    public void OnKeyCollectedEvent(ICutsceneObject obj)
    {
        OnStartCutscene(eCutsceneType.COLLECT_KEY, obj);
    }