Exemplo n.º 1
0
        void ctr_OnRefresh(object sender, RoutedEventArgs e)
        {
            DialogOption senderOption = (DialogOption)(((Control)sender).DataContext);
            var          page         = DataContext as DialogPage;

            if (!senderOption.Enabled && !String.IsNullOrWhiteSpace(senderOption.Label))
            {
                page.EnableOption(senderOption);
            }

            page.OnPropertyChanged("Options");

            foreach (var option in page.Options)
            {
                option.RefreshBinding();
            }
            stackPanel.Children.Clear();
            BindOptions();
        }
Exemplo n.º 2
0
        public void EnableOption(DialogOption option)
        {
            if (option.Enabled || string.IsNullOrWhiteSpace(option.Label))
            {
                return;
            }

            option.Enabled = true;
            option.Target  = new DialogPage(mOwner);
            var dv = mOwner.createNewVertex(option.Target);

            option.Target.PageOwner   = this;
            option.Target.OptionOwner = option;
            option.Target.Label       = option.LabelBinding;
            option.Target.Vertex      = dv;
            option.Parent             = this;
            option.Command            = option.Command;
            mOwner.AddNode(dv);
            mOwner.LinkNodes(this.Vertex, dv);
            mOwner.Redraw();
        }
Exemplo n.º 3
0
        private void BindOptions()
        {
            DialogPage dp = (DialogPage)DataContext;

            bool needNew = true;
            var  options = dp.Options;

            foreach (var option in options)
            {
                if (String.IsNullOrEmpty(option.Label))
                {
                    needNew = false;
                }

                DialogOptionControl ctr = new DialogOptionControl();
                ctr.OnOpen             += ctr_OnOpen;
                ctr.OnRefresh          += ctr_OnRefresh;
                ctr.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                ctr.DataContext         = option;

                stackPanel.Children.Add(ctr);
            }

            if (needNew)
            {
                DialogOption option = new DialogOption();

                DialogOptionControl ctr = new DialogOptionControl();
                ctr.OnOpen             += ctr_OnOpen;
                ctr.OnRefresh          += ctr_OnRefresh;
                ctr.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
                ctr.DataContext         = option;
                stackPanel.Children.Add(ctr);
                dp.AddOption(option);
            }
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 public void AddOption(DialogOption option)
 {
     Options.Add(option);
 }