public bool ShouldDetectRelation(VRage.Game.MyRelationsBetweenPlayerAndBlock relation)
        {
            switch (relation)
            {
            case VRage.Game.MyRelationsBetweenPlayerAndBlock.Owner:
                return(DetectOwner);

                break;

            case VRage.Game.MyRelationsBetweenPlayerAndBlock.NoOwnership:
            case VRage.Game.MyRelationsBetweenPlayerAndBlock.FactionShare:
                return(DetectFriendly);

                break;

            case VRage.Game.MyRelationsBetweenPlayerAndBlock.Neutral:
                return(DetectNeutral);

                break;

            case VRage.Game.MyRelationsBetweenPlayerAndBlock.Enemies:
                return(DetectEnemy);

                break;

            default:
                throw new InvalidBranchException();
                break;
            }
            return(false);
        }
Example #2
0
        void OpenRequest(bool open, long identityId)
        {
            VRage.Game.MyRelationsBetweenPlayerAndBlock relation = GetUserRelationToOwner(identityId);

            if (relation.IsFriendly())
            {
                Open = open;
            }
        }
Example #3
0
        void OpenRequest(bool open, long identityId)
        {
            VRage.Game.MyRelationsBetweenPlayerAndBlock relation = GetUserRelationToOwner(identityId);

            MyIdentity identity = MySession.Static.Players.TryGetIdentity(identityId);
            MyPlayer   player   = identity != null && identity.Character != null?MyPlayer.GetPlayerFromCharacter(identity.Character) : null;

            if (relation.IsFriendly() ||
                (identity != null && identity.Character != null && player != null && MySession.Static.IsUserSpaceMaster(player.Client.SteamUserId)))
            {
                Open = open;
            }
        }
Example #4
0
        public virtual bool HasPlayerAccess(long playerId)
        {
            if (!MyFakes.SHOW_FACTIONS_GUI)
            {
                return(true);
            }

            VRage.Game.MyRelationsBetweenPlayerAndBlock relation = GetUserRelationToOwner(playerId);

            bool accessAllowed = relation.IsFriendly();

            return(accessAllowed);
        }
        public bool CheckConnection(MyIdentity sender, MyIdentity receiver)
        {
            if (sender == receiver)
            {
                return(true);
            }
            var senderRelayedBroadcasters   = sender.Character.RadioReceiver.GetRelayedBroadcastersForPlayer(sender.IdentityId);
            var receiverRelayedBroadcasters = receiver.Character.RadioReceiver.GetRelayedBroadcastersForPlayer(receiver.IdentityId);

            foreach (var senderRelayedBroadcaster in senderRelayedBroadcasters)
            {
                //Is the broadcaster in range of sender broadcaster?
                if (VRageMath.Vector3D.Distance(senderRelayedBroadcaster.BroadcastPosition, sender.Character.PositionComp.GetPosition()) > sender.Character.RadioBroadcaster.BroadcastRadius)
                {
                    continue;
                }

                //Relayed broadcasters include antennas and characters
                if (senderRelayedBroadcaster.Entity is IMyComponentOwner <MyIDModule> )
                {
                    MyIDModule broadcasterId;
                    if ((senderRelayedBroadcaster.Entity as IMyComponentOwner <MyIDModule>).GetComponent(out broadcasterId))
                    {
                        VRage.Game.MyRelationsBetweenPlayerAndBlock relation = broadcasterId.GetUserRelationToOwner(sender.IdentityId);
                        if (relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Enemies || relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Neutral || broadcasterId.Owner == 0)
                        {
                            continue;
                        }
                    }
                }
                if (senderRelayedBroadcaster.Entity is MyCharacter)
                {
                    var relation = (senderRelayedBroadcaster.Entity as MyCharacter).GetRelationTo(sender.IdentityId);
                    if (relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Enemies || relation == VRage.Game.MyRelationsBetweenPlayerAndBlock.Neutral)
                    {
                        continue;
                    }
                }

                if (receiverRelayedBroadcasters.Contains(senderRelayedBroadcaster))
                {
                    return(true);
                }
            }

            return(false);
        }
Example #6
0
        /// <summary>
        /// Uncomplete function as some of the essential informations are not available via Mod-API
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="relation"></param>
        /// <returns></returns>
        public static bool IsWithinBlockLimits(long userId, VRage.Game.MyRelationsBetweenPlayerAndBlock relation)
        {
            //if (MyAPIGateway.Session.SessionSettings.BlockLimitsEnabled == MyBlockLimitsEnabledEnum.NONE) return true;
            return(true);

            /* BlockLimits are not available to Modding API
             * var identities = new List<IMyIdentity>();
             * MyAPIGateway.Players.GetAllIdentites(identities, (i) => i.IdentityId == userId);
             * var identity = identities.Count > 0 ? identities[0] : null;
             * if (identity == null) return true;
             *
             * bool allowed = identity.BlockLimits.BlocksBuilt < identity.BlockLimits.MaxBlocks;
             * return false;
             *
             * //relation = base.IDModule.GetUserRelationToOwner(base.BuiltBy)
             */
        }
Example #7
0
 public int GetStyleForRelation(VRage.Game.MyRelationsBetweenPlayerAndBlock relation)
 {
     return(m_markerStylesForBlocks[(int)relation]);
 }
Example #8
0
        public void OverrideStyleForRelation(VRage.Game.MyRelationsBetweenPlayerAndBlock relation, MyFontEnum font, MyHudTexturesEnum directionIcon, MyHudTexturesEnum targetIcon, Color color)
        {
            int handle = GetStyleForRelation(relation);

            m_markerStyles[handle] = new MyMarkerStyle(font, directionIcon, targetIcon, color);
        }
Example #9
0
 bool IsNotFriendly(VRage.Game.MyRelationsBetweenPlayerAndBlock relationship)
 {
     return(relationship != VRage.Game.MyRelationsBetweenPlayerAndBlock.FactionShare && relationship != VRage.Game.MyRelationsBetweenPlayerAndBlock.Owner);
 }