diff --git a/Assets/Gameobjects.meta b/Assets/Gameobjects.meta new file mode 100644 index 0000000..8a34b49 --- /dev/null +++ b/Assets/Gameobjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 43937033b1689e64e8504a87a50f6832 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Gameobjects/CharacterManager.prefab b/Assets/Gameobjects/CharacterManager.prefab new file mode 100644 index 0000000..b98c1cf --- /dev/null +++ b/Assets/Gameobjects/CharacterManager.prefab @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3948773691345320346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6462895877521634942} + - component: {fileID: 1767811258655682326} + m_Layer: 0 + m_Name: CharacterManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6462895877521634942 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3948773691345320346} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 365.75354, y: 364.61804, z: -637.4724} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1767811258655682326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3948773691345320346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: afced2bc2620add47923c6430dfb713e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_characterDatas: + - {fileID: 11400000, guid: fe5c0edf44ede8146ac344d9538dafc6, type: 2} diff --git a/Assets/Gameobjects/CharacterManager.prefab.meta b/Assets/Gameobjects/CharacterManager.prefab.meta new file mode 100644 index 0000000..1a2b93d --- /dev/null +++ b/Assets/Gameobjects/CharacterManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cdba23405af5bfc41aae17526e8cb01e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/amaan_scene.unity b/Assets/Scenes/amaan_scene.unity index d44e124..c27e586 100644 --- a/Assets/Scenes/amaan_scene.unity +++ b/Assets/Scenes/amaan_scene.unity @@ -217,6 +217,141 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &212189016 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 212189017} + - component: {fileID: 212189019} + - component: {fileID: 212189018} + m_Layer: 5 + m_Name: CharacterName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &212189017 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212189016} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 334093782} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 50} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &212189018 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212189016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: CHARACTER_NAME + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18 + m_fontSizeBase: 18 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &212189019 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 212189016} + m_CullTransparentMesh: 1 --- !u!1 &300687582 GameObject: m_ObjectHideFlags: 0 @@ -309,6 +444,127 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &334093780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 334093782} + - component: {fileID: 334093785} + - component: {fileID: 334093784} + - component: {fileID: 334093783} + - component: {fileID: 334093781} + m_Layer: 5 + m_Name: CharacterSheet + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &334093781 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334093780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 113c9cdbaeba15f47a35e92d7d13c848, type: 3} + m_Name: + m_EditorClassIdentifier: + m_characterNameText: {fileID: 212189018} + m_line: {fileID: 917377169} + m_lineHolder: {fileID: 334093782} +--- !u!224 &334093782 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334093780} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 212189017} + - {fileID: 917377167} + m_Father: {fileID: 1597852158} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 377.5207, y: 414.1312} + m_Pivot: {x: 0, y: 1} +--- !u!114 &334093783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334093780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 20 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &334093784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334093780} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.72156864} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &334093785 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 334093780} + m_CullTransparentMesh: 1 --- !u!1 &479886791 GameObject: m_ObjectHideFlags: 0 @@ -630,6 +886,141 @@ MonoBehaviour: m_ChildScaleWidth: 0 m_ChildScaleHeight: 1 m_ReverseArrangement: 0 +--- !u!1 &917377166 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 917377167} + - component: {fileID: 917377168} + - component: {fileID: 917377169} + m_Layer: 5 + m_Name: Line + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &917377167 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917377166} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 334093782} + m_RootOrder: -1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 120.41516, y: -50} + m_SizeDelta: {x: 240.83032, y: 30} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &917377168 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917377166} + m_CullTransparentMesh: 1 +--- !u!114 &917377169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 917377166} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: LINE_X + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4278190080 + m_fontColor: {r: 0, g: 0, b: 0, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18 + m_fontSizeBase: 18 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 12 + m_fontSizeMax: 18 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &1324808325 GameObject: m_ObjectHideFlags: 0 @@ -907,6 +1298,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1657983509} + - {fileID: 334093782} m_Father: {fileID: 0} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -974,6 +1366,7 @@ MonoBehaviour: m_questionButton: {fileID: 527634155} m_characterNameText: {fileID: 479886793} m_characterText: {fileID: 1739596218} + m_characterSheetController: {fileID: 334093781} --- !u!114 &1657983511 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/CharacterManager.cs b/Assets/Scripts/CharacterManager.cs new file mode 100644 index 0000000..b088c28 --- /dev/null +++ b/Assets/Scripts/CharacterManager.cs @@ -0,0 +1,38 @@ +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEngine; + +public class CharacterManager : MonoBehaviour +{ + public static CharacterManager Instance; + + [SerializeField] private List m_characterDatas; + + public ReadOnlyCollection CharacterDatas => m_characterDatas.AsReadOnly(); + + private Dictionary m_interviewed = new Dictionary(); + + private void Awake() + { + if (Instance == null) + { + Instance = this; + } + else + { + Debug.LogWarning("There can only be one instance of the CharacterManager class"); + } + } + + // Returns if a character has been interviewed. + public bool CharacterInterviewed(string name) + { + return m_interviewed.ContainsKey(name); + } + + // Stores a character as interviewed. + public void SetInterviewed(string name) + { + m_interviewed.Add(name, true); + } +} diff --git a/Assets/Scripts/CharacterManager.cs.meta b/Assets/Scripts/CharacterManager.cs.meta new file mode 100644 index 0000000..3d3781b --- /dev/null +++ b/Assets/Scripts/CharacterManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: afced2bc2620add47923c6430dfb713e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DialogueSystem/CharacterSheetController.cs b/Assets/Scripts/DialogueSystem/CharacterSheetController.cs new file mode 100644 index 0000000..90f3649 --- /dev/null +++ b/Assets/Scripts/DialogueSystem/CharacterSheetController.cs @@ -0,0 +1,48 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +public class CharacterSheetController : MonoBehaviour +{ + [SerializeField] private TMP_Text m_characterNameText; + [SerializeField] private TMP_Text m_line; + [SerializeField] private Transform m_lineHolder; + + private Dictionary m_lines = new Dictionary(); + + public void Cleanup() + { + foreach(var line in m_lines) + { + Destroy(line.Value); + } + + m_lines.Clear(); + } + + public void SetName(string name) + { + m_characterNameText.text = name; + } + + // Adds a line to the character sheet. + public void AddLine(string lineText) + { + if (LineExists(lineText)) + return; + + var line = Instantiate(m_line, m_lineHolder); + line.text = lineText; + + line.gameObject.SetActive(true); + + m_lines.Add(lineText, line.gameObject); + } + + // Returns if the line has already been added. + private bool LineExists(string lineText) + { + return m_lines.ContainsKey(lineText); + } +} diff --git a/Assets/Scripts/DialogueSystem/CharacterSheetController.cs.meta b/Assets/Scripts/DialogueSystem/CharacterSheetController.cs.meta new file mode 100644 index 0000000..55e00a0 --- /dev/null +++ b/Assets/Scripts/DialogueSystem/CharacterSheetController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 113c9cdbaeba15f47a35e92d7d13c848 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/DialogueSystem/Dialogue.cs b/Assets/Scripts/DialogueSystem/Dialogue.cs index 4d4e805..cd64581 100644 --- a/Assets/Scripts/DialogueSystem/Dialogue.cs +++ b/Assets/Scripts/DialogueSystem/Dialogue.cs @@ -3,6 +3,7 @@ public class Dialogue { public string text; + public string bulletizedText; } public class QuestionData diff --git a/Assets/Scripts/DialogueSystem/DialogueController.cs b/Assets/Scripts/DialogueSystem/DialogueController.cs index f720dfe..88a68b0 100644 --- a/Assets/Scripts/DialogueSystem/DialogueController.cs +++ b/Assets/Scripts/DialogueSystem/DialogueController.cs @@ -1,19 +1,31 @@ +using System; using System.Collections.Generic; using UnityEngine; public class DialogueController : MonoBehaviour { [SerializeField] private DialoguePanel m_dialoguePanel; - [SerializeField] private List m_characterDatas; // DEBUG - Will need replacing with the character you selected. private void Start() { - DisplayCharacterText(m_characterDatas[0]); + DisplayCharacterText(CharacterManager.Instance.CharacterDatas[0]); + + m_dialoguePanel.OnQuestionsFinished += OnQuestionsFinished; } public void DisplayCharacterText(CharacterData character) { m_dialoguePanel.Setup(character); } + + public void OnQuestionsFinished(string characterName) + { + Debug.Log($"DialogueController: Character {characterName} finished interviewing"); + + CharacterManager.Instance.SetInterviewed(characterName); + + // TODO: stop the dialogue and return to gameplay... + // TODO: we could probably show a "Quit" button highlighted. + } } diff --git a/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs b/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs index 1212329..9c92f48 100644 --- a/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs +++ b/Assets/Scripts/DialogueSystem/UI/DialoguePanel.cs @@ -1,3 +1,4 @@ +using System; using System.Collections; using TMPro; using UnityEngine; @@ -5,17 +6,25 @@ using UnityEngine.UI; public class DialoguePanel : MonoBehaviour { + public Action OnQuestionsFinished; + [SerializeField] private Transform m_questionHolder; [SerializeField] private Button m_questionButton; [SerializeField] private TMP_Text m_characterNameText; [SerializeField] private TMP_Text m_characterText; + [SerializeField] private CharacterSheetController m_characterSheetController; private const float TypingSpeed = 0.03f; private CharacterData m_currentCharacter; private bool m_skipped = false; + private int m_questionCount = QuestionData.Questions.Length; + private int m_questionsAsked = 0; + + private bool QuestionsFinished => m_questionsAsked >= m_questionCount; + private void Awake() { PopulateQuestionButtons(); @@ -27,6 +36,9 @@ public class DialoguePanel : MonoBehaviour { Cleanup(); + m_characterSheetController.Cleanup(); + m_characterSheetController.SetName(characterData.name); + m_currentCharacter = characterData; m_characterNameText.text = characterData.name; @@ -84,6 +96,13 @@ public class DialoguePanel : MonoBehaviour m_skipped = true; m_characterText.text = text; + // If we've asked all the questions we should mark this character as interviewed and continue. + if (QuestionsFinished) + { + OnQuestionsFinished?.Invoke(m_currentCharacter.name); + yield break; + } + // Re-enable the questions. m_questionHolder.gameObject.SetActive(true); } @@ -91,14 +110,16 @@ public class DialoguePanel : MonoBehaviour // Handles displaying the correct dialogue for the question. private void OnQuestionButtonClicked(int index) { - //Debug.Log("Player picked option " + index); - Cleanup(); var dialogueOption = m_currentCharacter.m_dialogueOptions[index]; StartCoroutine(DisplayText(dialogueOption.text)); // TODO: we should update the sheet with this information. + m_characterSheetController.AddLine(dialogueOption.text); + + // Increment questions asked. + m_questionsAsked++; } // Callback from Unity on the skip button.