ofb/Assets/Scripts/DialogBoxes.cs

75 lines
1.9 KiB
C#
Raw Normal View History

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
2023-05-02 16:41:07 -07:00
using UnityEngine.UI;
public class DialogBoxes : MonoBehaviour
{
[Header("Dialog Messages:")]
[SerializeField] string[] dialogMessages;
private TMP_Text textField;
private int messageCount = 0;
2023-05-02 16:41:07 -07:00
[Header("Images:")]
[SerializeField] Image backgroundImageObject;
[SerializeField] Sprite[] images;
[Header("Buttons:")]
[SerializeField] GameObject backToMenuButton;
2023-05-02 16:41:07 -07:00
// Start is called before the first frame update
void Start()
{
textField = this.gameObject.GetComponent<TMP_Text>();
2023-05-02 16:41:07 -07:00
ReconfigureSpriteArray();
textField.text = dialogMessages[0];
2023-05-02 16:41:07 -07:00
backgroundImageObject.sprite = images[0];
}
void OnAdvanceDialog()
{
messageCount += 1;
if (messageCount < dialogMessages.Length)
{
textField.text = dialogMessages[messageCount];
2023-05-02 16:41:07 -07:00
backgroundImageObject.sprite = images[messageCount];
}
else
{ // no more dialog messages, advance the scene
if (backToMenuButton != null) {
backToMenuButton.SetActive(true);
} else {
SceneController.Instance.NextScene();
}
}
}
2023-05-02 16:41:07 -07:00
void ReconfigureSpriteArray()
{
2023-05-02 16:41:07 -07:00
// resize if need to
if (images.Length != dialogMessages.Length)
{
2023-05-02 16:41:07 -07:00
Sprite[] newImagesArray = new Sprite[dialogMessages.Length];
for (int i = 0; i < newImagesArray.Length; i++)
{
2023-05-02 16:41:07 -07:00
newImagesArray[i] = images[i];
}
images = newImagesArray;
}
// update empty slots
for (int i = 1; i < images.Length; i++)
{
if (images[i] == null)
{
images[i] = images[i - 1];
2023-05-02 16:41:07 -07:00
}
}
}
}