Add timer to spelling bee
This commit is contained in:
@@ -31,36 +31,65 @@ public class SpellingBeeController : MonoBehaviour {
|
||||
// The input field for testing purposes
|
||||
public TMP_InputField input;
|
||||
|
||||
// Current value of timer in seconds
|
||||
private float timerValue;
|
||||
|
||||
// Timer display
|
||||
public TMP_Text timerText;
|
||||
|
||||
// Amount of seconds user gets per letter of the current word
|
||||
private int secondsPerLetter = 6;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start() {
|
||||
themeList = ThemeLoader.loadJson();
|
||||
|
||||
currentTheme = findThemeByName(PlayerPrefs.GetString("themeName"));
|
||||
words = currentTheme.words;
|
||||
|
||||
SetRandomWord();
|
||||
addSeconds(currentWord.Length * secondsPerLetter + 1);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update() {
|
||||
if (input.text.Length > 0) {
|
||||
if (Char.ToUpper(input.text[0]) == Char.ToUpper(currentWord[currentIndex]) && input.text.Length == 1) {
|
||||
letters[currentIndex].GetComponent<Image>().color = Color.green;
|
||||
input.text = "";
|
||||
currentIndex++;
|
||||
checkChar(input.text[0]);
|
||||
}
|
||||
|
||||
if (currentIndex >= currentWord.Length) {
|
||||
for (int i = 0; i < currentWord.Length; i++) {
|
||||
Destroy(letters[i]);
|
||||
}
|
||||
timerValue -= Time.deltaTime;
|
||||
|
||||
StartCoroutine(Wait());
|
||||
SetRandomWord();
|
||||
if (timerValue <= 0.0f)
|
||||
{
|
||||
timerValue = 0.0f;
|
||||
// Handle end of timer
|
||||
}
|
||||
|
||||
int minutes = Mathf.FloorToInt(timerValue / 60.0f);
|
||||
int seconds = Mathf.FloorToInt(timerValue % 60.0f);
|
||||
|
||||
timerText.text = string.Format("{0:00}:{1:00}", minutes, seconds);
|
||||
}
|
||||
|
||||
void checkChar(char letter) {
|
||||
if (Char.ToUpper(letter) == Char.ToUpper(currentWord[currentIndex]) && input.text.Length == 1) {
|
||||
letters[currentIndex].GetComponent<Image>().color = Color.green;
|
||||
input.text = "";
|
||||
currentIndex++;
|
||||
|
||||
if (currentIndex >= currentWord.Length) {
|
||||
for (int i = 0; i < currentWord.Length; i++) {
|
||||
Destroy(letters[i]);
|
||||
}
|
||||
|
||||
StartCoroutine(Wait());
|
||||
SetRandomWord();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void addSeconds(int seconds) {
|
||||
timerValue += (float) seconds;
|
||||
}
|
||||
|
||||
Theme findThemeByName(string themeName) {
|
||||
int themeIndex = 0;
|
||||
|
||||
@@ -87,6 +116,7 @@ public class SpellingBeeController : MonoBehaviour {
|
||||
currentWord = randomWord;
|
||||
changeSprite(randomWord);
|
||||
displayWord(randomWord);
|
||||
addSeconds(currentWord.Length * secondsPerLetter + 1);
|
||||
}
|
||||
|
||||
// Displays the word that needs to be spelled
|
||||
|
||||
@@ -28,6 +28,7 @@ public class SpellingBeeThemeSelectionController : MonoBehaviour {
|
||||
|
||||
// Then, add the button component to the game object
|
||||
Button buttonComponent = newButton.AddComponent<Button>();
|
||||
buttonComponent.onClick.AddListener(() => OnButtonClick(theme.name));
|
||||
|
||||
GameObject colorBox = new GameObject("Letter box");
|
||||
colorBox.transform.SetParent(newButton.transform);
|
||||
@@ -36,12 +37,11 @@ public class SpellingBeeThemeSelectionController : MonoBehaviour {
|
||||
background.color = Color.black;
|
||||
background.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UIMask.psd");
|
||||
|
||||
// Set the position of the button game object
|
||||
|
||||
// Create the text game object
|
||||
GameObject textObject = new GameObject("Text - " + theme.name);
|
||||
textObject.transform.SetParent(newButton.transform);
|
||||
|
||||
// Set the position of the button game object
|
||||
int xPos = (int) (i % 2 == 0 ? canvasWidth * 0.25f : canvasWidth * 0.75f);
|
||||
int yPos = (1 + i / 2) * 180;
|
||||
|
||||
@@ -51,38 +51,18 @@ public class SpellingBeeThemeSelectionController : MonoBehaviour {
|
||||
Text textComponent = textObject.AddComponent<Text>();
|
||||
textComponent.alignment = TextAnchor.MiddleCenter;
|
||||
|
||||
// Set the text content and font size
|
||||
textComponent.color = new Color(50, 50, 50);
|
||||
textComponent.text = theme.name;
|
||||
textComponent.rectTransform.sizeDelta = new Vector2(buttonWidth, buttonHeight);
|
||||
|
||||
// Set the parent of the text game object to the button game object
|
||||
textComponent.font = Resources.GetBuiltinResource<Font>("Arial.ttf");
|
||||
textComponent.fontSize = 36;
|
||||
buttonComponent.onClick.AddListener(() => OnButtonClick(theme.name));
|
||||
|
||||
// Set the size and position of the text game object
|
||||
/*
|
||||
RectTransform textTransform = textObject.GetComponent<RectTransform>();
|
||||
textTransform.sizeDelta = new Vector2(200, 50);
|
||||
textTransform.anchoredPosition = Vector2.zero;
|
||||
|
||||
// Set the parent of the button game object to the canvas
|
||||
newButton.transform.SetParent(canvas.transform, false);
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
void OnButtonClick(string clickedTheme)
|
||||
{
|
||||
Debug.Log("Button " + clickedTheme + " clicked!");
|
||||
PlayerPrefs.SetString("themeName", clickedTheme);
|
||||
ChangeSceneOnClick.loadScene("SpellingBee");
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
34
Assets/Scripts/Timer.cs
Normal file
34
Assets/Scripts/Timer.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class Timer : MonoBehaviour
|
||||
{
|
||||
private float timerValue;
|
||||
public Text timerText;
|
||||
|
||||
void Start()
|
||||
{
|
||||
timerValue = 0.0f;
|
||||
timerText = GetComponent<Text>();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
timerValue -= Time.deltaTime;
|
||||
|
||||
if (timerValue <= 0.0f)
|
||||
{
|
||||
timerValue = 0.0f;
|
||||
// Handle end of timer
|
||||
}
|
||||
|
||||
int minutes = Mathf.FloorToInt(timerValue / 60.0f);
|
||||
int seconds = Mathf.FloorToInt(timerValue % 60.0f);
|
||||
|
||||
timerText.text = string.Format("{0:00}:{1:00}", minutes, seconds);
|
||||
}
|
||||
|
||||
void addSeconds(int seconds) {
|
||||
timerValue += (float) seconds;
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/Timer.cs.meta
Normal file
11
Assets/Scripts/Timer.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 531e5c20048e1923fa3ed13005bd4a0b
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user