98 lines
3.1 KiB
C#
98 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Logic.Multilingual;
|
|
using UnityEngine;
|
|
|
|
public enum QuestionnaireQuestionType
|
|
{
|
|
Open = 0,
|
|
SingleChoice = 1,
|
|
MultipleChoice = 2
|
|
}
|
|
|
|
[Serializable]
|
|
[CreateAssetMenu(fileName = "QuestionnaireDataAssets", menuName = "TH1 Game Data/Questionnaire Data Asset")]
|
|
public class QuestionnaireDataAssets : ScriptableObject
|
|
{
|
|
public string DefaultQuestionnaireId = "player-feedback-2026-06";
|
|
[MultilingualField] public string MenuButtonText;
|
|
public List<QuestionnaireInfo> QuestionnaireList = new List<QuestionnaireInfo>();
|
|
|
|
[NonSerialized]
|
|
private Dictionary<string, QuestionnaireInfo> _questionnaireDict;
|
|
|
|
public QuestionnaireInfo GetDefaultQuestionnaire()
|
|
{
|
|
if (GetQuestionnaireInfo(DefaultQuestionnaireId, out var info)) return info;
|
|
return QuestionnaireList != null && QuestionnaireList.Count > 0 ? QuestionnaireList[0] : null;
|
|
}
|
|
|
|
public bool GetQuestionnaireInfo(string questionnaireId, out QuestionnaireInfo info)
|
|
{
|
|
EnsureDict();
|
|
if (!string.IsNullOrEmpty(questionnaireId) && _questionnaireDict.TryGetValue(questionnaireId, out info))
|
|
{
|
|
return true;
|
|
}
|
|
|
|
info = null;
|
|
return false;
|
|
}
|
|
|
|
private void EnsureDict()
|
|
{
|
|
if (_questionnaireDict != null && QuestionnaireList != null && _questionnaireDict.Count == QuestionnaireList.Count)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_questionnaireDict = new Dictionary<string, QuestionnaireInfo>();
|
|
if (QuestionnaireList == null) return;
|
|
|
|
foreach (var info in QuestionnaireList)
|
|
{
|
|
if (info == null || string.IsNullOrEmpty(info.QuestionnaireId)) continue;
|
|
_questionnaireDict[info.QuestionnaireId] = info;
|
|
}
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class QuestionnaireInfo
|
|
{
|
|
public string QuestionnaireId;
|
|
[MultilingualField] public string Title;
|
|
[MultilingualField] public string Description;
|
|
[MultilingualField] public string SubmitButtonText;
|
|
[MultilingualField] public string ResubmitButtonText;
|
|
[MultilingualField] public string CloseButtonText;
|
|
[MultilingualField] public string SubmittedMessage;
|
|
[MultilingualField] public string UploadingMessage;
|
|
[MultilingualField] public string UploadSuccessMessage;
|
|
[MultilingualField] public string UploadFailedMessage;
|
|
[MultilingualField] public string UploadAuthFailedMessage;
|
|
[MultilingualField] public string RequiredMessage;
|
|
[MultilingualField] public string RefillHintText;
|
|
[MultilingualField] public string SaveFailedMessage;
|
|
public List<QuestionnaireQuestionInfo> Questions = new List<QuestionnaireQuestionInfo>();
|
|
}
|
|
|
|
[Serializable]
|
|
public class QuestionnaireQuestionInfo
|
|
{
|
|
public string QuestionId;
|
|
public QuestionnaireQuestionType QuestionType;
|
|
[MultilingualField] public string Title;
|
|
[MultilingualField] public string Hint;
|
|
public bool Required;
|
|
public int MaxSelectCount;
|
|
public List<QuestionnaireOptionInfo> Options = new List<QuestionnaireOptionInfo>();
|
|
}
|
|
|
|
[Serializable]
|
|
public class QuestionnaireOptionInfo
|
|
{
|
|
public string OptionId;
|
|
[MultilingualField] public string Text;
|
|
}
|