Exemple #1
0
    private void Awake()
    {
        instance             = this;
        OnCheckpointDone     = null;
        OnParkourSwitchState = null;
        timerByCheckpoint    = new List <float>();
        player          = GameObject.FindGameObjectWithTag("Player");
        playerRigidbody = player.GetComponent <Rigidbody>();
        playerMovement  = player.GetComponent <CharacterMove>();
        cameraMove      = player.GetComponent <CameraMove>();

        checkpoints        = GameObject.FindObjectsOfType <CheckPoint>().OrderBy(checkpoint => checkpoint.index).ToList <CheckPoint>();
        startingCheckpoint = GameObject.FindObjectOfType <StartingCheckpoint>();
        lastPos            = player.transform.position;
        lastRotation       = player.transform.rotation;


        spectatingCamera = GameObject.Find("SpectatingCamera");
        if (!spectatingCamera)
        {
            spectatingCamera = GameObject.FindGameObjectWithTag("SpectatingCamera");
        }

        targetBuffer  = new List <Transform>();
        hitBuffer     = new List <Hit>();
        triggerBuffer = new List <ParkourTrigger>();
        targets       = new List <Transform>();
        hits          = new List <Hit>();
    }
Exemple #2
0
 // Start is called before the first frame update
 void Start()
 {
     instance = ParkourManager.Instance();
     if (instance == null)
     {
         this.gameObject.SetActive(false);
         return;
     }
     textComponent = GetComponent <TextMeshProUGUI>();
 }
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag == "Player" && index > 0)
     {
         if (ParkourManager.Instance().PlayerEnterCheckpoint(index))
         {
             animator.SetTrigger("isDone");
             animator.ResetTrigger("isReset");
         }
     }
 }
 // Start is called before the first frame update
 void Start()
 {
     instance = ParkourManager.Instance();
     if (instance == null)
     {
         this.gameObject.SetActive(false);
         return;
     }
     timeTextComponent                = transform.Find("TimeFeedback").GetComponent <TextMeshProUGUI>();
     timeDiffTextComponent            = transform.Find("TimeDiffFeedback").GetComponent <TextMeshProUGUI>();
     initalSize                       = timeTextComponent.fontSize;
     ParkourManager.OnCheckpointDone += UpdateFeedback;
 }
Exemple #5
0
    public static void ResetGameplay()
    {
        ParkourManager instance = ParkourManager.Instance();

        instance.spectatingCamera.GetComponent <Camera>().enabled = false;
        instance.spectatingCamera.SetActive(false);
        instance.playerMovement.cam.GetComponent <Camera>().enabled = true;
        instance.playerMovement.enabled = true;
        instance.playerMovement.CanMove = false;
        instance.cameraMove.enabled     = true;
        instance.player.GetComponent <Animator>().Rebind();

        if (instance.firstRun)
        {
            instance.startingCheckpoint.StartRun();
        }
        else
        {
            instance.player.transform.position = instance.checkpoints[0].transform.position;
            instance.player.transform.rotation = Quaternion.identity;
            instance.playerRigidbody.velocity  = Vector3.zero;
            instance.timer          = 0;
            instance.lastCheckpoint = 0;
            instance.isFinished     = false;
            instance.isStarted      = false;

            foreach (var trigger in instance.triggerBuffer)
            {
                trigger.ResetTrigger();
            }
            instance.triggerBuffer.Clear();
            instance.targetBuffer.Clear();
            instance.hitBuffer.Clear();

            foreach (var checkpoint in instance.checkpoints)
            {
                checkpoint.ResetCheckpoint();
                instance.timerByCheckpoint.Clear();
            }
            instance.startingCheckpoint.ResetRun();
        }
        instance.firstRun = false;
        instance.SwitchParkourState(ParkourState.Gameplay);
    }
    public void SwitchCanvas(ParkourState state)
    {
        introCanvas.gameObject.SetActive(false);
        GameplayCanvas.gameObject.SetActive(false);
        ScoringCanvas.gameObject.SetActive(false);
        switch (state)
        {
        case ParkourState.Intro:
            introCanvas.gameObject.SetActive(true);
            parkourNameDisplay.text = ParkourManager.Instance().parkourData.displayName;
            break;

        case ParkourState.Gameplay:
            GameplayCanvas.gameObject.SetActive(true);
            break;

        case ParkourState.Scoring:
            scoringParkourNameDisplay.text = ParkourManager.Instance().parkourData.displayName;
            chronoDisplay.text             = ChronoUI.TimerToChrono(ParkourManager.Instance().GetTimer());
            chronoScoreDisplay.text        = ParkourManager.Instance().TimeScore().ToString();
            Dictionary <int, int> hits = new Dictionary <int, int>();
            int hitsScoreTotal         = 0;
            foreach (int i in Enum.GetValues(typeof(HitFeedback)))
            {
                hits.Add(i, 0);
            }
            foreach (var hit in ParkourManager.Instance().hits)
            {
                hits[(int)hit.feedback]++;
                hitsScoreTotal += hit.score;
            }
            hitsScore.text = hitsScoreTotal.ToString();
            for (int i = 0; i < hitType.Length; i++)
            {
                hitType[i].text = hits[i].ToString();
            }
            totalScore.text = ParkourManager.Instance().score.ToString();
            ScoringCanvas.gameObject.SetActive(true);
            break;
        }
    }
    public void Start()
    {
        ParkourManager.OnParkourSwitchState += SwitchCanvas;

        // Setup Retry buttons
        transform.Find("ScoringCanvas/Image/ButtonsRow/retry")
        .GetComponent <Button>()
        .onClick.AddListener(ParkourManager.ResetGameplay);

        transform.Find("ScoringCanvas/Image/ButtonsRowWithNextLevel/retry")
        .GetComponent <Button>()
        .onClick.AddListener(ParkourManager.ResetGameplay);


        // Next Level buttons
        Button button = transform.Find("ScoringCanvas/Image/ButtonsRowWithNextLevel/nextLevel")
                        .GetComponent <Button>();

        button.onClick.AddListener(() => { Loader.Load(ParkourManager.Instance().parkourData.nextParkour.scene.SceneName); });

        // Setup return menu buttons

        transform.Find("ScoringCanvas/Image/ButtonsRow/return")
        .GetComponent <Button>()
        .onClick.AddListener(ParkourManager.ResetGameplay);

        transform.Find("ScoringCanvas/Image/ButtonsRowWithNextLevel/return")
        .GetComponent <Button>()
        .onClick.AddListener(ParkourManager.ResetGameplay);

        if (ParkourManager.Instance().parkourData.nextParkour)
        {
            transform.Find("ScoringCanvas/Image/ButtonsRowWithNextLevel").gameObject.SetActive(true);
        }
        else
        {
            transform.Find("ScoringCanvas/Image/ButtonsRow").gameObject.SetActive(true);
        }
    }
Exemple #8
0
    // Update is called once per frame
    void Update()
    {
        if (ParkourManager.Instance())
        {
            if (ParkourManager.Instance().parkourState != ParkourState.Gameplay)
            {
                return;
            }
        }
        if (Input.GetButtonDown("Fire1") && !reloading)
        {
            if (amountOfBullets <= 0)
            {
                reloadMessage.text = "You need to reload ! (press R)";
            }
            else
            {
                shoot();
            }
        }

        if (getReloading() && Time.time - getReloadStartTime() > reloadingTime)
        {
            setReloading(false);
            reloadMessage.text = "";
        }
        if (getReloading())
        {
            reloadMessage.text = "Reloading";
        }
        if (Input.GetKeyDown("r") && getAmountOfBullets() < maxAmo)
        {
            reload();
        }
        if (bullets)
        {
            bullets.text = getAmountOfBullets().ToString();
        }
    }
Exemple #9
0
 // Update is called once per frame
 void Update()
 {
     textComponent.text = TimerToChrono(ParkourManager.Instance().GetTimer());
 }
 public void TriggerStartRun()
 {
     ParkourManager.Instance().StartRun();
     animator.ResetTrigger("Reset");
 }