Example #1
0
    public void StartDeath(string[] newDeathText = null, string newDeathMusic = null)
    {
        PlayerOverworld.audioCurrTime = 0;
        if (!UnitaleUtil.IsOverworld)
        {
            UIController.instance.encounter.EndWave(true);
            autolinebreakstate = EnemyEncounter.script.GetVar("autolinebreak").Boolean;
            EnemyEncounter.script.SetVar("autolinebreak", DynValue.NewBoolean(true));
            transform.position = new Vector3(transform.position.x - Misc.cameraX, transform.position.y - Misc.cameraY, transform.position.z);
        }
        else
        {
            autolinebreakstate = true;
        }

        deathText  = newDeathText;
        deathMusic = newDeathMusic;

        //Reset the camera's position
        Misc.MoveCameraTo(0, 0);

        playerZ = 130;
        if (UnitaleUtil.IsOverworld)
        {
            playerParent = transform.parent.parent;
            playerIndex  = transform.parent.GetSiblingIndex();
            // transform.parent.SetParent(null);
        }
        else
        {
            playerParent = transform.parent;
            playerIndex  = transform.GetSiblingIndex();
            transform.SetParent(null);
        }

        if (UnitaleUtil.IsOverworld)
        {
            /* transform.parent.position = new Vector3(transform.parent.position.x - GameObject.Find("Main Camera OW").transform.position.x - 320,
             *                                      transform.parent.position.y - GameObject.Find("Main Camera OW").transform.position.y - 240, transform.parent.position.z); */
            battleCamera = GameObject.Find("Main Camera OW");
            battleCamera.SetActive(false);
            GetComponent <SpriteRenderer>().enabled = true; // stop showing the player
        }
        else
        {
            UIController.instance.encounter.gameOverStance = true;
            GetComponent <PlayerController>().invulTimer   = 0;
            GetComponent <Image>().enabled = true; // abort the blink animation if it was playing
            battleCamera = GameObject.Find("Main Camera");
            battleCamera.SetActive(false);

            battleContainer = GameObject.Find("Canvas");
            battleContainer.GetComponent <Canvas>().enabled = false;
        }

        // remove all bullets if in retrocompatibility mode
        if (GlobalControls.retroMode)
        {
            foreach (LuaProjectile p in FindObjectsOfType <LuaProjectile>())
            {
                BulletPool.instance.Requeue(p);
            }
        }

        /*battleContainer = new GameObject("BattleContainer");
         * foreach (Transform go in UnitaleUtil.GetFirstChildren(null, false))
         *  if (go.name != battleContainer.name &&!go.GetComponent<LuaEnemyEncounter>() && go.name != Player.name &&!go.name.Contains("AudioChannel"))
         *      go.SetParent(battleContainer.transform);
         * battleContainer.SetActive(false);*/

        if (UnitaleUtil.IsOverworld)
        {
            gameOverContainerOw.SetActive(true);
        }
        else
        {
            gameOverContainer.SetActive(true);
        }
        ScreenResolution.BoxCameras(Screen.fullScreen);

        Camera.main.GetComponent <AudioSource>().clip             = AudioClipRegistry.GetMusic("mus_gameover");
        GameObject.Find("GameOver").GetComponent <Image>().sprite = SpriteRegistry.Get("UI/spr_gameoverbg_0");

        if (UnitaleUtil.IsOverworld)
        {
            utHeart      = Instantiate(GameObject.Find("utHeart"));
            heartColor   = utHeart.GetComponent <Image>().color;
            heartColor.a = 1;
        }
        else
        {
            heartColor = gameObject.GetComponent <Image>().color;
            gameObject.transform.SetParent(GameObject.Find("Canvas GameOver").transform);
        }

        //if (overworld)
        //    gameObject.transform.SetParent(GameObject.Find("Canvas OW").transform);
        //else
        PlayerCharacter.instance.HP = PlayerCharacter.instance.MaxHP;
        if (UnitaleUtil.IsOverworld)
        {
            gameObject.transform.GetComponent <SpriteRenderer>().enabled = false;// gameObject.transform.parent.SetParent(GameObject.Find("Canvas GameOver").transform);
        }
        else
        {
            gameObject.transform.SetParent(GameObject.Find("Canvas GameOver").transform);
            UIStats.instance.setHP(PlayerCharacter.instance.MaxHP);
        }
        brokenHeartPrefab = Resources.Load <GameObject>("Prefabs/heart_broken");
        if (SpriteRegistry.GENERIC_SPRITE_PREFAB == null)
        {
            SpriteRegistry.GENERIC_SPRITE_PREFAB = Resources.Load <Image>("Prefabs/generic_sprite");
        }
        heartShardPrefab = SpriteRegistry.GENERIC_SPRITE_PREFAB.gameObject;
        reviveText       = GameObject.Find("ReviveText").GetComponent <TextManager>();
        reviveText.SetCaller(EnemyEncounter.script);
        reviveFade = GameObject.Find("ReviveFade").GetComponent <Image>();
        reviveFade.transform.SetAsLastSibling();
        gameOverTxt = GameObject.Find("TextParent").GetComponent <TextManager>();
        gameOverTxt.SetCaller(EnemyEncounter.script);
        gameOverImage = GameObject.Find("GameOver").GetComponent <Image>();
        if (UnitaleUtil.IsOverworld)
        {
            /*
             * heartPos = new Vector3(GetComponent<RectTransform>().position.x - transform.parent.position.x,
             *                     GetComponent<RectTransform>().position.y + (GetComponent<RectTransform>().sizeDelta.y / 2) - transform.parent.position.y,
             *                     GetComponent<RectTransform>().position.z + 100010);
             */
            heartPos = new Vector3((transform.parent.position.x - GameObject.Find("Canvas OW").transform.position.x) + 320,
                                   ((transform.parent.position.y + (GetComponent <RectTransform>().sizeDelta.y / 2)) - GameObject.Find("Canvas OW").transform.position.y) + 240,
                                   GetComponent <RectTransform>().position.z + 100010);
        }
        else
        {
            heartPos = gameObject.GetComponent <RectTransform>().position;
        }
        gameOverMusic = Camera.main.GetComponent <AudioSource>();
        started       = true;
    }