CapersProject/Assets/Plugins/Pixel Crushers/Dialogue System/Scripts/Importers/Articy/ConverterPrefs.cs

145 lines
5.6 KiB
C#

#if USE_ARTICY
// Copyright (c) Pixel Crushers. All rights reserved.
using System;
using System.Text;
namespace PixelCrushers.DialogueSystem.Articy
{
[Serializable]
public class ArticyEmVars
{
public string color;
public string bold;
public string italic;
public string underline;
}
[Serializable]
public class ArticyEmVarSet
{
public ArticyEmVars[] emVars;
public ArticyEmVarSet()
{
InitializeEmVars();
}
public void InitializeEmVars()
{
emVars = new ArticyEmVars[DialogueDatabase.NumEmphasisSettings];
for (int i = 0; i < DialogueDatabase.NumEmphasisSettings; i++)
{
emVars[i] = new ArticyEmVars();
}
}
}
/// <summary>
/// This class manages articy converter prefs. It allows the converter to save
/// prefs to EditorPrefs between sessions.
/// </summary>
public class ConverterPrefs
{
public enum FlowFragmentModes { NestedConversationGroups, ConversationGroups, Quests, Ignore }
public enum StageDirModes { Sequences, Nothing, Description }
public enum ConvertDropdownsModes { Int, TechnicalName, DisplayName }
public enum ConvertSlotsModes { DisplayName, ID, TechnicalName }
public enum RecursionModes { Off, On }
public string ProjectFilename { get; set; }
public string PortraitFolder { get; set; }
public bool UseDefaultActorsIfNoneAssignedToDialogue { get; set; }
public StageDirModes StageDirectionsMode { get; set; }
public FlowFragmentModes FlowFragmentMode { get; set; }
public bool CreateConversationsForLooseFlow { get; set; }
public string OtherScriptFields { get; set; }
public string DocumentsSubmenu { get; set; }
public bool ImportDocuments { get; set; }
public string TextTableDocument { get; set; }
public string OutputFolder { get; set; }
public bool Overwrite { get; set; }
public ConversionSettings ConversionSettings { get; set; }
public EncodingType EncodingType { get; set; }
public RecursionModes RecursionMode { get; set; }
public ConvertDropdownsModes ConvertDropdownsAs { get; set; }
public ConvertSlotsModes ConvertSlotsAs { get; set; }
public bool UseTechnicalNames { get; set; }
public bool IncludeFeatureNameInFields { get; set; }
public bool SetDisplayName { get; set; }
public bool CustomDisplayName { get; set; }
public bool DirectConversationLinksToEntry1 { get; set; }
public bool ConvertMarkupToRichText { get; set; }
public bool SplitTextOnPipes { get; set; }
public bool TrimWhitespace { get; set; } = true;
public bool ReorderIDs { get; set; }
public string FlowFragmentScript { get; set; }
public string VoiceOverProperty { get; set; }
public string LocalizationXlsx { get; set; }
public ArticyEmVarSet emVarSet = new ArticyEmVarSet();
public const string DefaultFlowFragmentScript = "OnFlowFragment";
public const string DefaultVoiceOverProperty = "VoiceOverFile";
public Encoding Encoding { get { return EncodingTypeTools.GetEncoding(EncodingType); } }
public ConverterPrefs()
{
ProjectFilename = string.Empty;
PortraitFolder = string.Empty;
UseDefaultActorsIfNoneAssignedToDialogue = true;
StageDirectionsMode = StageDirModes.Sequences;
FlowFragmentMode = FlowFragmentModes.ConversationGroups;
CreateConversationsForLooseFlow = false;
OtherScriptFields = string.Empty;
DocumentsSubmenu = string.Empty;
ImportDocuments = true;
TextTableDocument = string.Empty;
OutputFolder = "Assets";
Overwrite = false;
ConversionSettings = new ConversionSettings();
EncodingType = EncodingType.Default;
RecursionMode = RecursionModes.On;
ConvertDropdownsAs = ConvertDropdownsModes.Int;
ConvertSlotsAs = ConvertSlotsModes.DisplayName;
UseTechnicalNames = false;
IncludeFeatureNameInFields = false;
SetDisplayName = false;
CustomDisplayName = false;
DirectConversationLinksToEntry1 = false;
ConvertMarkupToRichText = true;
SplitTextOnPipes = true;
TrimWhitespace = true;
ReorderIDs = false;
FlowFragmentScript = DefaultFlowFragmentScript;
VoiceOverProperty = DefaultVoiceOverProperty;
LocalizationXlsx = string.Empty;
}
public void ReviewSpecialProperties(ArticyData articyData)
{
foreach (var articyEntity in articyData.entities.Values)
{
var conversionSetting = ConversionSettings.GetConversionSetting(articyEntity.id);
if (conversionSetting.Include)
{
if (ArticyConverter.HasField(articyEntity.features, "IsNPC", false)) conversionSetting.Category = EntityCategory.NPC;
if (ArticyConverter.HasField(articyEntity.features, "IsPlayer", true)) conversionSetting.Category = EntityCategory.Player;
if (ArticyConverter.HasField(articyEntity.features, "IsItem", true)) conversionSetting.Category = EntityCategory.Item;
if (ArticyConverter.HasField(articyEntity.features, "IsQuest", true)) conversionSetting.Category = EntityCategory.Quest;
}
}
}
}
}
#endif