示例#1
0
        public static bool toIsFriendly(Relations rel)
        {
            if (rel.HasAnyFlag(Relations.Enemy))
            {
                return(false);
            }

            return(rel.HasAnyFlag(Relations.Friendly));
        }
示例#2
0
 public static byte PriorityOrder(this Relations rel)
 {
     for (byte i = 0; i < relationsPriority.Length; i++)
     {
         if (rel.HasAnyFlag(relationsPriority[i]))
         {
             return(i);
         }
     }
     return((byte)relationsPriority.Length);
 }
示例#3
0
 public static Relations highestPriority(this Relations rel)
 {
     foreach (Relations flag in relationsPriority)
     {
         if (rel.HasAnyFlag(flag))
         {
             return(flag);
         }
     }
     return(Relations.NoOwner);
 }
示例#4
0
        public static Relations getRelationsTo(this long identityId, IMyCubeGrid target, Relations breakOn = Relations.NoOwner)
        {
            if (identityId == 0L)
            {
                return(Relations.NoOwner);
            }

            IMyPlayer controlling = MyAPIGateway.Players.GetPlayerControllingEntity(target);

            if (controlling != null)
            {
                return(getRelationsTo(identityId, controlling.IdentityId));
            }

            if (target.BigOwners.Count == 0 && target.SmallOwners.Count == 0)             // grid has no owner
            {
                return(Relations.NoOwner);
            }

            Relations relationsToGrid = Relations.NoOwner;

            foreach (long gridOwner in target.BigOwners)
            {
                relationsToGrid |= getRelationsTo(identityId, gridOwner);
                if (breakOn != Relations.NoOwner && relationsToGrid.HasAnyFlag(breakOn))
                {
                    return(relationsToGrid);
                }
            }

            foreach (long gridOwner in target.SmallOwners)
            {
                relationsToGrid |= getRelationsTo(identityId, gridOwner);
                if (breakOn != Relations.NoOwner && relationsToGrid.HasAnyFlag(breakOn))
                {
                    return(relationsToGrid);
                }
            }

            return(relationsToGrid);
        }
示例#5
0
        public static bool toIsHostile(Relations rel, bool ownerlessHostile = true)
        {
            if (rel.HasAnyFlag(Relations.Enemy))
            {
                return(true);
            }

            if (rel == Relations.NoOwner)
            {
                return(ownerlessHostile);
            }

            return(false);
        }
示例#6
0
        public static bool toIsHostile(Relations rel)
        {
            if (rel.HasAnyFlag(Relations.Enemy))
                return true;

            if (rel == Relations.None)
                return true;

            return false;
        }
示例#7
0
        public static bool toIsFriendly(Relations rel)
        {
            if (rel.HasAnyFlag(Relations.Enemy))
                return false;

            return rel.HasAnyFlag(Relations.Owner) || rel.HasAnyFlag(Relations.Faction);
        }