Theme selection screen

This commit is contained in:
lvrossem
2023-03-02 14:42:35 +01:00
parent 62ee8b9097
commit 49b91f062e
5 changed files with 244 additions and 603 deletions

View File

@@ -5,7 +5,7 @@ using UnityEngine.SceneManagement;
public class ChangeSceneOnClick : MonoBehaviour
{
public void loadScene(string sceneName) {
public static void loadScene(string sceneName) {
SceneManager.LoadScene(sceneName);
}
}

View File

@@ -34,7 +34,8 @@ public class SpellingBeeController : MonoBehaviour {
// Start is called before the first frame update
void Start() {
themeList = ThemeLoader.loadJson();
currentTheme = themeList.themes[0];
currentTheme = findThemeByName(PlayerPrefs.GetString("themeName"));
words = currentTheme.words;
SetRandomWord();
@@ -60,6 +61,21 @@ public class SpellingBeeController : MonoBehaviour {
}
}
Theme findThemeByName(string themeName) {
int themeIndex = 0;
while (themeIndex < themeList.themes.Length) {
Theme theme = themeList.themes[themeIndex];
if (theme.name == themeName) {
return theme;
}
themeIndex++;
}
Debug.Log("Requested theme not found");
return null;
}
// Pick a new random word from words and initialize the needed variables
void SetRandomWord() {
currentIndex = 0;

View File

@@ -0,0 +1,77 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class SpellingBeeThemeSelectionController : MonoBehaviour {
public Button buttonPrefab;
public Transform parentTransform;
// Start is called before the first frame update
void Start()
{
int canvasWidth = 1920;
int canvasHeight = 1080;
ThemeList themeList = ThemeLoader.loadJson();
for (int i = 0; i < themeList.themes.Length; i++) {
Theme theme = themeList.themes[i];
// First, you need to create a new button game object
GameObject newButton = new GameObject("Button - " + theme.name);
newButton.transform.SetParent(gameObject.transform);
// Then, add the button component to the game object
Button buttonComponent = newButton.AddComponent<Button>();
// 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);
int xPos = (int) (i % 2 == 0 ? canvasWidth * 0.25f : canvasWidth * 0.75f);
int yPos = (1 + i / 2) * 180;
newButton.transform.position = new Vector2(xPos, yPos);
// Add the text component to the game object
Text textComponent = textObject.AddComponent<Text>();
textComponent.alignment = TextAnchor.MiddleCenter;
// Set the text content and font size
textComponent.text = theme.name;
textComponent.rectTransform.sizeDelta = new Vector2(300, 120);
// Set the parent of the text game object to the button game object
textComponent.font = Resources.GetBuiltinResource<Font>("Arial.ttf");
textComponent.fontSize = 42;
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()
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 68caaa5508a4d40448b47630ff86f035
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: