public List <Trait> getPreviouslyBoundPrimitiveVariables(TraitDataType variableType, bool allTypes, Constraint currentConstraint)
        {
            PlotFragment parentFrag   = StoryWorldDataProvider.getStoryData().findPlotFragmentById(_parentPlotFragmentId);
            List <Trait> varsToReturn = parentFrag.getPreviouslyBoundPrimitiveVariables(variableType, allTypes, this);


            foreach (Constraint cons in Constraints)
            {
                if (cons == currentConstraint)
                {
                    //We have found where to stop looking, can now return variable list
                    return(varsToReturn);
                }
                else if (cons.ContainsSavedVariable)
                {
                    if (allTypes || (cons.SavedVariable.Type == variableType))
                    {
                        //Add the variable names bound in this constraint to the running list
                        varsToReturn.Add(cons.SavedVariable);
                    }
                }
            }

            return(varsToReturn);
        }
Example #2
0
        private void dataBind()
        {
            textBoxInput.Text = _textOutputAction.TextOutput;



            comboVariables.ItemsSource   = _parentPlotFrag.getPreviouslyBoundPrimitiveVariables(TraitDataType.Number, true, _textOutputAction);
            comboVariables.SelectedIndex = 0;

            if (comboVariables.Items.Count == 0)
            {
                comboVariables.IsEnabled   = false;
                btInsertVariable.IsEnabled = false;
            }
        }
Example #3
0
        private void dataBind()
        {
            _currentlyDataBinding = true;

            switch (_editingMode)
            {
            case 0:
                titleTextBlock.Text = "Edit Character: " + _currentEntity.VariableObjectName;
                break;

            case 1:
                titleTextBlock.Text = "Edit Environment: " + _currentEntity.VariableObjectName;
                break;

            case 2:
                titleTextBlock.Text = "Edit " + _ppType.Description + ": " + _currentEntity.VariableObjectName;
                break;
            }

            //Top combobox
            List <string> attributeOptions = new List <string>();

            attributeOptions.Add("Edit Trait");

            //Only add relationship editors if there relationships that can be edited
            if ((_editingMode == 0) && (Utilities.getGlobalCharacterList(_currentStoryData)[0].Relationships.Count > 0))
            {
                attributeOptions.Add("Edit Relationship Target");
                attributeOptions.Add("Edit Relationship Strength");
            }
            else if ((_editingMode == 1) && (Utilities.getGlobalEnvironmentList(_currentStoryData)[0].Relationships.Count > 0))
            {
                attributeOptions.Add("Edit Relationship Target");
                attributeOptions.Add("Edit Relationship Strength");
            }

            comboBoxTraitRelationship.ClearValue(ComboBox.ItemsSourceProperty);
            comboBoxTraitRelationship.Items.Clear();
            comboBoxTraitRelationship.ItemsSource = attributeOptions;

            switch (_currentEntity.Mode)
            {
            case ObjectEditingMode.Trait:
                comboBoxTraitRelationship.SelectedIndex = 0;
                break;

            case ObjectEditingMode.RelationshipTarget:
                comboBoxTraitRelationship.SelectedIndex = 1;
                break;

            case ObjectEditingMode.RelationshipStrength:
                comboBoxTraitRelationship.SelectedIndex = 2;
                break;
            }

            //Left combobox

            if (_currentEntity.Mode == ObjectEditingMode.Trait)
            {
                if (_editingMode == 0)
                {
                    comboBoxSelectTraitRel.ItemsSource = Utilities.getGlobalCharacterList(_currentStoryData)[0].Traits;
                }
                else if (_editingMode == 1)
                {
                    comboBoxSelectTraitRel.ItemsSource = Utilities.getGlobalEnvironmentList(_currentStoryData)[0].Traits;
                }
                else if (_editingMode == 2)
                {
                    comboBoxSelectTraitRel.ItemsSource = _ppType.Traits;
                }
            }
            else if (_currentEntity.Mode == ObjectEditingMode.RelationshipTarget)
            {
                if (_editingMode == 0)
                {                                       // Using get GLOBAL list (includes not just static characters, but ones
                                                        //created within plot fragments. This way the user doesn't need to
                                                        //have created any static character lists to make plot fragment actions
                                                        //that edit dynamically generated objects
                    comboBoxSelectTraitRel.ItemsSource = Utilities.getGlobalCharacterList(_currentStoryData)[0].Relationships;
                }
                else if (_editingMode == 1)
                {
                    comboBoxSelectTraitRel.ItemsSource = Utilities.getGlobalEnvironmentList(_currentStoryData)[0].Relationships;
                }
            }
            else if (_currentEntity.Mode == ObjectEditingMode.RelationshipStrength)
            {
                if (_editingMode == 0)
                {
                    comboBoxSelectTraitRel.ItemsSource = Utilities.getGlobalCharacterList(_currentStoryData)[0].Relationships;
                }
                else if (_editingMode == 1)
                {
                    comboBoxSelectTraitRel.ItemsSource = Utilities.getGlobalEnvironmentList(_currentStoryData)[0].Relationships;
                }
            }

            //checkbox
            if (_currentEntity.Mode == ObjectEditingMode.Trait)
            {
                checkBoxUseVariable.IsChecked = _currentEntity.NewValue.ValueIsBoundToVariable;
            }
            else if (_currentEntity.Mode == ObjectEditingMode.RelationshipTarget)
            {
                checkBoxUseVariable.IsChecked = _currentEntity.NewTarget.ValueIsBoundToVariable;
            }
            else if (_currentEntity.Mode == ObjectEditingMode.RelationshipStrength)
            {
                checkBoxUseVariable.IsChecked = _currentEntity.NewValue.ValueIsBoundToVariable;
            }

            //Value boxes
            if (_currentEntity.Mode == ObjectEditingMode.Trait)
            {
                if (_currentEntity.NewValue.ValueIsBoundToVariable)
                {
                    textBoxTextInput.Visibility     = Visibility.Hidden;
                    txtBoxNumberInput.Visibility    = Visibility.Hidden;
                    comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                    comboChoiceVariables.Visibility = Visibility.Visible;
                    checkBoxUseVariable.Visibility  = Visibility.Visible;

                    //Data bind variable list
                    comboChoiceVariables.ItemsSource  = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.NewValue.Type, false, _currentEntity);
                    comboChoiceVariables.ItemTemplate = this.FindResource("comboBoxDataTemplate") as DataTemplate;
                }
                else
                {
                    TraitDataType type = _currentEntity.NewValue.Type;
                    if (type == TraitDataType.Number)
                    {
                        textBoxTextInput.Visibility     = Visibility.Hidden;
                        txtBoxNumberInput.Visibility    = Visibility.Visible;
                        comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                        comboChoiceVariables.Visibility = Visibility.Hidden;

                        //Only show checkbox if there are actual variables to select
                        List <Trait> varList = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.NewValue.Type, false, _currentEntity);
                        if (varList.Count > 0)
                        {
                            checkBoxUseVariable.Visibility = Visibility.Visible;
                        }
                        else
                        {
                            checkBoxUseVariable.Visibility = Visibility.Hidden;
                        }

                        //Data bind Number
                        txtBoxNumberInput.Value = (double)_currentEntity.NewValue.LiteralValueOrBoundVarName;
                    }
                    else if (type == TraitDataType.Text)
                    {
                        textBoxTextInput.Visibility     = Visibility.Visible;
                        txtBoxNumberInput.Visibility    = Visibility.Hidden;
                        comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                        comboChoiceVariables.Visibility = Visibility.Hidden;

                        //Only show checkbox if there are actual variables to select
                        List <Trait> varList = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.NewValue.Type, false, _currentEntity);
                        if (varList.Count > 0)
                        {
                            checkBoxUseVariable.Visibility = Visibility.Visible;
                        }
                        else
                        {
                            checkBoxUseVariable.Visibility = Visibility.Hidden;
                        }

                        //Data bind text
                        textBoxTextInput.Text = (string)_currentEntity.NewValue.LiteralValueOrBoundVarName;
                    }
                    else if (type == TraitDataType.TrueFalse)
                    {
                        textBoxTextInput.Visibility     = Visibility.Hidden;
                        txtBoxNumberInput.Visibility    = Visibility.Hidden;
                        comboBoxTrueFalse.Visibility    = Visibility.Visible;
                        comboChoiceVariables.Visibility = Visibility.Hidden;

                        //Only show checkbox if there are actual variables to select
                        List <Trait> varList = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.NewValue.Type, false, _currentEntity);
                        if (varList.Count > 0)
                        {
                            checkBoxUseVariable.Visibility = Visibility.Visible;
                        }
                        else
                        {
                            checkBoxUseVariable.Visibility = Visibility.Hidden;
                        }

                        //Data bind true/false
                        comboBoxTrueFalse.SelectedIndex = ((bool)_currentEntity.NewValue.LiteralValueOrBoundVarName) ? 0 : 1;
                    }
                }
            }
            else if (_currentEntity.Mode == ObjectEditingMode.RelationshipTarget)
            {
                textBoxTextInput.Visibility     = Visibility.Hidden;
                txtBoxNumberInput.Visibility    = Visibility.Hidden;
                comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                comboChoiceVariables.Visibility = Visibility.Visible;
                checkBoxUseVariable.Visibility  = Visibility.Hidden;

                //Data bind variable list
                if (_editingMode == 0)
                {
                    comboChoiceVariables.ItemsSource  = _parentPlotFragment.getPreviouslyBoundCharacterVarNames(_currentEntity);
                    comboChoiceVariables.ItemTemplate = this.FindResource("comboBoxDataTemplateString") as DataTemplate;
                }
                else if (_editingMode == 1)
                {
                    comboChoiceVariables.ItemsSource  = _parentPlotFragment.getPreviouslyBoundEnvironmentVarNames(_currentEntity);
                    comboChoiceVariables.ItemTemplate = this.FindResource("comboBoxDataTemplateString") as DataTemplate;
                }
            }
            else if (_currentEntity.Mode == ObjectEditingMode.RelationshipStrength)
            {
                if (_currentEntity.NewValue.ValueIsBoundToVariable)
                {
                    textBoxTextInput.Visibility     = Visibility.Hidden;
                    txtBoxNumberInput.Visibility    = Visibility.Hidden;
                    comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                    comboChoiceVariables.Visibility = Visibility.Visible;
                    checkBoxUseVariable.Visibility  = Visibility.Visible;

                    //Data bind variable list
                    comboChoiceVariables.ItemsSource  = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.NewValue.Type, false, _currentEntity);
                    comboChoiceVariables.ItemTemplate = this.FindResource("comboBoxDataTemplate") as DataTemplate;
                }
                else
                {
                    textBoxTextInput.Visibility     = Visibility.Hidden;
                    txtBoxNumberInput.Visibility    = Visibility.Visible;
                    comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                    comboChoiceVariables.Visibility = Visibility.Hidden;

                    //Only show checkbox if there are actual variables to select
                    List <Trait> varList = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.NewValue.Type, false, _currentEntity);
                    if (varList.Count > 0)
                    {
                        checkBoxUseVariable.Visibility = Visibility.Visible;
                    }
                    else
                    {
                        checkBoxUseVariable.Visibility = Visibility.Hidden;
                    }
                    //Data bind Number
                    txtBoxNumberInput.Value = (double)_currentEntity.NewValue.LiteralValueOrBoundVarName;
                }
            }



            syncDataBoundComboBoxes();
            _currentlyDataBinding = false;
        }
        private void setupDataInputBoxes(TraitDataType type, bool variable)
        {
            if (variable)
            {
                textBoxTextInput.Visibility     = Visibility.Hidden;
                txtBoxNumberInput.Visibility    = Visibility.Hidden;
                comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                comboChoiceVariables.Visibility = Visibility.Visible;
                List <Trait> prevVars = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentlySelectedParameter.Type, false, _currentEntity);
                comboChoiceVariables.ClearValue(ComboBox.ItemsSourceProperty);
                comboChoiceVariables.Items.Clear();
                comboChoiceVariables.ItemsSource = prevVars;

                //Find variable in combobox list by name
                int  choiceIndex = 0;
                bool foundVar    = false;
                foreach (Trait traitItem in prevVars)
                {
                    if (traitItem.Name == (string)_currentlySelectedParameter.LiteralValueOrBoundVarName)
                    {
                        foundVar = true;
                        break;
                    }
                    choiceIndex++;
                }
                if (foundVar)
                {
                    comboChoiceVariables.SelectedIndex = choiceIndex;
                }
                else
                {
                    comboChoiceVariables.SelectedIndex = 0;
                }
            }
            else
            {
                if (type == TraitDataType.Text)
                {
                    textBoxTextInput.Visibility = Visibility.Visible;
                    textBoxTextInput.Text       = (string)_currentlySelectedParameter.Value;

                    txtBoxNumberInput.Visibility    = Visibility.Hidden;
                    comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                    comboChoiceVariables.Visibility = Visibility.Hidden;
                }
                else if (type == TraitDataType.Number)
                {
                    textBoxTextInput.Visibility = Visibility.Hidden;

                    txtBoxNumberInput.Visibility    = Visibility.Visible;
                    txtBoxNumberInput.Value         = _currentlySelectedParameter.Value;
                    comboBoxTrueFalse.Visibility    = Visibility.Hidden;
                    comboChoiceVariables.Visibility = Visibility.Hidden;
                }
                else if (type == TraitDataType.TrueFalse)
                {
                    textBoxTextInput.Visibility = Visibility.Hidden;

                    txtBoxNumberInput.Visibility = Visibility.Hidden;

                    comboBoxTrueFalse.Visibility = Visibility.Visible;
                    if ((bool)_currentlySelectedParameter.Value == true)
                    {
                        comboBoxTrueFalse.SelectedIndex = 0;
                    }
                    else
                    {
                        comboBoxTrueFalse.SelectedIndex = 1;
                    }
                    comboChoiceVariables.Visibility = Visibility.Hidden;
                }
            }
        }
Example #5
0
        private void dataBind()
        {
            titleTextBlock.Text = "Variable \"" + _currentEntity.ResultVarName + "\" = ";
            switch (_currentEntity.CalculationOp)
            {
            case CalculationOperation.Add:
                comboBoxOp.SelectedIndex = 0;
                break;

            case CalculationOperation.Subtract:
                comboBoxOp.SelectedIndex = 1;
                break;

            case CalculationOperation.Multiply:
                comboBoxOp.SelectedIndex = 2;
                break;

            case CalculationOperation.Divide:
                comboBoxOp.SelectedIndex = 3;
                break;
            }

            if (_currentEntity.ParamLeft.ValueIsBoundToVariable)
            {
                checkBoxLeftUseVar.IsChecked  = true;
                checkBoxLeftUseVar.Visibility = Visibility.Visible;
                textBoxNumericLeft.Visibility = Visibility.Hidden;
                comboBoxLeft.Visibility       = Visibility.Visible;

                List <Trait> prevVars = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.ParamLeft.Type, false, _currentEntity);


                //Left number
                comboBoxLeft.ClearValue(ComboBox.ItemsSourceProperty);
                comboBoxLeft.Items.Clear();
                comboBoxLeft.ItemsSource = prevVars;


                int  choiceIndex = 0;
                bool foundVar    = false;
                foreach (Trait traitItem in prevVars)
                {
                    if (traitItem.Name == (string)_currentEntity.ParamLeft.LiteralValueOrBoundVarName)
                    {
                        foundVar = true;
                        break;
                    }
                    choiceIndex++;
                }
                if (foundVar)
                {
                    comboBoxLeft.SelectedIndex = choiceIndex;
                }
                else
                {
                    comboBoxLeft.SelectedIndex = 0;
                }
            }
            else
            {
                checkBoxLeftUseVar.IsChecked = false;

                List <Trait> prevVars = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.ParamLeft.Type, false, _currentEntity);
                if (prevVars.Count == 0)
                {
                    checkBoxLeftUseVar.Visibility = Visibility.Hidden;
                }
                else
                {
                    checkBoxLeftUseVar.Visibility = Visibility.Visible;
                }

                comboBoxLeft.Visibility       = Visibility.Hidden;
                textBoxNumericLeft.Visibility = Visibility.Visible;
                textBoxNumericLeft.Value      = (double)_currentEntity.ParamLeft.LiteralValueOrBoundVarName;
            }


            if (_currentEntity.ParamRight.ValueIsBoundToVariable)
            {
                checkBoxRightUseVar.IsChecked  = true;
                checkBoxRightUseVar.Visibility = Visibility.Visible;
                textBoxNumericRight.Visibility = Visibility.Hidden;
                comboBoxRight.Visibility       = Visibility.Visible;

                //Right number
                List <Trait> prevVars = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.ParamLeft.Type, false, _currentEntity);
                comboBoxRight.ClearValue(ComboBox.ItemsSourceProperty);
                comboBoxRight.Items.Clear();
                comboBoxRight.ItemsSource = prevVars;


                int  choiceIndex = 0;
                bool foundVar    = false;
                foreach (Trait traitItem in prevVars)
                {
                    if (traitItem.Name == (string)_currentEntity.ParamRight.LiteralValueOrBoundVarName)
                    {
                        foundVar = true;
                        break;
                    }
                    choiceIndex++;
                }
                if (foundVar)
                {
                    comboBoxRight.SelectedIndex = choiceIndex;
                }
                else
                {
                    comboBoxRight.SelectedIndex = 0;
                }
            }
            else
            {
                List <Trait> prevVars = _parentPlotFragment.getPreviouslyBoundPrimitiveVariables(_currentEntity.ParamLeft.Type, false, _currentEntity);
                if (prevVars.Count == 0)
                {
                    checkBoxRightUseVar.Visibility = Visibility.Hidden;
                }
                else
                {
                    checkBoxRightUseVar.Visibility = Visibility.Visible;
                }
                checkBoxRightUseVar.IsChecked  = false;
                comboBoxRight.Visibility       = Visibility.Hidden;
                textBoxNumericRight.Visibility = Visibility.Visible;
                textBoxNumericRight.Value      = (double)_currentEntity.ParamRight.LiteralValueOrBoundVarName;
            }
        }