Exemple #1
0
    public Structure(string name, Vector3 location, Random random, Module module) : base(name, location, random)
    {
        base.type = PointOfInterestType.Structure;

        _module = module;
        _event  = EventDB.GetByName(name);
    }
    public void StartDialogue(DialogueEvent d)
    {
        m_Animator.SetBool("isVisible", true);

        StopAllCoroutines();
        StartCoroutine(RunDialogue(d, 0));
    }
Exemple #3
0
 public void SetUiForEvent(DialogueEvent ev)
 {
     if (ev.GetType() == typeof(PhraseEvent))
     {
         glue.ShowPhraseUi((PhraseEvent)ev);
     }
     else if (ev.GetType() == typeof(DialogueChoiceEvent))
     {
         glue.ShowChoiceUi((DialogueChoiceEvent)ev);
     }
     else if (ev.GetType() == typeof(BackgroundChangeEvent))
     {
         var bev = (BackgroundChangeEvent)getEventById(currentId);
         currentId = bev.nextEventId;
         glue.ChangeBackground(bev);
         SetUiForEvent(getEventById(currentId));
     }
     else if (ev.GetType() == typeof(FinalDialogueEvent))
     {
         glue.ShowEndingUi((FinalDialogueEvent)ev);
     }
     else if (ev.GetType() == typeof(ChooseGenderEvent))
     {
         glue.ShowGenderUi();
     }
     else if (ev.GetType() == typeof(PlayerPhraseEvent))
     {
         glue.ShowPlayerUi((PlayerPhraseEvent)ev);
     }
     else
     {
         Debug.LogError("Unhandled event type " + ev.GetType());
     }
 }
Exemple #4
0
 void OnDialogueEvent(DialogueEvent e)
 {
     if (!e.ongoing)
     {
         StartCoroutine(TransitionAfterFirstBerth(e.firstEncounter));
     }
 }
Exemple #5
0
 /**
  * Handles events brought up by EventNodes triggers
  */
 public void HandleEvent(DialogueEventsEnum dialogueEventsEnum, DialogueEvent dialogueEvent)
 {
     if (isActive)
     {
         GameManager.HandleDialogueEvent(dialogueEventsEnum, dialogueEvent);
     }
 }
        private void HandleDialogue(Dialogue dialogue)
        {
            displayManager.UpdateSprint(false);

            DialogueEvent dialogueEvent = dialogue.dialogueEvent;
            float         zoomOverride  = dialogue.zoomOverride;

            switch (dialogueEvent)
            {
            case DialogueEvent.ZoomToPlayer:
                cinematicManager.CinematicType = CinematicType.TurnipAndPlayer;
                cameraManager.ZoomOverride     = zoomOverride;
                break;

            case DialogueEvent.ZoomToTurnip:
                cinematicManager.CinematicType = CinematicType.Turnip;
                cameraManager.ZoomOverride     = zoomOverride;
                break;

            case DialogueEvent.ShowLantern:
                cinematicManager.CinematicType = CinematicType.TurnipAndLantern;
                cameraManager.ZoomOverride     = zoomOverride;
                displayManager.UpdateSprint(true);
                break;

            case DialogueEvent.ShowPowerUp:
                cinematicManager.CinematicType = CinematicType.Turnip;
                cameraManager.ZoomOverride     = zoomOverride;
                break;
            }
        }
Exemple #7
0
 /// <summary>
 /// Opens the dialuge UI
 /// </summary>
 public void OpenDialogueManagerUI(DialogueEvent dialogueEvent)
 {
     dialogueTextContainer.gameObject.SetActive(true);
     this.enabled = true;
     this.currentlyAssignedDialogueEvent = dialogueEvent;
     DrawNextDialogueNode(dialogueEvent.ResetDialogueEvent());
 }
Exemple #8
0
 private void HandleChangeBackgroundEvent(DialogueEvent ev)
 {
     string[] parameters = ev.parameters;
     if (parameters.Length <= 0)
     {
         Debug.LogWarning("ChangeBackground event need at least one integer argument\n" +
                          "ChangeBackground(int index); ChangeBackground(int index, float fadeDuration);");
     }
     else if (parameters.Length == 1)
     {
         //ChangeBackground(int backgroundIndex)
         if (parameters.Length == 1 && isInteger(parameters[0]))
         {
             ChangeBackground(Int32.Parse(ev.parameters[0]));
         }
         else
         {
             Debug.LogWarning("Invalid Parameters/ ChangeBackground(int index)");
         }
     }
     else
     {
         if (isInteger(parameters[0]) && isFloat(parameters[1]))
         {
             ChangeBackground(Int32.Parse(parameters[0]), float.Parse(parameters[1]));
         }
         else
         {
             Debug.LogWarning("Invalid Parameter / ChangeBackground(int index, float fadeTime)");
         }
     }
 }
    // NOTE: SPEECHLINE VARIABLES ARE {{ }}, THIS CLASS SHOULD INJECT THE CORRECT VARIABLE FOR THE SITUATION
    public void ExecuteEventWithVars(string filename, Dictionary <string, string> vars) // vars should be: variable name, variable value
    {
        // fetch the dialogue information
        DialogueText dialogueText = new DialogueText();

        dialogueText.ReadRawLinesFromFile(filename);

        // inject {{vars}} in order
        foreach (KeyValuePair <string, string> entry in vars)
        {
            // search each line for the variable and inject as needed
            foreach (List <SpeechLine> lines in dialogueText.lines)
            {
                foreach (SpeechLine line in lines)
                {
                    if (line.lineText.Contains("{{" + entry.Key + "}}"))
                    {
                        Debug.Log("Injecting var " + entry.Key + " into " + filename + "...");
                        line.lineText = line.lineText.Replace("{{" + entry.Key + "}}", entry.Value);
                    }
                }
            }
        }

        // execute event
        DialogueEvent.ExecuteEvent(dialogueText);
    }
Exemple #10
0
        protected override IEnumerator RevealCharacters(TMP_Text textComponent)
        {
            textComponent.ForceMeshUpdate();

            TMP_TextInfo textInfo = textComponent.textInfo;

            int totalVisibleCharacters = textInfo.characterCount; // Get # of Visible Character in text object
            int visibleCount           = 0;

            textComponent.maxVisibleCharacters = visibleCount;

            yield return(new WaitForSeconds(_delayDuration));

            while (!DialogueManager.Instance._isEnd)
            {
                if (_isTextChanged)
                {
                    totalVisibleCharacters = textInfo.characterCount; // Update visible character count.
                    _isTextChanged         = false;
                }

                /// 다음 페이지 경우 관련 변수 초기화
                if (_isNextPage)
                {
                    yield return(new WaitForSeconds(_duration));

                    _isNextPage  = false;
                    visibleCount = 0;

                    yield return(new WaitForSeconds(_delayDuration));
                }

                /// 사운드 처리
                if (0 < visibleCount && visibleCount < textComponent.text.Length)
                {
                    char ch = textComponent.text[visibleCount - 1];
                    PlaySound(ch);
                }

                /// 한 글자씩 밝혀짐
                textComponent.maxVisibleCharacters = visibleCount; // How many characters should TextMeshPro display?
                yield return(new WaitForSeconds(_typingDelay));

                visibleCount += 1;

                /// 다음 페이지를 기다림
                if (visibleCount > textComponent.text.Length)
                {
                    yield return(StartCoroutine(WaitUntilInput()));

                    yield return(new WaitForSeconds(0.2f));
                }
            }

            /// 대화 끝
            DialogueEvent.Trigger(_id, null, 0, "", DialogueStatus.End);
            _battleDialogueController._isEnd = true;
            yield break;
        }
    public void DisplayDialogueEvent(DialogueEvent dialogueEvent)
    {
        content.text = dialogueEvent.prompt;

        // maybe randomize order of choices?
        leftChoice.text  = dialogueEvent.choiceA.content;
        rightChoice.text = dialogueEvent.choiceB.content;
    }
Exemple #12
0
 public void NextDialogue()
 {
     _isEnd = false;
     if (DialogueManager.Instance._isEnd)
     {
         DialogueEvent.Trigger(_id, _textPages, 0, _typingSound, DialogueStatus.Start);
     }
 }
    void CreateListener(DialogueEvent dialogueEvent)
    {
        var listener = new DialogueEventListener
        {
            DialogueEvent = dialogueEvent
        };

        system.listeners.Add(listener);
    }
    void Awake()
    {
        if (diagEvent == null)
        {
            diagEvent = new DialogueEvent();
        }

        diagEvent.AddListener(ChangeDialogueState);
    }
    public void ExecuteEvent(string filename)
    {
        Debug.Log("Executing dialogue event: " + filename);

        // fetch the dialogue information
        DialogueText dialogueText = new DialogueText();

        dialogueText.ReadRawLinesFromFile(filename);
        DialogueEvent.ExecuteEvent(dialogueText);
    }
	// Update is called once per frame
	private void SetText(DialogueEvent evt)
	{
		dialogueText.text = evt.dialoguetext;
		
		if (!isPlaying) {
			dialogueText.color = originalColor;
			StartFade();
			animationController.Play("DialogueBox");
			isPlaying = true;
		}
	}
 void Awake()
 {
     foreach (MonoBehaviour script in gameObject.GetComponents <MonoBehaviour>())
     {
         DialogueEvent s = script as DialogueEvent;
         if (s != null)
         {
             events.Add(s);
         }
     }
 }
Exemple #18
0
            public static DialogueEvent Prepare(
                DialogueNode source,
                bool started
                )
            {
                var e = new DialogueEvent();

                e.Source  = source;
                e.Started = started;

                return(e);
            }
Exemple #19
0
    // Update is called once per frame
    private void SetText(DialogueEvent evt)
    {
        dialogueText.text = evt.dialoguetext;

        if (!isPlaying)
        {
            dialogueText.color = originalColor;
            StartFade();
            animationController.Play("DialogueBox");
            isPlaying = true;
        }
    }
Exemple #20
0
 private void CheckEvent()
 {
     if (Physics2D.OverlapCircle(transform.position, 0.1f, eventLayer) != null)
     {
         Collider2D[] collider = new Collider2D[20];
         Physics2D.OverlapCircleNonAlloc(transform.position, 0.1f, collider, eventLayer);
         DialogueEvent dialogueEvent = collider [0].GetComponent <DialogueEvent>();
         dialogueEvent.Deactivate();
         onDialogue(dialogueEvent.dialogue);
         onEvent = true;
     }
 }
Exemple #21
0
        public void notifyDialogueEvent(DialogueEvent eventType)
        {
            // NOTE: IDialogueTrigger listener method implementation.
            switch (eventType)
            {
            case DialogueEvent.End:
                isActive = false;
                break;

            default:
                break;
            }
        }
Exemple #22
0
    /// <summary>
    /// Update the next dialogue line.
    /// </summary>
    public void DequeueDialogue()
    {
        if (isCurrentlyTyping)
        {
            if (isBuffering)
            {
                return;
            }
            CompleteText();
            StopAllCoroutines();
            isCurrentlyTyping = false;
            return;
        }

        // Set the current Dialogue Line.
        dialogueLineIndex++;

        // Check for events to be fired.
        if (hasDialogueEvents)
        {
            DialogueEvent dialogueEvent = dialogue as DialogueEvent;
            foreach (DialogueEvent.Event a_event in dialogueEvent.dialogueEvents)
            {
                if (a_event.eventLine == dialogueLineIndex)
                {
                    a_event.myEvent?.Invoke();
                }
            }
        }

        // Close dialogue box when reaching the end.
        if (dialogueInfo.Count == 0)
        {
            if (isDialogueOption)
            {
                OptionsLogic();
            }
            else
            {
                CloseDialogue();
            }
            return;
        }

        DialogueBase.Info info = dialogueInfo.Dequeue();
        completeText = info.text;

        dialogueText.text = "";
        StartCoroutine(TypeText(info));
    }
Exemple #23
0
        public void TriggerEventForAction(DialogueEvent action)
        {
            switch (action)
            {
            case DialogueEvent.StartQuest:
                Debug.Log("Start Quest");
                TriggerQuestIfAny();
                break;

            case DialogueEvent.CompleteQuest:
                CompleteQuestIfAny();
                break;
            }
        }
Exemple #24
0
 public void ExecuteEventDialogue(DialogueEvent dialogueEvent,
                                  CurrentStatistics currentStats,
                                  EventFinishCallback eventFinishCallback)
 {
     isExecutingEvent         = true;
     isMakingChoice           = false;
     this.diaEvent            = dialogueEvent;
     this.currentStats        = currentStats;
     this.eventFinishCallback = eventFinishCallback;
     randomDistrictIndex      = -1;
     lineIndex = 0;
     ExecuteDialogueLine();
     gameObject.GetComponent <Button>().interactable = true;
 }
Exemple #25
0
    public void loadDiag(DialogueEvent diagEvent)
    {
        textMesh.text = diagEvent.diags[diagIndex];
        portraits[diagEvent.portraits[diagIndex]].SetActive(true);
        changeDiag = false;
        mode       = 1;
        currDiag   = diagEvent;
        diagIndex  = 0;


        Debug.Log("Activating");
        active = true;
        textPanel.SetActive(true);
    }
Exemple #26
0
    public Dialogue[] GetDialogues()
    {
        DialogueEvent t_DialogueEvent = new DialogueEvent();

        t_DialogueEvent.dialogues = DatabaseManager.instance.GetDialogue((int)dialogueEvent.line.x, (int)dialogueEvent.line.y);
        for (int i = 0; i < dialogueEvent.dialogues.Length; i++)
        {
            t_DialogueEvent.dialogues[i].tf_target = dialogueEvent.dialogues[i].tf_target;
            t_DialogueEvent.dialogues[i].camType   = dialogueEvent.dialogues[i].camType;
        }

        dialogueEvent.dialogues = t_DialogueEvent.dialogues;

        return(dialogueEvent.dialogues);
    }
Exemple #27
0
    IEnumerator DialogueSequence(DialogueEvent e)
    {
        if (FindObjectOfType <Stan>())
        {
            FindObjectOfType <Stan>().SayWithText(e.text, e.audio);
            float realDuration = (e.audio == null) ? e.duration : e.audio.length;
            yield return(new WaitForSeconds(realDuration));

            FindObjectOfType <Stan>().ClearDialogueText();
        }
        else
        {
            Debug.LogError("WHERE'S STAN?!");
        }
    }
    public void DisplayDialogueEvent(DialogueEvent dialogue)
    {
        for (int i = 0; i < _options.childCount; i++)
        {
            Destroy(_options.GetChild(i).gameObject);
        }

        //create options
        for (int i = 0; i < dialogue.options.Count; i++)
        {
            CreateDialogueOption(dialogue.options[i], i);
        }

        LogManager.getInstance.AddEntry("[Event Received]: '" + dialogue.name + "'", 15f, EntryType.Dialogue);

        _header.text = CommandManager.ProcessFlags(dialogue.name);
        _body.text   = CommandManager.ProcessFlags(dialogue.body);

        float height = 0;

        //header
        height += 5 + 15 + 5;
        //art
        height += 150 + 5;
        //body
        float bodyHeight = _body.preferredHeight;

        RectTransform bt = (RectTransform)_body.transform.parent;

        bt.sizeDelta = new Vector2(bt.sizeDelta.x, bodyHeight);

        height += bodyHeight + 5;

        //options
        int optionsHeight = 25 * (dialogue.options.Count) + 5 * (dialogue.options.Count - 1);

        RectTransform ot = (RectTransform)_options;

        ot.sizeDelta = new Vector2(ot.sizeDelta.x, optionsHeight);

        height += optionsHeight + 5;

        RectTransform rt = (RectTransform)_window.transform;

        rt.sizeDelta = new Vector2(rt.sizeDelta.x, height);

        _window.gameObject.SetActive(true);
    }
 void DrawEventAssignmentForm()
 {
     GUILayout.BeginVertical(GetBoxStyle());
     GUILayout.Label("Add new DialogueEvent Listener");
     assingingGameEvent = (DialogueEvent)EditorGUILayout.ObjectField(
         assingingGameEvent, typeof(DialogueEvent), false);
     if (GUILayout.Button("Add"))
     {
         if (assingingGameEvent != null)
         {
             CreateListener(assingingGameEvent);
             assingingGameEvent = null;
         }
     }
     GUILayout.EndVertical();
 }
Exemple #30
0
 private void HandleChangeVolumeBGMEvent(DialogueEvent ev)
 {
     if (ev.parameters.Length <= 0)
     {
         Debug.LogWarning("ChangeVolumeBGM need at least one float argument");
     }
     else
     {
         if (isFloat(ev.parameters[0]))
         {
             ChangeVolumeBGM(float.Parse(ev.parameters[0]));
         }
         else
         {
             Debug.LogWarning("Invalid argument/ ChangeVolumeBGM(float volume) - range: 0-1");
         }
     }
 }
Exemple #31
0
        private void HandleMoveCharacterEvent(DialogueEvent ev)
        {
            var parameters = ev.parameters;

            if (parameters.Length < 2 || String.IsNullOrWhiteSpace(parameters[0]))
            {
                Debug.LogWarning("HandleMoveCharacterEvent needs at least two arguments HandleMoveCharacterEvent(string name, float posX)");
                return;
            }
            GameObject character;

            if (!characterDictionary.TryGetValue(parameters[0], out character))
            {
                Debug.LogWarning("This character name doesn't exist");
                return;
            }

            var   characterReactTransform = character.GetComponent <RectTransform>();
            float posX = characterReactTransform.localPosition.x;
            float posY = characterReactTransform.localPosition.y;

            if (!isFloat(parameters[1]))
            {
                Debug.LogWarning("Invalid second argument - float posX/ HandleMoveCharacterEvent(string name, float posX)");
            }
            else
            {
                posX = float.Parse(parameters[1]);
            }
            if (parameters.Length >= 3)
            {
                if (!isFloat(parameters[2]))
                {
                    Debug.LogWarning("Invalid second argument - float posX/ HandleMoveCharacterEvent(string name, float posX, float posY)");
                }
                else
                {
                    posY = float.Parse(parameters[2]);
                }
            }
            Image imageComponent = character.GetComponent <Image>();

            ChangeCharacter(imageComponent, imageComponent.sprite, posX, posY, characterReactTransform.localScale.x, characterReactTransform.localScale.y);
        }
	public void MapBlob(string blob)
	{
		var parsed = JSON.Parse(blob);
		var threads = parsed["TextThreads"].AsArray;
		
		TextThreads = new List<TextThread>();
		foreach(var thread in threads.Childs)
		{
			TextThread newThread = new TextThread();
			
			newThread.IsDefaultThread = thread["IsDefaultThread"].AsBool;
			newThread.Name = thread["Name"];
			
			var sequenceState = thread["SequenceState"].AsObject;
			SequenceRange newState = new SequenceRange();
			newState.Name = sequenceState["Name"];
			newState.MinCounter = sequenceState["MinCounter"].AsInt;
			newState.MaxCounter = sequenceState["MaxCounter"].AsInt;
			newThread.SequenceRange = newState;
			
			newThread.TextContent = new List<TextContent>();
			var content = thread["TextContent"].AsArray;
			foreach(var contentItem in content.Childs)
			{
				TextContent newTextContent = new TextContent();
				newTextContent.Speaker = contentItem["Speaker"];
				newTextContent.Dialogue = contentItem["Dialogue"];
				newTextContent.DialogueEvents = new List<DialogueEvent>();

				// Map Dialogue Options...
				newTextContent.Options = new List<DialogueOption>();
				var dialogueOptions = contentItem["Options"];
				foreach(var dialogueOption in dialogueOptions.Childs)
				{
					DialogueOption newOption = new DialogueOption();
					newOption.Text = dialogueOption["Text"];
					newOption.TargetID = dialogueOption["TargetID"].AsInt;

					newTextContent.Options.Add(newOption);
				}

				// Map Dialogue Events...
				var dialogueEvents = contentItem["DialogueEvents"].AsArray;
				foreach(var dialogueEvent in dialogueEvents.Childs)
				{
					DialogueEvent newDialogueEvent = new DialogueEvent();
					newDialogueEvent.MessageName = dialogueEvent["MessageName"];
					newDialogueEvent.Args = new List<string>();
					
					var eventArgs = dialogueEvent["Args"].AsArray;
					foreach(var eventArg in eventArgs.Childs)
					{
						newDialogueEvent.Args.Add(eventArg);
					}
					
					newTextContent.DialogueEvents.Add(newDialogueEvent);
				}
				
				newThread.TextContent.Add(newTextContent);
			}
			
			TextThreads.Add(newThread);
		}
	}