Save player choice

This commit is contained in:
Samir Badi 2024-11-11 12:16:45 -05:00
parent 6de15f94f7
commit 4304c31b1a
11 changed files with 63 additions and 17 deletions

View File

@ -1630,10 +1630,10 @@ MonoBehaviour:
m_Content: {fileID: 297350527} m_Content: {fileID: 297350527}
m_Horizontal: 0 m_Horizontal: 0
m_Vertical: 1 m_Vertical: 1
m_MovementType: 1 m_MovementType: 2
m_Elasticity: 0.1 m_Elasticity: 0.1
m_Inertia: 1 m_Inertia: 1
m_DecelerationRate: 0.135 m_DecelerationRate: 25
m_ScrollSensitivity: 50 m_ScrollSensitivity: 50
m_Viewport: {fileID: 0} m_Viewport: {fileID: 0}
m_HorizontalScrollbar: {fileID: 0} m_HorizontalScrollbar: {fileID: 0}

View File

@ -1,5 +1,6 @@
using System; using System;
using GameOff.Core; using GameOff.Core;
using GameOff.UI.Quiz;
using UnityEngine; using UnityEngine;
namespace GameOff.Basic namespace GameOff.Basic
@ -10,6 +11,7 @@ namespace GameOff.Basic
private void Awake() private void Awake()
{ {
PlayerMain.ClearStaticVariables(); PlayerMain.ClearStaticVariables();
QuestionUI.ClearStaticVariables();
} }
} }
} }

View File

@ -1,10 +1,12 @@
using System; using System;
using GameOff.Player; using GameOff.Player;
using GameOff.Quiz;
using GameOff.UI.Quiz;
using UnityEngine; using UnityEngine;
namespace GameOff.Core namespace GameOff.Core
{ {
public class PlayerMain : MonoBehaviour public class PlayerMain : QuizTaker
{ {
public static PlayerMain Instance { get; private set; } public static PlayerMain Instance { get; private set; }
public static void ClearStaticVariables() public static void ClearStaticVariables()
@ -33,13 +35,16 @@ namespace GameOff.Core
_inputHandler = GetComponent<PlayerInputHandler>(); _inputHandler = GetComponent<PlayerInputHandler>();
} }
private void Start() protected override void Start()
{ {
_inputHandler.OnChangeState += InputHandler_OnChangeState; _inputHandler.OnChangeState += InputHandler_OnChangeState;
QuestionUI.OnAnyQuestionChoice += (sender, choice) => answers[choice.Index - 1] = choice.Answer;
_classState = new PlayerClassState(); _classState = new PlayerClassState();
_quizState = new PlayerQuizState(); _quizState = new PlayerQuizState();
_currentState = _classState; _currentState = _classState;
base.Start();
} }
private void Update() private void Update()

View File

@ -0,0 +1,14 @@
namespace GameOff.Quiz
{
public struct QuestionChoice
{
public int Index { get; private set; }
public string Answer { get; private set; }
public QuestionChoice(int index, string answer)
{
Index = index;
Answer = answer;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3d8895d53dbf4543ab3eddd7c7616285
timeCreated: 1731344936

View File

@ -1,11 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using GameOff.Quiz;
using UnityEngine; using UnityEngine;
using UnityEngine.Serialization;
using Random = System.Random; using Random = System.Random;
namespace GameOff.Core namespace GameOff.Quiz
{ {
[DefaultExecutionOrder(-60)] [DefaultExecutionOrder(-60)]
public class QuizHandler : MonoBehaviour public class QuizHandler : MonoBehaviour
@ -60,5 +58,7 @@ namespace GameOff.Core
} }
public List<QuestionInfo> QuestionInfos => _questionInfos; public List<QuestionInfo> QuestionInfos => _questionInfos;
public int QuestionAmount => questionAmount;
} }
} }

View File

@ -0,0 +1,14 @@
using System;
using UnityEngine;
namespace GameOff.Quiz
{
public abstract class QuizTaker: MonoBehaviour
{
[SerializeField] protected string[] answers;
protected virtual void Start()
{
answers = new string[QuizHandler.Instance.QuestionAmount];
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bfaa0e61d02c43a5b4176e1b4aeb0fb7
timeCreated: 1731343953

View File

@ -6,7 +6,7 @@ namespace GameOff.UI.Quiz
{ {
public class ChoiceUI: MonoBehaviour public class ChoiceUI: MonoBehaviour
{ {
public event EventHandler<string> OnAswerTrigger; public event EventHandler<string> OnAnswerTrigger;
[SerializeField] private Text letterText; [SerializeField] private Text letterText;
[SerializeField] private Button selectButton; [SerializeField] private Button selectButton;
@ -17,9 +17,9 @@ namespace GameOff.UI.Quiz
letterText.text = $"{letter}."; letterText.text = $"{letter}.";
selectedVisual.SetActive(false); selectedVisual.SetActive(false);
selectButton.onClick.AddListener(() => OnAswerTrigger?.Invoke(this, letter)); selectButton.onClick.AddListener(() => OnAnswerTrigger?.Invoke(this, letter));
question.OnChoiceUptade += (sender, e) => selectedVisual.SetActive(e == letter); question.OnChoiceUpdate += (sender, e) => selectedVisual.SetActive(e == letter);
} }
} }
} }

View File

@ -9,7 +9,13 @@ namespace GameOff.UI.Quiz
{ {
public class QuestionUI: MonoBehaviour public class QuestionUI: MonoBehaviour
{ {
public event EventHandler<string> OnChoiceUptade; public static event EventHandler<QuestionChoice> OnAnyQuestionChoice;
public static void ClearStaticVariables()
{
OnAnyQuestionChoice = null;
}
public event EventHandler<string> OnChoiceUpdate;
[SerializeField] private Text number; [SerializeField] private Text number;
[SerializeField] private Image question; [SerializeField] private Image question;
@ -25,13 +31,12 @@ namespace GameOff.UI.Quiz
{ {
ChoiceUI choice = Instantiate(choicePrefab, choiceHolder); ChoiceUI choice = Instantiate(choicePrefab, choiceHolder);
choice.SetUp(answer, this); choice.SetUp(answer, this);
choice.OnAswerTrigger += ChoiceUI_OnAswerTrigger; choice.OnAnswerTrigger += (sender, e) =>
}
}
private void ChoiceUI_OnAswerTrigger(object sender, string e)
{ {
OnChoiceUptade?.Invoke(this, e); OnChoiceUpdate?.Invoke(this, e);
OnAnyQuestionChoice?.Invoke(this, new QuestionChoice(info.Index, answer));
};
}
} }
} }
} }