Beispiel #1
0
        public static Relations getRelationsTo(this long identityId, IMyEntity target, Relations breakOn = Relations.NoOwner)
        {
            if (identityId == 0L)
            {
                return(Relations.NoOwner);
            }

            IMyCubeBlock asBlock = target as IMyCubeBlock;

            if (asBlock != null)
            {
                return(getRelationsTo(identityId, asBlock.OwnerId));
            }

            IMyCubeGrid asGrid = target as IMyCubeGrid;

            if (asGrid != null)
            {
                return(getRelationsTo(identityId, asGrid, breakOn));
            }

            IMyCharacter asChar = target as IMyCharacter;

            if (asChar != null)
            {
                if (asChar.IsBot)
                {
                    return(Relations.Enemy);
                }
                IMyPlayer player = asChar.GetPlayer_Safe();
                if (player != null)
                {
                    return(getRelationsTo(identityId, player.IdentityId));
                }

                Logger.DebugLog("character not found, treating as enemy: " + target.getBestName(), Logger.severity.WARNING);
                return(Relations.Enemy);
            }

            if (target is IMyMeteor)
            {
                return(Relations.Enemy);
            }

            if (target.IsMissile())
            {
                long missileOwner;
                if (GuidedMissile.TryGetOwnerId(target.EntityId, out missileOwner))
                {
                    return(getRelationsTo(identityId, missileOwner));
                }
                return(Relations.Enemy);
            }

            Logger.DebugLog("unknown entity, treating as enemy: " + target.getBestName(), Logger.severity.WARNING);
            return(Relations.Enemy);
        }
Beispiel #2
0
        /// <summary>
        /// Creates a NetworkNode for a character, checking radio communication.
        /// </summary>
        /// <param name="character">The character to create the NetworkNode for.</param>
        public RelayNode(IMyCharacter character)
        {
            IMyPlayer player = character.GetPlayer_Safe();

            this.m_debugName  = () => player.DisplayName;
            this.m_ownerId    = () => player.IdentityId;
            this.m_entity     = character as IMyEntity;
            this.m_player     = player;
            this.m_comp_radio = ComponentRadio.CreateRadio(character);

            Registrar.Add(character as IMyEntity, this);
        }
Beispiel #3
0
        /// <summary>
        /// Creates a NetworkNode for a character, checking radio communication.
        /// </summary>
        /// <param name="character">The character to create the NetworkNode for.</param>
        public RelayNode(IMyCharacter character)
        {
            IMyPlayer player = character.GetPlayer_Safe();

            this.m_loggingName = () => player.DisplayName;
            this.m_logger = new Logger(GetType().Name, this.m_loggingName) { MinimumLevel = Logger.severity.INFO };
            this.m_ownerId = () => player.PlayerID;
            this.m_entity = character as IMyEntity;
            this.m_player = player;
            this.m_comp_radio = ComponentRadio.CreateRadio(character);

            Registrar.Add(character as IMyEntity, this);
        }