Exemple #1
0
 private void SelectCondition(int conditionIndex)
 {
     _conditionIndex = conditionIndex;
     _partSelector.CancelSelect();
     _popupUI.CloseAll();
     _conditionPart    = null;
     _conditionFlight  = null;
     _conditionTimer   = null;
     _currentCondition = null;
     if ((_conditionIndex < 0) || (_conditionIndex >= _conditions.Count))
     {
         return;
     }
     if (_conditions[_conditionIndex] == null)
     {
         _conditionIndexType = (int)TriggerConditionType.Flight;
     }
     else if (_conditions[_conditionIndex] is TriggerConditionPart)
     {
         _conditionIndexType = (int)TriggerConditionType.Part;
         _conditionPart      = new TriggerConditionPart((TriggerConditionPart)_conditions[_conditionIndex]);
     }
     else if (_conditions[_conditionIndex] is TriggerConditionFlight)
     {
         _conditionIndexType = (int)TriggerConditionType.Flight;
         _conditionFlight    = new TriggerConditionFlight((TriggerConditionFlight)_conditions[_conditionIndex]);
     }
     else if (_conditions[_conditionIndex] is TriggerConditionTimer)
     {
         _conditionIndexType = (int)TriggerConditionType.Timer;
         _conditionTimer     = new TriggerConditionTimer((TriggerConditionTimer)_conditions[_conditionIndex]);
     }
 }
Exemple #2
0
        public void OnLoad(ConfigNode node, VesselTriggers triggerConfig)
        {
            bool                 dataFound     = false;
            ConfigNode           childNode     = null;
            int                  nbItem        = 0;
            TriggerConditionType conditionType = (TriggerConditionType)(-1);

            dataFound = node.TryGetValue(KEY_NB_CONDITIONS, ref nbItem);
            if (dataFound)
            {
                for (int i = 0; i < nbItem; i++)
                {
                    TriggerCondition condition = null;
                    dataFound = node.TryGetNode(KEY_PREF_CONDITION + i, ref childNode);
                    if (dataFound)
                    {
                        dataFound = childNode.TryGetEnum <TriggerConditionType>("type", ref conditionType, (TriggerConditionType)(-1));
                        if (dataFound)
                        {
                            switch (conditionType)
                            {
                            case TriggerConditionType.Part:
                                condition = new TriggerConditionPart(triggerConfig);
                                break;

                            case TriggerConditionType.Flight:
                                condition = new TriggerConditionFlight(triggerConfig);
                                break;

                            case TriggerConditionType.Timer:
                                condition = new TriggerConditionTimer(triggerConfig);
                                break;

                            default:
                                break;
                            }
                            if (condition != null)
                            {
                                dataFound = ConfigNode.LoadObjectFromConfig(condition, childNode);
                                if (dataFound)
                                {
                                    _conditions.Add(condition);
                                }
                            }
                        }
                    }
                }
            }
        }
Exemple #3
0
 public TriggerConditionPart(TriggerConditionPart other) : base(other)
 {
     _type = TriggerConditionType.Part;
     _part = null;
     // Automatic call of Part_set
     ConditionPart = other._part;
     // Automatic call of PropertyIndex_set
     PropertyIndex = other._propertyIndex;
     _comparator   = other._comparator;
     if ((_targetValue != null) && other._targetValue != null)
     {
         _targetValue.ValueStr = other._targetValue.ValueStr;
     }
     if (_methodParameter != null)
     {
         for (int i = 0; i < _methodParameter.Length; i++)
         {
             _methodParameter[i].ValueStr = other._methodParameter[i].ValueStr;
         }
     }
     _currentValue = null;
     UpdatePersistentData();
 }
Exemple #4
0
        private void DisplayPartConf()
        {
            if (_conditionPart == null)
            {
                _conditionPart = new TriggerConditionPart(_vesselTriggers);
            }
            _currentCondition = _conditionPart;
            // Left column
            GUILayout.BeginArea(_boxLeftPos);
            _scrollVectPart = GUILayout.BeginScrollView(_scrollVectPart, GUIStyle.none, GUIStyle.none);
            GUILayout.BeginVertical();
            // Part
            GUILayout.BeginHorizontal();
            GUILayout.Space(LEFT_MARGING);
            GUILayout.Label("Part to evaluate: ");
            GUILayout.EndHorizontal();
            // Property
            GUILayout.BeginHorizontal();
            GUILayout.Space(LEFT_MARGING);
            GUILayout.Label("Property to evaluate: ");
            GUILayout.EndHorizontal();
            // Parameters
            if (_conditionPart.Parameters != null)
            {
                for (int i = 0; i < _conditionPart.Parameters.Length; i++)
                {
                    TypedData param = _conditionPart.Parameters[i];
                    if ((param != null) && param.Configurable)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Space(LEFT_MARGING);
                        GUILayout.Label(param.Name);
                        GUILayout.EndHorizontal();
                    }
                }
            }
            if (_conditionPart.TargetValue != null)
            {
                // Comparator
                GUILayout.BeginHorizontal();
                GUILayout.Space(LEFT_MARGING);
                GUILayout.Label("Comparator: ");
                GUILayout.EndHorizontal();
                // Target
                GUILayout.BeginHorizontal();
                GUILayout.Space(LEFT_MARGING);
                GUILayout.Label("Target value: ");
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();
            GUILayout.EndScrollView();
            GUILayout.EndArea();

            // Right column
            GUILayout.BeginArea(_boxRightPos);
            _scrollVectPart = GUILayout.BeginScrollView(_scrollVectPart);
            GUILayout.BeginVertical();
            // Part
            GUILayout.BeginHorizontal();
            _partSelector.DisplayLayout(_conditionPart.ConditionPart);
            GUILayout.Space(RIGHT_MARGING);
            GUILayout.EndHorizontal();
            // Property
            GUILayout.BeginHorizontal();
            int newPropertyIndex = _popupUI.GUILayoutPopup("popupPartParam", _conditionPart.PropertyList, _conditionPart.PropertyIndex);

            GUILayout.Space(RIGHT_MARGING);
            GUILayout.EndHorizontal();
            // Parameters
            if (_conditionPart.Parameters != null)
            {
                for (int i = 0; i < _conditionPart.Parameters.Length; i++)
                {
                    TypedData param = _conditionPart.Parameters[i];
                    if ((param != null) && param.Configurable)
                    {
                        GUILayout.BeginHorizontal();
                        param.DisplayLayout(_popupUI);
                        GUILayout.Space(RIGHT_MARGING);
                        GUILayout.EndHorizontal();
                    }
                }
            }
            if (_conditionPart.TargetValue != null)
            {
                TypedData target = _conditionPart.TargetValue;
                // Comparator
                GUILayout.BeginHorizontal();
                _conditionPart.Comparator = (ComparatorType)_popupUI.GUILayoutPopup("popupPartOper", target.ComparatorList, (int)_conditionPart.Comparator);
                GUILayout.Space(RIGHT_MARGING);
                GUILayout.EndHorizontal();
                // Target
                GUILayout.BeginHorizontal();
                target.DisplayLayout(_popupUI);
                GUILayout.Space(RIGHT_MARGING);
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();
            GUILayout.EndScrollView();
            GUILayout.EndArea();

            if (Event.current.type == EventType.Repaint)
            {
                _conditionPart.PropertyIndex = newPropertyIndex;
            }
        }