Exemple #1
0
    void Update()
    {
        if (active_puzzle)
        {
            if (door_puzzle_level2 != null)
            {
                if (door_puzzle_level2.GetComponent <DoorLevel2>().door_closed&& phase_active == 0)
                {
                    phase_active = 1;
                    countdown.StartCountdown();
                }
            }

            if (phase_active > 0)
            {
                actualtime_puzzle += Time.deltaTime;
            }

            if (phase_active == 1 && actualtime_puzzle >= phase1)
            {
                phase_active          = 2;
                actualtime_projectils = 0.0f;
            }
            else if (phase_active == 2 && actualtime_puzzle >= phase1 + phase2)
            {
                phase_active          = 3;
                actualtime_projectils = 0.0f;
            }
            else if (phase_active == 3 && actualtime_puzzle >= phase1 + phase2 + phase3)
            {
                phase_active = 4;
            }
            else if (phase_active == 4 && actualtime_puzzle >= phase1 + phase2 + phase3 + wait_open_exit_door)
            {
                if (door_puzzle_level2_exit != null)
                {
                    door_puzzle_level2_exit.GetComponent <DoorLevel2>().OpenDoor();
                }
                active_puzzle = false;
                countdown.StopCountdown();
                phase_active = -1;
            }


            switch (phase_active)
            {
            case 1:
                if (actualtime_projectils >= phase1_projects_per_time)
                {
                    if (last_shoot > 0)
                    {
                        ApplyProjectil(Random.Range(1, number_projectils, last_shoot));
                        int shoot_two = Random.Range(1, 100);
                        if (shoot_two <= probability_two_shoots)
                        {
                            ApplyProjectil(Random.Range(1, number_projectils, last_shoot));
                        }
                        actualtime_projectils = 0.0f;
                    }
                    else
                    {
                        ApplyProjectil(Random.Range(1, number_projectils));
                        actualtime_projectils = 0.0f;
                    }
                }
                else
                {
                    actualtime_projectils += Time.deltaTime;
                }
                break;

            case 2:
                if (actualtime_projectils >= phase2_projects_per_time)
                {
                    ApplyProjectil(Random.Range(1, number_projectils, last_shoot));
                    int shoot_two = Random.Range(1, 100);
                    if (shoot_two <= probability_two_shoots)
                    {
                        ApplyProjectil(Random.Range(1, number_projectils, last_shoot));
                    }
                    actualtime_projectils = 0.0f;
                }
                else
                {
                    actualtime_projectils += Time.deltaTime;
                }
                break;

            case 3:
                if (actualtime_projectils >= phase3_projects_per_time)
                {
                    ApplyProjectil(Random.Range(1, number_projectils, last_shoot));
                    int shoot_two = Random.Range(1, 100);
                    if (shoot_two <= probability_two_shoots)
                    {
                        ApplyProjectil(Random.Range(1, number_projectils, last_shoot));
                    }
                    actualtime_projectils = 0.0f;
                }
                else
                {
                    actualtime_projectils += Time.deltaTime;
                }
                break;
            }
        }
    }
Exemple #2
0
    void Update()
    {
        //-- TMP: Debug -----

        /*  if(on_lever_animation && anim_controller.IsAnimationStopped(lever_animation_name))
         * {
         *    OnLeverAnimFinish();
         * }*/

        //-- Lever Triggered -----
        if (on_lever_range && !active_lever && !on_lever_animation)
        {
            //TODO: Change to GetKey_Action
            if (Input.GetInput_KeyDown("Interact", "Player"))
            {
                //Reset other puzzles if exists to avoid audio conflicts
                if (other_lever_1 != null)
                {
                    other_lever_1.GetComponent <Lever>().ResetPuzzle();
                    other_lever_1.GetComponent <PuzzleCountdown>().StopCountdown();
                }
                if (other_lever_2 != null)
                {
                    other_lever_2.GetComponent <Lever>().ResetPuzzle();
                    other_lever_2.GetComponent <PuzzleCountdown>().StopCountdown();
                }

                SetOrientationVectors();
                OnLeverActivated();
                GetComponent <CompAudio>().PlayEvent("Lever");
                lever_interact.SetActive(false);
            }
        }

        //---------------------

        if (on_lever_animation)
        {
            anim_controller = lever_go.GetComponent <CompAnimation>();
            if (anim_controller != null)
            {
                if (anim_controller.IsAnimationStopped(lever_animation_name))
                {
                    // The lever animation has stopped so puzzle must start.
                    OnLeverAnimFinish();
                }
            }
        }

        if (active_lever)
        {
            if (!phase1) // Set info all barrels
            {
                SetInfo(line1, 0);
                SetInfo(line2, 1);
                SetInfo(line3, 2);
                SetInfo(line4, 3);
                SetInfo(line5, 4);
                SetInfo(line6, 5);
                phase1 = true;
            }
            if (!phase2) // Move barrels mode.PUZZLE
            {
                MoveBarrels(line1);
                MoveBarrels(line2);
                MoveBarrels(line3);
                MoveBarrels(line4);
                MoveBarrels(line5);
                MoveBarrels(line6);
                phase3     = true;
                phase2     = true;
                phase_wait = true;
                time       = Time.realtimeSinceStartup + delay_second_mode;
                audio.PlayEvent("Chain");
                MoveChains(true);
            }

            if (phase_wait) // wait to move the other mode
            {
                // Wait delay to move other barrels
                float time_transcured = Time.realtimeSinceStartup;
                if (time_transcured >= time)
                {
                    phase3     = false;
                    phase_wait = false;
                }
            }
            if (!phase3) // Move barrels mode.FILLING
            {
                MoveBarrels(line1, true);
                MoveBarrels(line2, true);
                MoveBarrels(line3, true);
                MoveBarrels(line4, true);
                MoveBarrels(line5, true);
                MoveBarrels(line6, true);
                phase3  = true;
                editmap = true;
            }

            if (fill_barrel != null && fill_barrel.IsPlaced() == true)
            {
                if (editmap)
                {
                    audio.StopEvent("Chain");
                    SetPathWalkable(0, 3);
                    editmap = false;
                    countdown.StartCountdown();
                    MoveChains(false);
                }
                else if (countdown.IsCountdownOver())
                {
                    ResetPuzzle();
                }
            }
        }
    }