using System; using Unity.Multiplayer.Center.Common; using UnityEditor; using UnityEngine; namespace Unity.Multiplayer.Center.Questionnaire { /// /// The unity object that contains the current choices of the user. /// [FilePath("Assets/UserChoices.choices", FilePathAttribute.Location.ProjectFolder)] internal class UserChoicesObject : ScriptableSingleton { /// /// The version of the questionnaire the answers correspond to. /// public string QuestionnaireVersion; /// /// The answers of the user in the Game specs questionnaire. /// public AnswerData UserAnswers = new(); /// /// Current preset selected by the user. /// public Preset Preset; /// /// The main selections made by the user in the recommendation tab. /// public SelectedSolutionsData SelectedSolutions; /// /// Raised when the SelectedSolutions changes /// public event Action OnSolutionSelectionChanged; /// /// Set the user selection and calls OnSelectionChanged if needed /// /// The selected hosting model /// The selected netcode solution internal void SetUserSelection(SelectedSolutionsData.HostingModel hostingModel, SelectedSolutionsData.NetcodeSolution netcodeSolution) { SelectedSolutions.SelectedHostingModel = hostingModel; SelectedSolutions.SelectedNetcodeSolution = netcodeSolution; OnSolutionSelectionChanged?.Invoke(); } /// /// Save to disk (see filepath) /// internal void Save() { QuestionnaireVersion = QuestionnaireObject.instance.Questionnaire.Version; this.Save(true); } internal string FilePath => GetFilePath(); } }