예제 #1
0
            public static GPSMarker Create(IMyEntity AttachTo, string Name, string Description, Color MarkerColor, long PlayerID)
            {
                if (AttachTo == null)
                {
                    return(null);
                }
                GPSMarker Marker = new GPSMarker();

                Marker.Name          = Name;
                Marker.Description   = Description;
                Marker.GPSColor      = MarkerColor;
                Marker.OwnerPlayerID = PlayerID;
                AttachTo.EnsureName();

                MyVisualScriptLogicProvider.AddGPSToEntity(AttachTo.Name, Name, Description, MarkerColor, PlayerID);
                Marker.Valid = true;
                return(Marker);
            }
예제 #2
0
        public void AddGPSMarker(Ingame.MyDetectedEntityInfo RadarScan, string EntityName, bool DontAddIfDetectedByRadioMarker = true)
        {
            try
            {
                try
                {
                    //RadarCore.DebugWrite($"{Radar.CustomName}", $"Trying to add marker for entity {RadarScan.Type.ToString()} {RadarScan.Name}");
                    if (Radar.OwnerID == 0)
                    {
                        return;
                    }
                    if (!Radar.HasOwnerInRelay)
                    {
                        return;
                    }
                    if (Radar.OwnerGPSes.Any(x => x.Description == $"RadarEntity {RadarScan.EntityId}"))
                    {
                        return;
                    }
                    if (Radar.OwnerEntity?.GetTopMostParent()?.EntityId == RadarScan.EntityId)
                    {
                        return;
                    }
                    if (Radar.MyRadarGrid.RelayedGrids.Any(x => x.EntityId == RadarScan.EntityId))
                    {
                        return;
                    }
                    if (DontAddIfDetectedByRadioMarker && RadarScan.HitPosition == null)
                    {
                        return;
                    }
                }
                catch (Exception Scrap)
                {
                    RadarCore.LogError("Radar.AddGPSMarker.GetOwnerPlayer", Scrap);
                    return;
                }

                if (RadarMarkers.ContainsKey(RadarScan.EntityId))
                {
                    return;
                }
                IMyEntity AttachTo = MyAPIGateway.Entities.GetEntityById(RadarScan.EntityId);
                if (AttachTo == null)
                {
                    return;
                }
                StringBuilder MarkerName = new StringBuilder();
                if (RadarScan.Type == Ingame.MyDetectedEntityType.Asteroid && EntityName == "Asteroid")
                {
                    MarkerName.Append("[Asteroid]");
                }
                else if (RadarScan.IsGrid() && (EntityName.StartsWith("Large Grid") || EntityName.StartsWith("Small Grid")))
                {
                    if (RadarScan.Type == Ingame.MyDetectedEntityType.LargeGrid)
                    {
                        MarkerName.Append("[Large Grid]");
                    }
                    else
                    {
                        MarkerName.Append("[Small Grid]");
                    }
                }
                else
                {
                    MarkerName.Append($"[{RadarScan.Type.ToString()}{(RadarScan.IsAllied() ? $" | {RadarScan.Name.Truncate(50)}" : $"{(!string.IsNullOrWhiteSpace(EntityName) ? " | " + EntityName.Truncate(50) : "")}")}]");
                }
                GPSMarker Marker = GPSMarker.Create(AttachTo, MarkerName.ToString(), $"RadarEntity {RadarScan.EntityId}", RadarScan.GetRelationshipColor(), Radar.OwnerID);
                RadarMarkers.Add(RadarScan.EntityId, Marker);
            }
            catch (Exception Scrap)
            {
                RadarCore.LogError("Radar.AddGPSMarker", Scrap);
            }
        }