Esempio n. 1
0
 /// <summary>
 /// 满足地图空间条件判断
 /// </summary>
 /// <param name="SearchStype">搜索类型</param>
 /// <param name="Target">按指定包含的类型进行搜索</param>
 /// <param name="l">按指定的阵营</param>
 /// <param name="Radius">半径</param>
 /// <returns>true 满足条件,false 不满足条件</returns>
 private static bool CheckMapConditions(MapSearchStlye SearchStype, MapGrid Self, Life Target, float Radius)
 {
     if (Target == null)
     {
         return(false);
     }
     if (SearchStype == MapSearchStlye.AllWorld)
     {
         return(true);
     }
     else if (SearchStype == MapSearchStlye.InBoat)
     {
         return(Target.InBoat);
     }
     else if (SearchStype == MapSearchStlye.SameLayer)
     {
         return(Life.InSameLayer(Self, Target));
     }
     else if (SearchStype == MapSearchStlye.Circle)
     {
         return(Life.IsInCircle(Self, Target, Radius));
     }
     else if (SearchStype == MapSearchStlye.Ball)
     {
         return(Life.IsInBall(Self, Target, Radius));
     }
     else
     {
         return(false);
     }
 }
Esempio n. 2
0
 /// <summary>
 /// 按条件搜索lifeM
 /// </summary>
 /// <param name="HaveList">不为空,则在这个列表中进行搜索,为空在所有CM管理的列表中进行搜索</param>
 /// <param name="Type">lifem 类型,支持位组合</param>
 /// <param name="Camp">按指定的阵营,支持组合</param>
 /// <param name="TargetMg">格子的位置</param>
 /// <param name="Radius">搜索半径,圆形,球形需要</param>
 /// <returns>返回搜索列表list</returns>
 public static void SearchLifeMListByGrid(ref List <Life> list,
                                          List <Life> HaveList,
                                          LifeMType Type,
                                          LifeMCamp Camp,
                                          MapSearchStlye SearchStype,
                                          MapGrid TargetMg,
                                          float Radius)
 {
     if (list == null)
     {
         list = new List <Life> ();
     }
     else
     {
         list.Clear();
     }
     //cm 中获取列表
     if (HaveList == null || HaveList.Count == 0)
     {
         List <SceneSoldier> l = GetLifeMList(Type);
         if (l != null)
         {
             foreach (SceneSoldier s in l)
             {
                 if (s == null)
                 {
                     continue;
                 }
                 LifeMCore Core = s.m_Core;
                 Life      life = s.m_Life;
                 if (CheckCoreConditions(Core, Camp) == false)
                 {
                     continue;
                 }
                 if (CheckMapConditions(SearchStype, TargetMg, life, Radius) == false)
                 {
                     continue;
                 }
                 list.Add(life);
             }
         }
     }
     else         //have list 中进行过滤
     {
         foreach (Life life in HaveList)
         {
             if (life == null)
             {
                 continue;
             }
             LifeMCore Core = life.m_Core;
             if (CheckCoreConditions(Core, Type, Camp) == false)
             {
                 continue;
             }
             if (CheckMapConditions(SearchStype, TargetMg, life, Radius) == false)
             {
                 continue;
             }
             list.Add(life);
         }
     }
 }