コード例 #1
0
ファイル: GoapStatus.cs プロジェクト: Hengle/GameDemo
 /// <summary>
 /// 将 a 的值 加到自身
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public void AddFromStatus(GoapStatus a)
 {
     foreach (var pair in a.Status())
     {
         AddState(pair.Key, pair.Value);
     }
 }
コード例 #2
0
ファイル: GoapStatus.cs プロジェクト: Hengle/GameDemo
 /// <summary>
 /// 将 a 和 自己 key 相同且值也相同的元素移除
 /// </summary>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 public void RemoveFromStatus(GoapStatus a)
 {
     foreach (var pair in a.Status())
     {
         object value = null;
         if (statusDic.TryGetValue(pair.Key, out value))
         {
             if (Equals(pair.Value, value))
             {
                 RemoveState(pair.Key);
             }
         }
     }
 }
コード例 #3
0
ファイル: GoapStatus.cs プロジェクト: Hengle/GameDemo
        /// <summary>
        /// 有任何一个值包含在 a 中
        /// </summary>
        /// <param name="a"></param>
        /// <returns></returns>
        public bool IsAnyContainIn(GoapStatus a)
        {
            Dictionary <GoapCondition, object> aStatusDic = a.Status();

            foreach (var pair in aStatusDic)
            {
                object aValue = null;
                if (aStatusDic.TryGetValue(pair.Key, out aValue))
                {
                    if (Equals(pair.Value, aValue))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
コード例 #4
0
ファイル: GoapStatus.cs プロジェクト: Hengle/GameDemo
        /// <summary>
        /// 包含于 a
        /// </summary>
        /// <param name="a"></param>
        /// <returns></returns>
        public bool IsContainIn(GoapStatus a)
        {
            Dictionary <GoapCondition, object> aStatusDic = a.Status();

            bool isContentIn = true;

            foreach (var pair in statusDic)
            {
                object aValue = null;
                if (aStatusDic.TryGetValue(pair.Key, out aValue))
                {
                    if (Equals(pair.Value, aValue))
                    {
                        continue;
                    }
                }

                isContentIn = false;
                break;
            }

            return(isContentIn);
        }