941 lines
35 KiB
C#
941 lines
35 KiB
C#
using UnityEngine;
|
|
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
|
|
[CustomEditor (typeof (dialogContentSystem))]
|
|
public class dialogContentSystemEditor : Editor
|
|
{
|
|
SerializedProperty dialogContentID;
|
|
SerializedProperty dialogContentScene;
|
|
SerializedProperty currentDialogIndex;
|
|
SerializedProperty dialogOwner;
|
|
SerializedProperty showDialogOnwerName;
|
|
SerializedProperty dialogActive;
|
|
SerializedProperty dialogInProcess;
|
|
SerializedProperty playingExternalDialog;
|
|
SerializedProperty completeDialogInfoList;
|
|
|
|
SerializedProperty useAnimations;
|
|
SerializedProperty mainAnimator;
|
|
SerializedProperty mainPlayerController;
|
|
SerializedProperty dialogueActiveAnimatorName;
|
|
|
|
SerializedProperty playerAnimationsOnDialogEnabled;
|
|
|
|
SerializedProperty useEventsOnStartEndDialog;
|
|
SerializedProperty eventOnStartDialog;
|
|
SerializedProperty eventOnEndDialog;
|
|
|
|
SerializedProperty newCharacterToAddDialog;
|
|
|
|
SerializedProperty pauseAIOnDialogStart;
|
|
SerializedProperty resumeAIOnDialogEnd;
|
|
SerializedProperty interruptWanderAroundStateIfActiveOnDialogStart;
|
|
SerializedProperty disableWanderAroundStateOnDialogEnd;
|
|
|
|
SerializedProperty useDialogContentTemplate;
|
|
SerializedProperty mainDialogContentTemplate;
|
|
|
|
|
|
dialogContentSystem manager;
|
|
|
|
SerializedProperty currentArrayElement;
|
|
|
|
GUIStyle buttonStyle = new GUIStyle ();
|
|
|
|
void OnEnable ()
|
|
{
|
|
dialogContentID = serializedObject.FindProperty ("dialogContentID");
|
|
dialogContentScene = serializedObject.FindProperty ("dialogContentScene");
|
|
currentDialogIndex = serializedObject.FindProperty ("currentDialogIndex");
|
|
dialogOwner = serializedObject.FindProperty ("dialogOwner");
|
|
showDialogOnwerName = serializedObject.FindProperty ("showDialogOnwerName");
|
|
dialogActive = serializedObject.FindProperty ("dialogActive");
|
|
dialogInProcess = serializedObject.FindProperty ("dialogInProcess");
|
|
playingExternalDialog = serializedObject.FindProperty ("playingExternalDialog");
|
|
completeDialogInfoList = serializedObject.FindProperty ("completeDialogInfoList");
|
|
|
|
useAnimations = serializedObject.FindProperty ("useAnimations");
|
|
mainAnimator = serializedObject.FindProperty ("mainAnimator");
|
|
mainPlayerController = serializedObject.FindProperty ("mainPlayerController");
|
|
|
|
dialogueActiveAnimatorName = serializedObject.FindProperty ("dialogueActiveAnimatorName");
|
|
|
|
playerAnimationsOnDialogEnabled = serializedObject.FindProperty ("playerAnimationsOnDialogEnabled");
|
|
|
|
useEventsOnStartEndDialog = serializedObject.FindProperty ("useEventsOnStartEndDialog");
|
|
eventOnStartDialog = serializedObject.FindProperty ("eventOnStartDialog");
|
|
eventOnEndDialog = serializedObject.FindProperty ("eventOnEndDialog");
|
|
|
|
newCharacterToAddDialog = serializedObject.FindProperty ("newCharacterToAddDialog");
|
|
|
|
pauseAIOnDialogStart = serializedObject.FindProperty ("pauseAIOnDialogStart");
|
|
resumeAIOnDialogEnd = serializedObject.FindProperty ("resumeAIOnDialogEnd");
|
|
interruptWanderAroundStateIfActiveOnDialogStart = serializedObject.FindProperty ("interruptWanderAroundStateIfActiveOnDialogStart");
|
|
disableWanderAroundStateOnDialogEnd = serializedObject.FindProperty ("disableWanderAroundStateOnDialogEnd");
|
|
|
|
useDialogContentTemplate = serializedObject.FindProperty ("useDialogContentTemplate");
|
|
mainDialogContentTemplate = serializedObject.FindProperty ("mainDialogContentTemplate");
|
|
|
|
manager = (dialogContentSystem)target;
|
|
}
|
|
|
|
public override void OnInspectorGUI ()
|
|
{
|
|
GUILayout.BeginVertical (GUILayout.Height (50));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
buttonStyle = new GUIStyle (GUI.skin.button);
|
|
|
|
buttonStyle.fontStyle = FontStyle.Bold;
|
|
buttonStyle.fontSize = 12;
|
|
|
|
GUILayout.BeginVertical ("Main Settings", "window");
|
|
EditorGUILayout.PropertyField (dialogContentID);
|
|
EditorGUILayout.PropertyField (dialogContentScene);
|
|
EditorGUILayout.PropertyField (currentDialogIndex);
|
|
EditorGUILayout.PropertyField (dialogOwner);
|
|
EditorGUILayout.PropertyField (showDialogOnwerName);
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("AI Settings", "window");
|
|
EditorGUILayout.PropertyField (pauseAIOnDialogStart);
|
|
EditorGUILayout.PropertyField (resumeAIOnDialogEnd);
|
|
EditorGUILayout.PropertyField (interruptWanderAroundStateIfActiveOnDialogStart);
|
|
EditorGUILayout.PropertyField (disableWanderAroundStateOnDialogEnd);
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Animations Settings", "window");
|
|
EditorGUILayout.PropertyField (useAnimations);
|
|
if (useAnimations.boolValue) {
|
|
EditorGUILayout.PropertyField (mainAnimator);
|
|
EditorGUILayout.PropertyField (mainPlayerController);
|
|
EditorGUILayout.PropertyField (dialogueActiveAnimatorName);
|
|
EditorGUILayout.PropertyField (playerAnimationsOnDialogEnabled);
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialog State", "window");
|
|
GUILayout.Label ("Dialog Active\t" + dialogActive.boolValue);
|
|
GUILayout.Label ("Dialog In Process\t" + dialogInProcess.boolValue);
|
|
GUILayout.Label ("External Dialog\t" + playingExternalDialog.boolValue);
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Complete Dialog List", "window");
|
|
showCompleteDialogInfoList (completeDialogInfoList);
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Events Settings", "window");
|
|
EditorGUILayout.PropertyField (useEventsOnStartEndDialog);
|
|
if (useEventsOnStartEndDialog.boolValue) {
|
|
EditorGUILayout.PropertyField (eventOnStartDialog);
|
|
EditorGUILayout.PropertyField (eventOnEndDialog);
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Add Dialog To Character Manually Settings", "window");
|
|
EditorGUILayout.PropertyField (newCharacterToAddDialog);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Add Dialog To Character")) {
|
|
manager.addDialogToCharacterManually ();
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialog Content Template Settings", "window");
|
|
EditorGUILayout.PropertyField (useDialogContentTemplate);
|
|
if (useDialogContentTemplate.boolValue) {
|
|
EditorGUILayout.PropertyField (mainDialogContentTemplate);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Add Dialog Content To Template")) {
|
|
manager.addDialogContentToTemplate ();
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
if (GUI.changed) {
|
|
serializedObject.ApplyModifiedProperties ();
|
|
}
|
|
EditorGUILayout.Space ();
|
|
}
|
|
|
|
void showCompleteDialogInfoList (SerializedProperty list)
|
|
{
|
|
GUILayout.BeginVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Show/Hide Complete Dialog Info List", buttonStyle)) {
|
|
list.isExpanded = !list.isExpanded;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (list.isExpanded) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
int currentArraySize = list.arraySize;
|
|
|
|
GUILayout.Label ("Number of Complete Dialogs: " + currentArraySize);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Add Dialog")) {
|
|
manager.addNewDialog ();
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("Clear")) {
|
|
list.ClearArray ();
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Expand All")) {
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|
}
|
|
}
|
|
if (GUILayout.Button ("Collapse All")) {
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|
}
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
bool expanded = false;
|
|
GUILayout.BeginHorizontal ();
|
|
GUILayout.BeginHorizontal ("box");
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (i < currentArraySize && i >= 0) {
|
|
EditorGUILayout.BeginVertical ();
|
|
|
|
currentArrayElement = list.GetArrayElementAtIndex (i);
|
|
|
|
EditorGUILayout.PropertyField (currentArrayElement, false);
|
|
if (currentArrayElement.isExpanded) {
|
|
showCompleteDialogInfoListElement (currentArrayElement, i);
|
|
expanded = true;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
if (expanded) {
|
|
GUILayout.BeginVertical ();
|
|
} else {
|
|
GUILayout.BeginHorizontal ();
|
|
}
|
|
if (GUILayout.Button ("x")) {
|
|
list.DeleteArrayElementAtIndex (i);
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("v")) {
|
|
if (i >= 0) {
|
|
list.MoveArrayElement (i, i + 1);
|
|
}
|
|
}
|
|
if (GUILayout.Button ("^")) {
|
|
if (i < currentArraySize) {
|
|
list.MoveArrayElement (i, i - 1);
|
|
}
|
|
}
|
|
if (expanded) {
|
|
GUILayout.EndVertical ();
|
|
} else {
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
|
|
void showCompleteDialogInfoListElement (SerializedProperty list, int dialogIndex)
|
|
{
|
|
GUILayout.BeginVertical ("box");
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ID"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialog Text Anchor And Alignment Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomTextAnchorAndAligment"));
|
|
if (list.FindPropertyRelative ("useCustomTextAnchorAndAligment").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("textAnchor"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialogs Without Pausing Player Actions Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playDialogWithoutPausingPlayerActions"));
|
|
if (list.FindPropertyRelative ("playDialogWithoutPausingPlayerActions").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playDialogsAutomatically"));
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("canUseInputToSetNextDialog"));
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("pausePlayerActionsInput"));
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("pausePlayerMovementInput"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Show Dialog Part By Part Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("showDialogLineWordByWord"));
|
|
|
|
if (list.FindPropertyRelative ("showDialogLineWordByWord").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogLineWordSpeed"));
|
|
}
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("showDialogLineLetterByLetter"));
|
|
if (list.FindPropertyRelative ("showDialogLineLetterByLetter").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogLineLetterSpeed"));
|
|
}
|
|
|
|
if (list.FindPropertyRelative ("showDialogLineWordByWord").boolValue || list.FindPropertyRelative ("showDialogLineLetterByLetter").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("showFullDialogLineOnInputIfTextPartByPart"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Stop Dialog By Distance Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("stopDialogIfPlayerDistanceTooFar"));
|
|
if (list.FindPropertyRelative ("stopDialogIfPlayerDistanceTooFar").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("maxDistanceToStopDialog"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("rewindLastDialogIfStopped"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnDialogStopped"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Play Dialog On Trigger Enter Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("playDialogOnTriggerEnter"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (list.FindPropertyRelative ("playDialogOnTriggerEnter").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToPlayDialogOnTriggerEnter"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
}
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialogs List", "window");
|
|
showDialogInfoList (list.FindPropertyRelative ("dialogInfoList"), dialogIndex, list.FindPropertyRelative ("playDialogWithoutPausingPlayerActions").boolValue);
|
|
GUILayout.EndVertical ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
void showDialogInfoList (SerializedProperty list, int dialogIndex, bool playDialogWithoutPausingPlayerActions)
|
|
{
|
|
GUILayout.BeginVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Show/Hide Dialog Info List", buttonStyle)) {
|
|
list.isExpanded = !list.isExpanded;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (list.isExpanded) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
int currentArraySize = list.arraySize;
|
|
|
|
GUILayout.Label ("Number of Dialogs: " + currentArraySize);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Add Line")) {
|
|
manager.addNewLine (dialogIndex);
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("Clear")) {
|
|
list.ClearArray ();
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Expand All")) {
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|
}
|
|
}
|
|
if (GUILayout.Button ("Collapse All")) {
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|
}
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
bool expanded = false;
|
|
GUILayout.BeginHorizontal ();
|
|
GUILayout.BeginHorizontal ("box");
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (i < currentArraySize && i >= 0) {
|
|
EditorGUILayout.BeginVertical ();
|
|
|
|
currentArrayElement = list.GetArrayElementAtIndex (i);
|
|
|
|
EditorGUILayout.PropertyField (currentArrayElement, false);
|
|
if (currentArrayElement.isExpanded) {
|
|
showDialogInfoListElement (currentArrayElement, dialogIndex, i, playDialogWithoutPausingPlayerActions);
|
|
expanded = true;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndHorizontal ();
|
|
if (expanded) {
|
|
GUILayout.BeginVertical ();
|
|
} else {
|
|
GUILayout.BeginHorizontal ();
|
|
}
|
|
if (GUILayout.Button ("x")) {
|
|
list.DeleteArrayElementAtIndex (i);
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("v")) {
|
|
if (i >= 0) {
|
|
list.MoveArrayElement (i, i + 1);
|
|
}
|
|
}
|
|
if (GUILayout.Button ("^")) {
|
|
if (i < currentArraySize) {
|
|
list.MoveArrayElement (i, i - 1);
|
|
}
|
|
}
|
|
if (expanded) {
|
|
GUILayout.EndVertical ();
|
|
} else {
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
void showDialogInfoListElement (SerializedProperty list, int dialogIndex, int lineIndex, bool playDialogWithoutPausingPlayerActions)
|
|
{
|
|
GUILayout.BeginVertical ();
|
|
|
|
GUILayout.BeginVertical ("Main Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogOwnerName"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ID"));
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogContent"));
|
|
|
|
if (playDialogWithoutPausingPlayerActions) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayToShowThisDialogLine"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayToShowNextDialogLine"));
|
|
}
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Event System Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("activateRemoteTriggerSystem"));
|
|
if (list.FindPropertyRelative ("activateRemoteTriggerSystem").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("remoteTriggerName"));
|
|
}
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("activateWhenDialogClosed"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnDialog"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventToSendPlayer"));
|
|
if (list.FindPropertyRelative ("useEventToSendPlayer").boolValue) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToSendPlayer"));
|
|
}
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
if (!playDialogWithoutPausingPlayerActions) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Next UI Element Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNexLineButton"), new GUIContent ("Use Next Line Button"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("isEndOfDialog"));
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Next Line Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeToDialogInfoID"));
|
|
|
|
if (list.FindPropertyRelative ("changeToDialogInfoID").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRandomDialogInfoID"));
|
|
if (list.FindPropertyRelative ("useRandomDialogInfoID").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRandomDialogRange"));
|
|
if (list.FindPropertyRelative ("useRandomDialogRange").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("randomDialogRange"));
|
|
} else {
|
|
GUILayout.BeginVertical ("Random Dialog Id List", "window");
|
|
showRandomDialogIDList (list.FindPropertyRelative ("randomDialogIDList"));
|
|
GUILayout.EndVertical ();
|
|
}
|
|
} else {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToActivate"));
|
|
}
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Condition On Line Info Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("checkConditionForNextLine"));
|
|
if (list.FindPropertyRelative ("checkConditionForNextLine").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToActivateOnConditionTrue"));
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToActivateOnConditionFalse"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToCheckConditionForNextLine"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventToSendPlayerToCondition"));
|
|
if (list.FindPropertyRelative ("useEventToSendPlayerToCondition").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToSendPlayerToCondition"));
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Reaction On AI Settings", "window");
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("characterFollowPlayerAfterDialogEnd"));
|
|
GUILayout.EndVertical ();
|
|
|
|
if (!playDialogWithoutPausingPlayerActions) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Disable Dialog Info Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("disableDialogAfterSelect"));
|
|
if (list.FindPropertyRelative ("disableDialogAfterSelect").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToJump"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Set Next Complete Dialog Info Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setNextCompleteDialogID"));
|
|
if (!list.FindPropertyRelative ("setNextCompleteDialogID").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setNewCompleteDialogID"));
|
|
if (list.FindPropertyRelative ("setNewCompleteDialogID").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("newCompleteDialogID"));
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
if (!playDialogWithoutPausingPlayerActions) {
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialog Lines List", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("showPreviousDialogLineOnOptions"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
showDialogLineInfoList (list.FindPropertyRelative ("dialogLineInfoList"), dialogIndex, lineIndex);
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialog Line Voices Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useDialogLineSound"));
|
|
if (list.FindPropertyRelative ("useDialogLineSound").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogLineSound"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogLineAudioElement"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Dialog Character Animations Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useAnimations"));
|
|
if (list.FindPropertyRelative ("useAnimations").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("animationName"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayToPlayAnimation"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useDelayToDisableAnimation"));
|
|
if (list.FindPropertyRelative ("useDelayToDisableAnimation").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayToDisableAnimation"));
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("animationUsedOnPlayer"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("enableAnimatorLayer"));
|
|
if (list.FindPropertyRelative ("enableAnimatorLayer").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("animatorLayerToEnableName"));
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
void showDialogLineInfoList (SerializedProperty list, int dialogIndex, int lineIndex)
|
|
{
|
|
GUILayout.BeginVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Show/Hide Dialog Line Info List", buttonStyle)) {
|
|
list.isExpanded = !list.isExpanded;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (list.isExpanded) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
int currentArraySize = list.arraySize;
|
|
|
|
GUILayout.Label ("Number of Lines: " + currentArraySize);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Add Answer")) {
|
|
manager.addNewAnswer (dialogIndex, lineIndex);
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("Clear")) {
|
|
list.ClearArray ();
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Expand All")) {
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|
list.GetArrayElementAtIndex (i).isExpanded = true;
|
|
}
|
|
}
|
|
if (GUILayout.Button ("Collapse All")) {
|
|
for (int i = 0; i < list.arraySize; i++) {
|
|
list.GetArrayElementAtIndex (i).isExpanded = false;
|
|
}
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
bool expanded = false;
|
|
GUILayout.BeginHorizontal ();
|
|
GUILayout.BeginHorizontal ("box");
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (i < currentArraySize && i >= 0) {
|
|
EditorGUILayout.BeginVertical ();
|
|
currentArrayElement = list.GetArrayElementAtIndex (i);
|
|
|
|
EditorGUILayout.PropertyField (currentArrayElement, false);
|
|
if (currentArrayElement.isExpanded) {
|
|
showDialogLineInfoListElement (currentArrayElement);
|
|
expanded = true;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndHorizontal ();
|
|
if (expanded) {
|
|
GUILayout.BeginVertical ();
|
|
} else {
|
|
GUILayout.BeginHorizontal ();
|
|
}
|
|
if (GUILayout.Button ("x")) {
|
|
list.DeleteArrayElementAtIndex (i);
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("v")) {
|
|
if (i >= 0) {
|
|
list.MoveArrayElement (i, i + 1);
|
|
}
|
|
}
|
|
if (GUILayout.Button ("^")) {
|
|
if (i < currentArraySize) {
|
|
list.MoveArrayElement (i, i - 1);
|
|
}
|
|
}
|
|
if (expanded) {
|
|
GUILayout.EndVertical ();
|
|
} else {
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
void showDialogLineInfoListElement (SerializedProperty list)
|
|
{
|
|
GUILayout.BeginVertical ();
|
|
|
|
GUILayout.BeginVertical ("Main Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ID"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogLineContent"));
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Next Line Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRandomDialogInfoID"));
|
|
if (list.FindPropertyRelative ("useRandomDialogInfoID").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRandomDialogRange"));
|
|
if (list.FindPropertyRelative ("useRandomDialogRange").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("randomDialogRange"));
|
|
} else {
|
|
GUILayout.BeginVertical ("Random Dialog Id List", "window");
|
|
showRandomDialogIDList (list.FindPropertyRelative ("randomDialogIDList"));
|
|
GUILayout.EndVertical ();
|
|
}
|
|
} else {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToActivate"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Remote Event System Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("activateRemoteTriggerSystem"));
|
|
if (list.FindPropertyRelative ("activateRemoteTriggerSystem").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("remoteTriggerName"));
|
|
}
|
|
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Disable Line Info Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("disableLineAfterSelect"));
|
|
if (list.FindPropertyRelative ("disableLineAfterSelect").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("lineDisabled"));
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Stat To Check On Line Info Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useStatToShowLine"));
|
|
if (list.FindPropertyRelative ("useStatToShowLine").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("statName"));
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("statIsAmount"));
|
|
if (list.FindPropertyRelative ("statIsAmount").boolValue) {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("minStateValue"));
|
|
} else {
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("boolStateValue"));
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginVertical ("Condition On Line Info Settings", "window");
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("checkConditionForNextLine"));
|
|
if (list.FindPropertyRelative ("checkConditionForNextLine").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToActivateOnConditionTrue"));
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("dialogInfoIDToActivateOnConditionFalse"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToCheckConditionForNextLine"));
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventToSendPlayerToCondition"));
|
|
if (list.FindPropertyRelative ("useEventToSendPlayerToCondition").boolValue) {
|
|
|
|
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToSendPlayerToCondition"));
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
void showRandomDialogIDList (SerializedProperty list)
|
|
{
|
|
GUILayout.BeginVertical ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (GUILayout.Button ("Show/Hide Random Dialog ID List", buttonStyle)) {
|
|
list.isExpanded = !list.isExpanded;
|
|
}
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (list.isExpanded) {
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
int currentArraySize = list.arraySize;
|
|
|
|
GUILayout.Label ("Number of ID: " + currentArraySize);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.BeginHorizontal ();
|
|
if (GUILayout.Button ("Add ID")) {
|
|
list.arraySize++;
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
if (GUILayout.Button ("Clear")) {
|
|
list.ClearArray ();
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
GUILayout.EndHorizontal ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
for (int i = 0; i < currentArraySize; i++) {
|
|
GUILayout.BeginHorizontal ();
|
|
GUILayout.BeginHorizontal ("box");
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
if (i < currentArraySize && i >= 0) {
|
|
EditorGUILayout.BeginVertical ();
|
|
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
|
|
|
|
EditorGUILayout.Space ();
|
|
|
|
GUILayout.EndVertical ();
|
|
}
|
|
|
|
if (GUILayout.Button ("x")) {
|
|
list.DeleteArrayElementAtIndex (i);
|
|
|
|
currentArraySize = list.arraySize;
|
|
}
|
|
|
|
GUILayout.EndHorizontal ();
|
|
GUILayout.EndHorizontal ();
|
|
}
|
|
}
|
|
GUILayout.EndVertical ();
|
|
}
|
|
}
|
|
#endif |