void Start() { if (dialogView == null) { dialogView = FindObjectOfType <DialogViewer>(); } if (dict == null) { dict = GetComponentInChildren <ScriptedDictionary>(); } Dialog[] dialogs; //NonStandard.Show.Log(knownAssets.JoinToString(", ", ta => ta.name)); //NonStandard.Show.Log(root.name+":" + root.text.Length); Tokenizer tokenizer = new Tokenizer(); if (dict != null) { Global.GetComponent <ScriptedDictionaryManager>().SetMainDicionary(dict); } try { CodeConvert.TryParse(root.text, out dialogs, dict.Dictionary, tokenizer); tokenizer.ShowErrorTo(NonStandard.Show.Error); if (dialogs == null) { return; } //NonStandard.Show.Log("dialogs: [" + d.Stringify(pretty:true)+"]"); this.dialogs.AddRange(dialogs); ResolveTemplatedDialogs(this.dialogs); } catch (System.Exception e) { NonStandard.Show.Log("~~~#@Start " + e); } //NonStandard.Show.Log("finished initializing " + this); //NonStandard.Show.Log(this.dialogs.JoinToString(", ", dialog => dialog.name)); // execute all "__init__" dialogs ScriptedDictionaryManager m = Global.Get <ScriptedDictionaryManager>(); object standardScope = m.Main; //Commander.Instance.GetScope(); for (int i = 0; i < this.dialogs.Count; ++i) { Dialog dialog = this.dialogs[i]; if (!dialog.name.StartsWith("__init__")) { continue; } //NonStandard.Show.Log("initializing "+dialog.name); Tokenizer tok = new Tokenizer(); dialog.ExecuteCommands(tok, standardScope); if (tok.HasError()) { tok.ShowErrorTo(NonStandard.Show.Warning); } } //NonStandard.Show.Log(standardScope.Stringify(pretty: true)); }
public void SetDialog(object src, Tokenizer tok, Dialog dialog, UiPolicy uiPolicy) { if (!initialized) { Init(); } bool isScrolledAllTheWayDown = !scrollRect.verticalScrollbar.gameObject.activeInHierarchy || scrollRect.verticalNormalizedPosition < 1f / 1024; // keep scrolling down if really close to bottom switch (uiPolicy) { case UiPolicy.StartOver: RemoveDialogElements(); break; case UiPolicy.DisablePrev: DeactivateDialogChoices(); break; case UiPolicy.Continue: break; } if (dialog == null) { tok.AddError("missing dialog"); return; } if (dialog.options != null) { for (int i = 0; i < dialog.options.Length; ++i) { Dialog.DialogOption opt = dialog.options[i]; //NonStandard.Show.Log("checking opt " + NonStandard.Show.Stringify(opt, false)); ScriptedDictionaryManager m = Global.Get <ScriptedDictionaryManager>(); if (opt.Available(tok, m.Main)) { AddDialogOption(opt, isScrolledAllTheWayDown); //NonStandard.Show.Log("added" + NonStandard.Show.Stringify(opt, false)); } else { //NonStandard.Show.Log("ignored" + NonStandard.Show.Stringify(opt, false)); } } } ShowErrors(tok.errors); onDialog?.Invoke(); }