Example #1
0
    public void RegisterTrigger(FloorTrigger trigger)
    {
        GameHandler gameHandler = GameHandler.instance;
        Floor       chosenFloor = floors[trigger.floorIndex];


        StopAllCoroutines();
        for (int i = 0; i < floors.Length; i++)
        {
            if (i == trigger.floorIndex)
            {
                continue;
            }
            Floor floor = floors[i];
            //Debug.Log(floor.obj.name + " | " + (floor.bg == null) + i.ToString() );

            if (floor.obj.GetComponentInChildren <Renderer>().material.color.a < 1)
            {
                if (floor.bg != null)
                {
                    StartCoroutine(gameHandler.Fade(floor.bg, 0.1f, "out"));
                }
                StartCoroutine(gameHandler.Fade(floor.obj, 0.2f, "in"));
            }
            if (floor.bg != null)
            {
                //Debug.Log(floor.bg.name);
                Renderer[] bgRenderers = floor.bg.GetComponentsInChildren <Renderer>();
                foreach (Renderer renderer in bgRenderers)
                {
                    Color color = renderer.material.color;
                    color.a = 0;
                    renderer.material.color = color;
                }
            }

            floor.obj.GetComponent <Collider2D>().enabled = true;
        }

        if (trigger.mode == FloorTrigger.Mode.entry)
        {
            StartCoroutine(gameHandler.Fade(chosenFloor.obj, 0.5f, "out"));
            if (chosenFloor.bg != null)
            {
                StartCoroutine(gameHandler.Fade(chosenFloor.bg, 0.2f, "in"));
            }
            chosenFloor.obj.GetComponent <Collider2D>().enabled = false;
        }
        else
        {
            StartCoroutine(gameHandler.Fade(chosenFloor.obj, 0.2f, "in"));
            if (chosenFloor.bg != null)
            {
                StartCoroutine(gameHandler.Fade(chosenFloor.bg, 0.5f, "out"));
            }
            //   chosenFloor.obj.GetComponent<Collider2D>().enabled = true;
        }
    }
Example #2
0
    private void OnTriggerExit(Collider other)
    {
        FloorTrigger floor = other.gameObject.GetComponent <FloorTrigger>();

        if (floor == null)
        {
            return;
        }

        OnFloorExit?.Invoke();
    }
Example #3
0
 /// <summary>
 /// Checks if the specified <see cref="FloorTrigger"/> has been triggered by the environnement.
 /// </summary>
 /// <param name="trigger"><see cref="FloorTrigger"/></param>
 /// <returns><c>True</c> if triggered; <c>False</c> otherwise.</returns>
 internal bool IsTriggered(FloorTrigger trigger)
 {
     return(trigger.Overlap(Player) || CurrentScreen.Enemies.Any(e => trigger.Overlap(e)));
 }