void Start()
    {
        gameController       = GameObject.Find("GameController");
        gameControllerObject = gameController.GetComponent <GameControllerScript>();
        playerObject         = GameObject.Find("Player");

        if (SceneManager.GetActiveScene().name == "PrincessChamber")
        {
            demonKing             = GameObject.Find("DemonKing");
            demonKingObjectScript = demonKing.GetComponent <DemonKingScript>();
        }

        spriteObject = GetComponent <SpriteRenderer>();

        rigidBody2D = GetComponent <Rigidbody2D>();

        textObject       = GameObject.Find("Canvas").transform.GetChild(1).gameObject;
        textObjectScript = textObject.GetComponent <TextScript>();

        //initialize for the first movement
        previosPosition = rigidBody2D.position;
    }
예제 #2
0
    //Make protagonist appear at the right places when transitioning to new scenes
    void OnSceneLoaded(Scene scene, LoadSceneMode mode)
    {
        vCam                = GameObject.Find("CM vcam1");
        vCamObject          = vCam.GetComponent <CinemachineVirtualCamera>();
        vCamObject.m_Follow = playerObject.transform;

        currentSceneVar = sceneTransitionVariables[scene.name];
        playerObject.transform.localScale = currentSceneVar.Scale;
        playerObject.speed = currentSceneVar.Speed;

        playerObject.lookDirection  = currentSceneVar.Direction;
        playerRigidBody2D.position  = currentSceneVar.Position;
        playerObject.inTransition   = false;
        playerObject.lockedMovement = false;

        canvas.transform.GetChild(5).GetComponent <FadingScript>().continueMusic = false;

        switch (scene.name)
        {
        case "PrincessChamber":
            textObjectScript.virtualActivationFuntion("Chamber", playerRigidBody2D.position);
            //playerObject.textState = true;

            DemonKing                   = GameObject.Find("DemonKing");
            DemonKingObject             = DemonKing.GetComponent <DemonKingScript>();
            DemonKingObject.sceneLoaded = "PrincessChamber";
            break;

        case "DiningRoom":
            playerObject.lockedMovement = true;
            StartCoroutine(displayDialogueWithDelay(5f, "DiningTable"));
            break;

        case "FarmHut":
            //Debug.Log("Running FarmHut case");
            //Debug.Log(canvas.transform.GetChild(1).transform.GetChild(0).GetComponent<TextMeshProUGUI>().text);

            currentSceneVar.Direction = new Vector2(0, -1);
            currentSceneVar.Position  = new Vector2(-3.7f, 0.6f);

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);

            //Change letter name when boar food is done when entering the farm hut second time
            if (playerObject.hasFedPig)
            {
                GameObject.Find("CabinetWithLetter").name = "CabinetWithLetter2";
            }

            //Change letter name after day two
            if (currentText == "I’ll leave first thing tomorrow. ")
            {
                GameObject.Find("CabinetWithLetter2").name = "CabinetWithLetterDone";
            }

            //If it is not day two, change music
            if (currentText != "I’ll leave first thing tomorrow. ")
            {
                backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Overworld_town_music") as AudioClip;
                backgroundMusic.GetComponent <AudioSource>().Play();
            }
            break;

        case "Farm":
            sceneTransitionVariables["FarmHut"].Direction = new Vector2(0, 1);
            sceneTransitionVariables["FarmHut"].Position  = new Vector2(4.3f, -4.8f);

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);

            FatSeller = GameObject.Find("FatMerchant");
            FatSeller.SetActive(false);

            //Change market and carriage name when day two
            if (currentText == "I’ll leave first thing tomorrow. ")
            {
                Debug.Log("MarketChanged");
                GameObject.Find("MarketStandRed").name        = "MarketStandRed2";
                GameObject.Find("CarriageNotNextDayYet").name = "Carriage";
                GameObject.Find("MarketMerchant").SetActive(false);
                FatSeller.SetActive(true);
            }
            break;

        case "Forest":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/The_forest") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);

            DemonKing       = GameObject.Find("DemonKing");
            DemonKingObject = DemonKing.GetComponent <DemonKingScript>();
            DemonKingObject.playerObject = player;
            DemonKingObject.textObject   = canvas.transform.GetChild(1).gameObject;
            DemonKingObject.sceneLoaded  = "Forest";
            break;

        case "PushingStonePuzzle":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Cave_Music") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();

            playerObject.LightObject.SetActive(true);
            break;

        case "StoneMaze":
            playerObject.LightObject.SetActive(true);

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);
            break;

        case "Dilemma":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Game_Show") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();

            playerObject.LightObject.SetActive(false);

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);

            //var transformParticles = GameObject.Find("TransformParticles").GetComponent<ParticleSystem>();
            //transformParticles.Play();
            StartCoroutine(displayDialogueWithDelay(2.5f, "QuizDemon"));
            break;

        case "CropsPuzzleHouse":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Crops_Puzzle_Music_2") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();

            currentSceneVar.Direction = new Vector2(0, -1);
            currentSceneVar.Position  = new Vector2(3.7f, 0.6f);

            if (playerObject.inventoryAmount.ContainsKey("FullKey"))
            {
                playerObject.changeTagOnDialogue("CropsPuzzleHouse", "CabinetWithKey");
            }

            playerObject.LightObject.SetActive(false);
            canvas.transform.GetChild(0).gameObject.SetActive(true);

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);
            break;

        case "KeyPuzzle":
            sceneTransitionVariables["CropsPuzzleHouse"].Direction = new Vector2(0, 1);
            sceneTransitionVariables["CropsPuzzleHouse"].Position  = new Vector2(1.07f, 1.47f);

            canvas.transform.GetChild(0).gameObject.SetActive(false);
            break;

        case "CropsPuzzle":
            sceneTransitionVariables["CropsPuzzleHouse"].Direction = new Vector2(0, 1);
            sceneTransitionVariables["CropsPuzzleHouse"].Position  = new Vector2(-4.3f, -4.8f);

            playerObject.LightObject.SetActive(false);

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);

            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Crops_Puzzle_Music_2") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();
            break;

        case "Beach":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/PrincessDemonKing") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();

            GameObject.Find("InventoryBar").SetActive(false);

            playerObject.LightObject.SetActive(false);

            canvas.transform.GetChild(5).GetComponent <FadingScript>().continueMusic = true;

            playerAnimator.runtimeAnimatorController = Resources.Load("Art/Animation/Controller/Protagonist") as RuntimeAnimatorController;
            playerSpriteRenderer.sprite = Resources.Load("Art/Animation/Sprites/ProtagSpriteSheet1stTo3rd") as Sprite;
            playerBoxCollider.offset    = new Vector2(0.015f, 0.27f);
            playerBoxCollider.size      = new Vector2(0.53f, 0.4f);
            StartCoroutine(displayDialogueWithDelay(2.5f, "1DemonKingBeach"));
            break;

        case "DiningRoomFinale":
            if (currentText.Contains("Wait here until I return."))
            {
                StartCoroutine(displayDialogueWithDelay(2.5f, "EndingOne"));
                playerObject.lockedMovement = true;
            }
            else
            {
                StartCoroutine(displayDialogueWithDelay(2.5f, "EndingTwo"));
                playerObject.lockedMovement = true;
            }
            playerSpriteRenderer.sortingLayerName = "Default";

            break;

        case "Sunset":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Epilogue") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();

            canvas.transform.GetChild(5).GetComponent <FadingScript>().continueMusic = true;

            playerObject.lockedMovement = true;
            StartCoroutine(transitionToScene(8, "Ending"));
            break;

        case "Ending":
            playerObject.lockedMovement = true;
            break;

        case "EndingTwo":
            backgroundMusic.GetComponent <AudioSource>().clip = Resources.Load("Audio/Epilogue") as AudioClip;
            backgroundMusic.GetComponent <AudioSource>().Play();
            playerObject.lockedMovement = true;
            break;
        }
    }