game(scripts): standardise LeaveHouseTrigger

This commit is contained in:
Mark Joshwel 2025-02-15 00:35:15 +08:00
parent e766ac354a
commit 5b8b7a6a1e

View file

@ -1,69 +1,65 @@
/* /*
Author: Reza, Wai Lam, Mark * Author: Reza, Wai Lam, Mark
Date: 10/2/25 * Date: 10/2/25
Description: Verifies whether tasks in the house are completed before going to the next scene * Description: Verifies whether tasks in the house are completed before going to the next scene
*/ */
using System.Collections; using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro; using TMPro;
using UnityEngine;
using UnityEngine.SceneManagement;
public class LeaveHouseTrigger : MonoBehaviour public class LeaveHouseTrigger : MonoBehaviour
{ {
// Name of the next scene // Name of the next scene
public string nextSceneName; public string nextSceneName;
public string Day3; public string day3;
public GameObject confirmationPanel; public GameObject confirmationPanel;
public TMP_Text warningText; public TMP_Text warningText;
public GameObject warningPanel; public GameObject warningPanel;
// Start is called before the first frame update // Start is called before the first frame update
void Start() private void Start()
{ {
confirmationPanel.SetActive(false); confirmationPanel.SetActive(false);
warningText.text = ""; warningText.text = "";
} }
private void OnTriggerEnter(Collider other) private void OnTriggerEnter(Collider other)
{ {
if (other.CompareTag("Player")) if (other.CompareTag("Player")) ShowConfirmationButtons();
{
ShowConfirmationButtons();
}
} }
void ShowConfirmationButtons() private void ShowConfirmationButtons()
{ {
// FIXED: possibly refer to purely GameManager.Instance instead of any // FIXED: possibly refer to purely GameManager.Instance instead of any
// early-bound reference to GameManager because the game manager might // early bound reference to GameManager because the game manager might
// not have died fast enough for other scripts to refer to the new // not have died fast enough for other scripts to refer to the new
// GameManager instance // GameManager instance
// keeping this here for future ref // keeping this here for future ref
// --mark // --mark
Debug.Log("Current Day in ShowConfirmationButtons: " + GameManager.Instance.currentDay);
confirmationPanel.SetActive(true);
warningPanel.SetActive(true);
Debug.Log("Current Day is: " + GameManager.Instance.currentDay);
if (GameManager.Instance.currentDay == 1)
{
Debug.Log("Setting text for Day 1");
warningText.text = "Should I leave the house? I might not have completed everything...";
}
else if (GameManager.Instance.currentDay == 2) Debug.Log("Current Day in ShowConfirmationButtons: " + GameManager.Instance.CurrentDay);
confirmationPanel.SetActive(true);
warningPanel.SetActive(true);
Debug.Log("Current Day is: " + GameManager.Instance.CurrentDay);
switch (GameManager.Instance.CurrentDay)
{ {
Debug.Log("Setting text for Day 2"); case 1:
warningText.text = "Do I even want to go to school..."; Debug.Log("Setting text for Day 1");
warningText.text = "Should I leave the house? I might not have completed everything...";
break;
case 2:
Debug.Log("Setting text for Day 2");
warningText.text = "Do I even want to go to school...";
break;
} }
StartCoroutine(HideWarningPanelAfterDelay(7f)); // can change how long you want the text to show for // can change how long you want the text to show for
StartCoroutine(HideWarningPanelAfterDelay(7f));
} }
IEnumerator HideWarningPanelAfterDelay(float delay) private IEnumerator HideWarningPanelAfterDelay(float delay)
{ {
yield return new WaitForSeconds(delay); yield return new WaitForSeconds(delay);
warningPanel.SetActive(false); warningPanel.SetActive(false);
@ -72,19 +68,20 @@ public class LeaveHouseTrigger : MonoBehaviour
public void ConfirmLeave() public void ConfirmLeave()
{ {
// Log player choices // Log player choices
GameManager.Instance.LogPlayerChoices(); GameManager.Instance.LogPlayerChoices();
// Load the next scene directly without needing to set the last scene // Load the next scene directly without needing to set the last scene
SceneManager.LoadScene(nextSceneName); SceneManager.LoadScene(nextSceneName);
} }
public void CancelLeave() public void CancelLeave()
{ {
if (GameManager.Instance.currentDay == 2) if (GameManager.Instance.CurrentDay == 2)
{ {
GameManager.Instance.IncrementDay(); GameManager.Instance.IncrementDay();
SceneManager.LoadScene(Day3); SceneManager.LoadScene(day3);
} }
confirmationPanel.SetActive(false); confirmationPanel.SetActive(false);
warningPanel.SetActive(true); warningPanel.SetActive(true);
} }