Пример #1
0
        public void AddOneSecondDatas(int second, ParameterRawData[] rawDatas)
        {
            foreach (var con in this.Conditions)
                con.AddOneSecondDatas(second, rawDatas);

            if (AllConditionTrue() && this.LastTime > 0
                && (second - this.ActiveStartSecond >= this.LastTime))
            {//所有条件都发生,并且大于等于持续时间,则认为真正发生了
                this.HappenedSecond = second;
                HasHappened = true;
            }
            else if (this.AllConditionTrue())//所有条件都满足但是持续时间还不够长
            {//先设置为Active
                if (this.IsActive == false)
                {
                    this.ActiveStartSecond = second;
                    this.IsActive = true;
                }
            }
            else
            {//没有Active了
                if (this.IsActive)
                {
                    this.IsActive = false;
                    this.ActiveEndSecond = second;
                }
            }

            //如果有子条件则自身不算
            return;
        }
Пример #2
0
        public void AddOneSecondDatas(int second, ParameterRawData[] rawDatas)
        {
            Dictionary<string, List<float>> rawDataDics = new Dictionary<string, List<float>>();
            foreach (var raw in rawDatas)
            {
                if (!rawDataDics.ContainsKey(raw.ParameterID))
                    rawDataDics.Add(raw.ParameterID, new List<float>());

                rawDataDics[raw.ParameterID].AddRange(raw.Values);
            }

            foreach (var con in this.Conditions)
                con.AddOneSecondDatas(second, rawDataDics);

            if (AllConditionTrue())
            {//先设置为Active,不管持续时间够不够长
                if (this.IsActive == false)
                {
                    this.ActiveStartSecond = second;
                    this.IsActive = true;
                }
            }
            else
            {//没有Active了
                if (this.IsActive)
                {
                    this.IsActive = false;
                    this.ActiveEndSecond = second;
                }
            }

            if (AllConditionTrue() && this.LastTime > 0
                && (second - this.ActiveStartSecond >= this.LastTime))
            {//所有条件都发生,并且大于等于持续时间,则认为真正发生了
                if (HasHappened)
                {
                }
                else
                {
                    this.HappenedSecond = second;
                    HasHappened = true;
                }
            }
            else
            {
                HasHappened = false;
            }

            //如果有子条件则自身不算
            return;
        }
Пример #3
0
        public void AddOneSecondDatas(int second, ParameterRawData[] rawDatas)
        {
            if (this.SubConditions != null && this.SubConditions.Length > 0)
            {
                foreach (var con in this.SubConditions)
                    con.AddOneSecondDatas(second, rawDatas);

                //如果有子条件则自身不算
                return;
            }
            else
            {
                if (this.IsConditionMatch(second, rawDatas))
                {
                    this.SelfCondition = true;
                }
                else
                {
                    this.SelfCondition = false;
                }
            }
        }
Пример #4
0
 private bool IsConditionMatch(int second, ParameterRawData[] rawDatas)
 {
     throw new NotImplementedException();
 }