85 lines
28 KiB
C#
85 lines
28 KiB
C#
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
using System.IO;
|
||
|
||
namespace InterfaceOff
|
||
{
|
||
[System.Serializable] public struct TriviaQuestion
|
||
{
|
||
/* Disables name warnings because of JSON serialization */
|
||
|
||
// ReSharper disable once InconsistentNaming
|
||
public string question;
|
||
|
||
// ReSharper disable once InconsistentNaming
|
||
public string[] choices;
|
||
|
||
// ReSharper disable once InconsistentNaming
|
||
public string answer;
|
||
}
|
||
|
||
[System.Serializable] public struct TriviaSet
|
||
{
|
||
/* Disables name warnings because of JSON serialization */
|
||
|
||
// ReSharper disable once InconsistentNaming
|
||
public TriviaQuestion[] questions;
|
||
}
|
||
|
||
public class TriviaWindow : WindowBase
|
||
{
|
||
private static TriviaSet Trivia;
|
||
|
||
private static Vector2[] Positions { get; } =
|
||
{
|
||
new(-110, 30f),
|
||
new(110f, 30f),
|
||
new(-110, -60),
|
||
new(110f, -60)
|
||
};
|
||
|
||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
||
private static void LoadTriviaSet()
|
||
{
|
||
const string json = "{\n \"questions\" : [\n {\n \"question\" : \"2 + 2?\",\n \"choices\" : [\n \"3\",\n \"4\",\n \"5\",\n \"6\"\n ],\n \"answer\" : \"4\"\n },\n {\n \"question\" : \"What is the capital of France?\",\n \"choices\" : [\n \"Paris\",\n \"Rome\",\n \"Berlin\",\n \"Madrid\"\n ],\n \"answer\" : \"Paris\"\n },\n {\n \"question\" : \"What color is the sky?\",\n \"choices\" : [\n \"Blue\",\n \"Green\",\n \"Red\",\n \"Yellow\"\n ],\n \"answer\" : \"Blue\"\n },\n {\n \"question\" : \"What color is grass?\",\n \"choices\" : [\n \"Green\",\n \"Blue\",\n \"Red\",\n \"White\"\n ],\n \"answer\" : \"Green\"\n },\n {\n \"question\" : \"What is the opposite of hot?\",\n \"choices\" : [\n \"Cold\",\n \"Warm\",\n \"Dry\",\n \"Wet\"\n ],\n \"answer\" : \"Cold\"\n },\n {\n \"question\" : \"Which direction does the sun rise?\",\n \"choices\" : [\n \"East\",\n \"West\",\n \"North\",\n \"South\"\n ],\n \"answer\" : \"East\"\n },\n {\n \"question\" : \"How many days are there in a week?\",\n \"choices\" : [\n \"5\",\n \"6\",\n \"7\",\n \"8\"\n ],\n \"answer\" : \"7\"\n },\n {\n \"question\" : \"How many hours are there in a day?\",\n \"choices\" : [\n \"12\",\n \"18\",\n \"24\",\n \"36\"\n ],\n \"answer\" : \"24\"\n },\n {\n \"question\" : \"How many letters are in the alphabet?\",\n \"choices\" : [\n \"24\",\n \"25\",\n \"26\",\n \"27\"\n ],\n \"answer\" : \"26\"\n },\n {\n \"question\" : \"Earth is a?\",\n \"choices\" : [\n \"Star\",\n \"Planet\",\n \"Moon\",\n \"Comet\"\n ],\n \"answer\" : \"Planet\"\n },\n {\n \"question\" : \"What is the largest planet in the solar system?\",\n \"choices\" : [\n \"Earth\",\n \"Mars\",\n \"Jupiter\",\n \"Venus\"\n ],\n \"answer\" : \"Jupiter\"\n },\n {\n \"question\" : \"Which number is the smallest?\",\n \"choices\" : [\n \"1\",\n \"-5\",\n \"10\",\n \"-100\"\n ],\n \"answer\" : \"-100\"\n },\n {\n \"question\" : \"What is the opposite of up?\",\n \"choices\" : [\n \"Down\",\n \"Left\",\n \"Right\",\n \"Around\"\n ],\n \"answer\" : \"Down\"\n },\n {\n \"question\" : \"What temperature does water freeze at?\",\n \"choices\" : [\n \"0°C\",\n \"50°C\",\n \"100°C\",\n \"10°C\"\n ],\n \"answer\" : \"0°C\"\n },\n {\n \"question\" : \"What is the fastest land animal?\",\n \"choices\" : [\n \"Dog\",\n \"Horse\",\n \"Cheetah\",\n \"Cat\"\n ],\n \"answer\" : \"Cheetah\"\n },\n {\n \"question\" : \"What do humans breathe?\",\n \"choices\" : [\n \"Oxygen\",\n \"Carbon\",\n \"Helium\",\n \"Smoke\"\n ],\n \"answer\" : \"Oxygen\"\n },\n {\n \"question\" : \"What shape has 3 sides?\",\n \"choices\" : [\n \"Square\",\n \"Triangle\",\n \"Circle\",\n \"Oval\"\n ],\n \"answer\" : \"Triangle\"\n },\n {\n \"question\" : \"What shape has 4 sides?\",\n \"choices\" : [\n \"Triangle\",\n \"Square\",\n \"Circle\",\n \"Star\"\n ],\n \"answer\" : \"Square\"\n },\n {\n \"question\" : \"Which of these is a Primary color?\",\n \"choices\" : [\n \"Blue\",\n \"Pink\",\n \"Brown\",\n \"Gray\"\n ],\n \"answer\" : \"Blue\"\n },\n {\n \"question\" : \"What is the opposite of big?\",\n \"choices\" : [\n \"Small\",\n \"Tall\",\n \"Wide\",\n \"Long\"\n ],\n \"answer\" : \"Small\"\n },\n {\n \"question\" : \"Fire is?\",\n \"choices\" : [\n \"Hot\",\n \"Cold\",\n \"Wet\",\n \"Soft\"\n ],\n \"answer\" : \"Hot\"\n },\n {\n \"question\" : \"Ice is?\",\n \"choices\" : [\n \"Cold\",\n \"Hot\",\n \"Dry\",\n \"Hard\"\n ],\n \"answer\" : \"Cold\"\n },\n {\n \"question\" : \"Which day is after Monday?\",\n \"choices\" : [\n \"Tuesday\",\n \"Sunday\",\n \"Friday\",\n \"Saturday\"\n ],\n \"answer\" : \"Tuesday\"\n },\n {\n \"question\" : \"Which of these days are on a weekend?\",\n \"choices\" : [\n \"Monday\",\n \"Tuesday\",\n \"Saturday\",\n \"Wednesday\"\n ],\n \"answer\" : \"Saturday\"\n },\n {\n \"question\" : \"What is the color of a banana?\",\n \"choices\" : [\n \"Yellow\",\n \"Blue\",\n \"Red\",\n \"Purple\"\n ],\n \"answer\" : \"Yellow\"\n },\n {\n \"question\" : \"What is the color of an apple?\",\n \"choices\" : [\n \"Red\",\n \"Blue\",\n \"Black\",\n \"Pink\"\n ],\n \"answer\" : \"Red\"\n },\n {\n \"question\" : \"Where do Fish live?\",\n \"choices\" : [\n \"Water\",\n \"Air\",\n \"Sand\",\n \"Fire\"\n ],\n \"answer\" : \"Water\"\n },\n {\n \"question\" : \"What is the opposite of fast?\",\n \"choices\" : [\n \"Slow\",\n \"Quick\",\n \"Sharp\",\n \"Bright\"\n ],\n \"answer\" : \"Slow\"\n },\n {\n \"question\" : \"What is the sun?\",\n \"choices\" : [\n \"Star\",\n \"Planet\",\n \"Moon\",\n \"Rock\"\n ],\n \"answer\" : \"Star\"\n },\n {\n \"question\" : \"What does the moon orbit?\",\n \"choices\" : [\n \"Earth\",\n \"Sun\",\n \"Mars\",\n \"Jupiter\"\n ],\n \"answer\" : \"Earth\"\n },\n {\n \"question\" : \"How many legs does a human have?\",\n \"choices\" : [\n \"2\",\n \"4\",\n \"6\",\n \"8\"\n ],\n \"answer\" : \"2\"\n },\n {\n \"question\" : \"How many eyes does a human have?\",\n \"choices\" : [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n \"answer\" : \"2\"\n },\n {\n \"question\" : \"Snow color is snow?\",\n \"choices\" : [\n \"White\",\n \"Black\",\n \"Red\",\n \"Green\"\n ],\n \"answer\" : \"White\"\n },\n {\n \"question\" : \"What is the opposite of open?\",\n \"choices\" : [\n \"Closed\",\n \"Wide\",\n \"Large\",\n \"Empty\"\n ],\n \"answer\" : \"Closed\"\n },\n {\n \"question\" : \"What color is milk?\",\n \"choices\" : [\n \"White\",\n \"Blue\",\n \"Brown\",\n \"Yellow\"\n ],\n \"answer\" : \"White\"\n },\n {\n \"question\" : \"What does fire need to stay alight?\",\n \"choices\" : [\n \"Oxygen\",\n \"Water\",\n \"Ice\",\n \"Sand\"\n ],\n \"answer\" : \"Oxygen\"\n },\n {\n \"question\" : \"What is the opposite of full?\",\n \"choices\" : [\n \"Empty\",\n \"Large\",\n \"Wide\",\n \"Heavy\"\n ],\n \"answer\" : \"Empty\"\n },\n {\n \"question\" : \"What color is the sky during the day?\",\n \"choices\" : [\n \"Blue\",\n \"Black\",\n \"Green\",\n \"Gray\"\n ],\n \"answer\" : \"Blue\"\n },\n {\n \"question\" : \"What color is the sky during the night?\",\n \"choices\" : [\n \"Black\",\n \"Blue\",\n \"Green\",\n \"Red\"\n ],\n \"answer\" : \"Black\"\n },\n {\n \"question\" : \"2 + 3 =\",\n \"choices\" : [\n \"4\",\n \"5\",\n \"6\",\n \"7\"\n ],\n \"answer\" : \"5\"\n },\n {\n \"question\" : \"5 - 2 =\",\n \"choices\" : [\n \"2\",\n \"3\",\n \"4\",\n \"5\"\n ],\n \"answer\" : \"3\"\n },\n {\n \"question\" : \"10 / 2 =\",\n \"choices\" : [\n \"2\",\n \"4\",\n \"5\",\n \"10\"\n ],\n \"answer\" : \"5\"\n },\n {\n \"question\" : \"3 × 3 =\",\n \"choices\" : [\n \"6\",\n \"8\",\n \"9\",\n \"12\"\n ],\n \"answer\" : \"9\"\n },\n {\n \"question\" : \"What is the opposite of left?\",\n \"choices\" : [\n \"Right\",\n \"Up\",\n \"Down\",\n \"Back\"\n ],\n \"answer\" : \"Right\"\n },\n {\n \"question\" : \"What is the color of the sun?\",\n \"choices\" : [\n \"Yellow\",\n \"Blue\",\n \"Green\",\n \"Purple\"\n ],\n \"answer\" : \"Yellow\"\n },\n {\n \"question\" : \"What do fish breathe through?\",\n \"choices\" : [\n \"Gills\",\n \"Lungs\",\n \"Skin\",\n \"Fire\"\n ],\n \"answer\" : \"Gills\"\n },\n {\n \"question\" : \"What is the opposite of loud?\",\n \"choices\" : [\n \"Quiet\",\n \"Fast\",\n \"Sharp\",\n \"Bright\"\n ],\n \"answer\" : \"Quiet\"\n },\n {\n \"question\" : \"What is the color of fire?\",\n \"choices\" : [\n \"Red\",\n \"Blue\",\n \"Green\",\n \"White\"\n ],\n \"answer\" : \"Red\"\n },\n {\n \"question\" : \"What is the capital of Italy?\",\n \"choices\" : [\n \"Rome\",\n \"Paris\",\n \"Berlin\",\n \"Madrid\"\n ],\n \"answer\" : \"Rome\"\n },\n {\n \"question\" : \"What is the largest ocean?\",\n \"choices\" : [\n \"Pacific\",\n \"Atlantic\",\n \"Indian\",\n \"Arctic\"\n ],\n \"answer\" : \"Pacific\"\n },\n {\n \"question\" : \"What is the color of a firetruck?\",\n \"choices\" : [\n \"Red\",\n \"Blue\",\n \"Green\",\n \"Yellow\"\n ],\n \"answer\" : \"Red\"\n },\n {\n \"question\" : \"What is the color of a banana?\",\n \"choices\" : [\n \"Yellow\",\n \"Red\",\n \"Blue\",\n \"Purple\"\n ],\n \"answer\" : \"Yellow\"\n },\n {\n \"question\" : \"What planet is known for its rings?\",\n \"choices\" : [\n \"Saturn\",\n \"Mars\",\n \"Earth\",\n \"Venus\"\n ],\n \"answer\" : \"Saturn\"\n },\n {\n \"question\" : \"What is the largest land animal?\",\n \"choices\" : [\n \"Elephant\",\n \"Lion\",\n \"Horse\",\n \"Bear\"\n ],\n \"answer\" : \"Elephant\"\n },\n {\n \"question\" : \"What is the tallest tree type?\",\n \"choices\" : [\n \"Redwood\",\n \"Pine\",\n \"Oak\",\n \"Birch\"\n ],\n \"answer\" : \"Redwood\"\n },\n {\n \"question\" : \"Which celestial body does the Earth rotate around?\",\n \"choices\" : [\n \"Sun\",\n \"Moon\",\n \"Mars\",\n \"Jupiter\"\n ],\n \"answer\" : \"Sun\"\n },\n {\n \"question\" : \"Which celestial body does the moon orbit?\",\n \"choices\" : [\n \"Earth\",\n \"Sun\",\n \"Mars\",\n \"Venus\"\n ],\n \"answer\" : \"Earth\"\n },\n {\n \"question\" : \"What is the largest desert?\",\n \"choices\" : [\n \"Sahara\",\n \"Gobi\",\n \"Kalahari\",\n \"Arctic\"\n ],\n \"answer\" : \"Sahara\"\n },\n {\n \"question\" : \"What is the smallest continent?\",\n \"choices\" : [\n \"Australia\",\n \"Europe\",\n \"Asia\",\n \"Africa\"\n ],\n \"answer\" : \"Australia\"\n },\n {\n \"question\" : \"What is the largest continent?\",\n \"choices\" : [\n \"Asia\",\n \"Africa\",\n \"Europe\",\n \"Antarctica\"\n ],\n \"answer\" : \"Asia\"\n },\n {\n \"question\" : \"What planet is closest to the Sun?\",\n \"choices\" : [\n \"Mercury\",\n \"Venus\",\n \"Earth\",\n \"Mars\"\n ],\n \"answer\" : \"Mercury\"\n },\n {\n \"question\" : \"What planet is farthest from the Sun?\",\n \"choices\" : [\n \"Neptune\",\n \"Mars\",\n \"Earth\",\n \"Venus\"\n ],\n \"answer\" : \"Neptune\"\n },\n {\n \"question\" : \"What bird cannot fly?\",\n \"choices\" : [\n \"Ostrich\",\n \"Eagle\",\n \"Sparrow\",\n \"Parrot\"\n ],\n \"answer\" : \"Ostrich\"\n },\n {\n \"question\" : \"Which mammal can fly?\",\n \"choices\" : [\n \"Bat\",\n \"Cat\",\n \"Dog\",\n \"Horse\"\n ],\n \"answer\" : \"Bat\"\n },\n {\n \"question\" : \"What animal has a trunk?\",\n \"choices\" : [\n \"Elephant\",\n \"Rhino\",\n \"Horse\",\n \"Lion\"\n ],\n \"answer\" : \"Elephant\"\n },\n {\n \"question\" : \"What animal has stripes?\",\n \"choices\" : [\n \"Tiger\",\n \"Lion\",\n \"Bear\",\n \"Elephant\"\n ],\n \"answer\" : \"Tiger\"\n },\n {\n \"question\" : \"What animal lays eggs?\",\n \"choices\" : [\n \"Chicken\",\n \"Dog\",\n \"Cat\",\n \"Cow\"\n ],\n \"answer\" : \"Chicken\"\n },\n {\n \"question\" : \"Largest planet in solar system?\",\n \"choices\" : [\n \"Jupiter\",\n \"Mars\",\n \"Earth\",\n \"Venus\"\n ],\n \"answer\" : \"Jupiter\"\n },\n {\n \"question\" : \"Smallest planet in the solar system?\",\n \"choices\" : [\n \"Mercury\",\n \"Mars\",\n \"Venus\",\n \"Earth\"\n ],\n \"answer\" : \"Mercury\"\n },\n {\n \"question\" : \"What direction is the opposite of up?\",\n \"choices\" : [\n \"Down\",\n \"Left\",\n \"Right\",\n \"Back\"\n ],\n \"answer\" : \"Down\"\n },\n {\n \"question\" : \"Hot drink from beans?\",\n \"choices\" : [\n \"Coffee\",\n \"Tea\",\n \"Milk\",\n \"Water\"\n ],\n \"answer\" : \"Coffee\"\n },\n {\n \"question\" : \"What is the day after Sunday?\",\n \"choices\" : [\n \"Monday\",\n \"Tuesday\",\n \"Saturday\",\n \"Friday\"\n ],\n \"answer\" : \"Monday\"\n },\n {\n \"question\" : \"What is the longest river?\",\n \"choices\" : [\n \"Nile\",\n \"Amazon\",\n \"Yangtze\",\n \"Mississippi\"\n ],\n \"answer\" : \"Nile\"\n },\n {\n \"question\" : \"What is the highest mountain?\",\n \"choices\" : [\n \"Everest\",\n \"K2\",\n \"Kangchenjunga\",\n \"Denali\"\n ],\n \"answer\" : \"Everest\"\n },\n {\n \"question\" : \"What is the largest country?\",\n \"choices\" : [\n \"Russia\",\n \"Canada\",\n \"China\",\n \"USA\"\n ],\n \"answer\" : \"Russia\"\n },\n {\n \"question\" : \"Language spoken in Spain?\",\n \"choices\" : [\n \"Spanish\",\n \"French\",\n \"German\",\n \"Italian\"\n ],\n \"answer\" : \"Spanish\"\n },\n {\n \"question\" : \"Language spoken in France?\",\n \"choices\" : [\n \"French\",\n \"Spanish\",\n \"English\",\n \"German\"\n ],\n \"answer\" : \"French\"\n },\n {\n \"question\" : \"Language spoken in Germany?\",\n \"choices\" : [\n \"German\",\n \"English\",\n \"Spanish\",\n \"Italian\"\n ],\n \"answer\" : \"German\"\n },\n {\n \"question\" : \"Language spoken in Italy?\",\n \"choices\" : [\n \"Italian\",\n \"French\",\n \"Spanish\",\n \"German\"\n ],\n \"answer\" : \"Italian\"\n },\n {\n \"question\" : \"Hot beverage from leaves?\",\n \"choices\" : [\n \"Tea\",\n \"Coffee\",\n \"Milk\",\n \"Water\"\n ],\n \"answer\" : \"Tea\"\n },\n {\n \"question\" : \"Round fruit, red or green?\",\n \"choices\" : [\n \"Apple\",\n \"Banana\",\n \"Orange\",\n \"Grape\"\n ],\n \"answer\" : \"Apple\"\n },\n {\n \"question\" : \"Long yellow fruit?\",\n \"choices\" : [\n \"Banana\",\n \"Apple\",\n \"Orange\",\n \"Mango\"\n ],\n \"answer\" : \"Banana\"\n },\n {\n \"question\" : \"Orange citrus fruit?\",\n \"choices\" : [\n \"Orange\",\n \"Apple\",\n \"Banana\",\n \"Pear\"\n ],\n \"answer\" : \"Orange\"\n },\n {\n \"question\" : \"Green citrus fruit?\",\n \"choices\" : [\n \"Lime\",\n \"Lemon\",\n \"Orange\",\n \"Grapefruit\"\n ],\n \"answer\" : \"Lime\"\n },\n {\n \"question\" : \"Animal that quacks?\",\n \"choices\" : [\n \"Duck\",\n \"Goose\",\n \"Chicken\",\n \"Turkey\"\n ],\n \"answer\" : \"Duck\"\n },\n {\n \"question\" : \"Animal that oinks?\",\n \"choices\" : [\n \"Pig\",\n \"Cow\",\n \"Dog\",\n \"Sheep\"\n ],\n \"answer\" : \"Pig\"\n },\n {\n \"question\" : \"Animal that moos?\",\n \"choices\" : [\n \"Cow\",\n \"Pig\",\n \"Dog\",\n \"Horse\"\n ],\n \"answer\" : \"Cow\"\n },\n {\n \"question\" : \"What animal has a mane?\",\n \"choices\" : [\n \"Lion\",\n \"Tiger\",\n \"Elephant\",\n \"Horse\"\n ],\n \"answer\" : \"Lion\"\n },\n {\n \"question\" : \"What animal has a hump?\",\n \"choices\" : [\n \"Camel\",\n \"Horse\",\n \"Elephant\",\n \"Donkey\"\n ],\n \"answer\" : \"Camel\"\n },\n {\n \"question\" : \"What animal can hop?\",\n \"choices\" : [\n \"Kangaroo\",\n \"Lion\",\n \"Tiger\",\n \"Elephant\"\n ],\n \"answer\" : \"Kangaroo\"\n },\n {\n \"question\" : \"What animal can swim?\",\n \"choices\" : [\n \"Fish\",\n \"Dog\",\n \"Cat\",\n \"Horse\"\n ],\n \"answer\" : \"Fish\"\n },\n {\n \"question\" : \"Which animal can fly?\",\n \"choices\" : [\n \"Bird\",\n \"Cat\",\n \"Dog\",\n \"Elephant\"\n ],\n \"answer\" : \"Bird\"\n },\n {\n \"question\" : \"What animal has a shell?\",\n \"choices\" : [\n \"Turtle\",\n \"Dog\",\n \"Cat\",\n \"Horse\"\n ],\n \"answer\" : \"Turtle\"\n },\n {\n \"question\" : \"What animal has tusks?\",\n \"choices\" : [\n \"Elephant\",\n \"Lion\",\n \"Horse\",\n \"Tiger\"\n ],\n \"answer\" : \"Elephant\"\n },\n {\n \"question\" : \"Color of coal?\",\n \"choices\" : [\n \"Black\",\n \"White\",\n \"Red\",\n \"Green\"\n ],\n \"answer\" : \"Black\"\n }\n ]\n}\n";
|
||
Trivia = JsonUtility.FromJson<TriviaSet>(json);
|
||
}
|
||
|
||
protected override void OnWindowInstantiation()
|
||
{
|
||
/* Fetches a random question and sets it as the title */
|
||
TriviaQuestion question = Trivia.questions[Random.Range(0, Trivia.questions.Length)];
|
||
Components.InfoText.text = question.question;
|
||
Components.SetWidth(500); // Larger width is needed for this component that others
|
||
|
||
/* Adds the answer boxes */
|
||
for (int i = 0; i < 4; i++)
|
||
{
|
||
/* Creates the gameobject and fetches the needed components */
|
||
GameObject go = Instantiate(PrefabRegistry.Instance.TextButtonPrefab, transform);
|
||
Text text = go.GetComponentInChildren<Text>();
|
||
Button button = go.GetComponent<Button>();
|
||
|
||
/* Assigns needed info to the components */
|
||
text.text = question.choices[i];
|
||
|
||
RectTransform buttonTransform = button.GetComponent<RectTransform>();
|
||
buttonTransform.anchoredPosition = Positions[i];
|
||
buttonTransform.sizeDelta = new Vector2(200, 60);
|
||
|
||
/* Adds a lambda function to the button press to detect answers */
|
||
bool isCorrectButton = string.Equals(question.choices[i], question.answer);
|
||
button.onClick.AddListener(() =>
|
||
{
|
||
if (isCorrectButton)
|
||
{
|
||
DestroyWindow();
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
public override void OnWindowCloseButtonClicked() { }
|
||
}
|
||
}
|