private static DialogPage translate_dialog(dialog dlg) { DialogPage dp = new DialogPage(null); dp.Label = dlg.name; dp.DisplayText = dlg.starting_text; dp.Options = new ObservableCollection <DialogOption>(); foreach (var choice in dlg.choices) { DialogOption option = new DialogOption(); option.LabelBinding = choice.tree; option.DisplayText = choice.text; if (choice.target != "self") { option.Command = choice.target; } for (int i = 0; i < choice.conditions.Count; i++) { option.Conditions[i].Skill = choice.conditions[i].name; option.Conditions[i].Value = choice.conditions[i].value; switch (choice.conditions[i].op) { case "=": option.Conditions[i].Type = ConditionTypes.Equal; break; case "!": option.Conditions[i].Type = ConditionTypes.NotEqual; break; case ">": option.Conditions[i].Type = ConditionTypes.GreaterThan; break; case "<": option.Conditions[i].Type = ConditionTypes.LessThan; break; } } for (int i = 0; i < choice.modifiers.Count; i++) { option.Modifiers[i].Skill = choice.modifiers[i].name; option.Modifiers[i].Value = choice.modifiers[i].value; switch (choice.modifiers[i].op) { case "=": option.Modifiers[i].Type = ModifierTypes.Equal; break; case "+": option.Modifiers[i].Type = ModifierTypes.Add; break; case "-": option.Modifiers[i].Type = ModifierTypes.Subtract; break; case "*": option.Modifiers[i].Type = ModifierTypes.Multiply; break; case "/": option.Modifiers[i].Type = ModifierTypes.Divide; break; case "^": option.Modifiers[i].Type = ModifierTypes.Execute; break; } } dp.Options.Add(option); } return(dp); }
private static void translate_page(DialogPage page, dialogs dlgs) { if (page == null) { return; } dialog dlg = new dialog(); dlgs.items.Add(dlg); dlg.name = page.Label; dlg.starting_text = page.DisplayText; foreach (var option in page.Options) { if (String.IsNullOrWhiteSpace(option.DisplayText)) { continue; } choice ch = new choice(); ch.text = option.DisplayText; ch.tree = option.Label; if (!String.IsNullOrWhiteSpace(option.Command)) { ch.target = option.Command; } else { ch.target = "self"; } foreach (var condition in option.Conditions) { if (String.IsNullOrEmpty(condition.Skill)) { continue; } condition con = new condition(); con.name = condition.Skill; con.op = condition.TypeString; con.value = condition.Value; ch.conditions.Add(con); } foreach (var modifier in option.Modifiers) { if (String.IsNullOrEmpty(modifier.Skill)) { continue; } modifiers mod = new modifiers(); mod.name = modifier.Skill; mod.op = modifier.TypeString; mod.value = modifier.Value; ch.modifiers.Add(mod); } dlg.choices.Add(ch); translate_page(option.Target, dlgs); } }