/// <summary>
        /// Create a new dynamic marker
        /// </summary>
        /// <param name="markerType">The type of marker to spawn.</param>
        /// <param name="position">The position at which the marker should spawn at.</param>
        /// <param name="scale">The scale of the marker.</param>
        /// <param name="rotation">The rotation of the marker.</param>
        /// <param name="direction">The direction of the marker.</param>
        /// <param name="color">The color of the marker.</param>
        /// <param name="bobUpDown">Whether the marker should bob up and down.</param>
        /// <param name="faceCamera">Whether the marker should face the entity's camera.</param>
        /// <param name="rotate">Whether the marker should rotate on the Y axis only.</param>
        /// <param name="textureDict">An optional texture dictionary to apply to the marker.</param>
        /// <param name="textureName">An optional texture name to apply to the marker.</param>
        /// <param name="drawOnEnter">Whether it should draw the marker onto an entity that intersects with it.</param>
        /// <param name="dimension">The dimension of the marker</param>
        /// <param name="streamRange">Stream distance of the marker, default is 100.</param>
        /// <returns></returns>
        public static Marker Create(
            MarkerTypes markerType, Vector3 position, Vector3 scale, Vector3?rotation = null, Vector3?direction = null, Rgba?color = null, int dimension = 0,
            bool?bobUpDown   = false, bool?faceCamera  = false, bool?rotate = false, string textureDict = null, string textureName = null,
            bool?drawOnEnter = false, uint streamRange = 100
            )
        {
            Marker marker = new Marker(position, dimension, streamRange, 0)
            {
                Rotation    = rotation ?? new Vector3(0),
                MarkerType  = markerType,
                Direction   = direction ?? new Vector3(0),
                Scale       = scale,
                Color       = color ?? null,
                BobUpDown   = bobUpDown ?? null,
                FaceCamera  = faceCamera ?? null,
                Rotate      = rotate ?? null,
                TextureDict = textureDict ?? null,
                TextureName = textureName ?? null,
                DrawOnEnter = drawOnEnter ?? null
            };

            Marker.MarkerList.Add(marker);
            AltEntitySync.AddEntity(marker);
            return(marker);
        }
示例#2
0
            public Marker(Marker CopyMarker, string NewName = "")
            {
                ConnectedToChains = new List <Chain>();
                AdjacentToMarker  = new List <Marker>();

                for (int i = 0; i < CopyMarker.ConnectedToChains.Count; i++)
                {
                    ConnectedToChains.Add(CopyMarker.ConnectedToChains[i]);
                }

                for (int i = 0; i < CopyMarker.AdjacentToMarker.Count; i++)
                {
                    AdjacentToMarker.Add(CopyMarker.AdjacentToMarker[i]);
                }

                if (string.IsNullOrEmpty(NewName))
                {
                    Name = GetLowestName(CopyMarker.MarkerType);
                }
                else
                {
                    Name = NewName;
                }

                AddNewMarker(this);

                size   = CopyMarker.size;
                amount = CopyMarker.amount;


                position    = ScmapEditor.WorldPosToScmap(CopyMarker.MarkerObj.transform.position);
                orientation = Markers.MarkerObject.MarkerRotToScmapRot(CopyMarker.MarkerObj.Tr.localRotation, CopyMarker.MarkerType);
                prop        = "/env/common/props/markers/M_Blank_prop.bp";

                MarkerType = CopyMarker.MarkerType;
                type       = MarkerTypeToString(CopyMarker.MarkerType);

                if (MarkerType == MarkerTypes.Mass)
                {
                    resource = true;
                    //amount = 100;
                    prop  = "/env/common/props/markers/M_Mass_prop.bp";
                    color = "ff808080";
                }
                else if (MarkerType == MarkerTypes.Hydrocarbon)
                {
                    //size = 3;
                    resource = true;
                    //amount = 100;
                    prop  = "/env/common/props/markers/M_Hydrocarbon_prop.bp";
                    color = "ff808080";
                }
                else if (MarkerType == MarkerTypes.CameraInfo)
                {
                    canSyncCamera = CopyMarker.canSyncCamera;
                    canSetCamera  = CopyMarker.canSetCamera;
                    zoom          = CopyMarker.zoom;
                }
            }
        //Initialiser
        public StationFacilitiesMarker(Context Context, float XNorm, float YNorm, MarkerTypes MarkerType)
        {
            //Set Variables
            _XNorm            = XNorm;
            _YNorm            = YNorm;
            _MarkerType       = MarkerType;
            RtGraphicsLayouts = new RtGraphicsLayouts(Context);

            _MarkerView = new ImageView(Context);
            _MarkerView.SetBackgroundResource(Resource.Drawable.IconMapDoor);
        }
示例#4
0
        public static GMapMarker CreateMarker(MarkerTypes type, PointLatLng point = new PointLatLng())
        {
            var googleType = GMarkerGoogleType.blue;

            if (MarkerTypesHelper.Markers.ContainsKey(type))
            {
                googleType = MarkerTypesHelper.Markers[type];
            }

            return(new GMarkerGoogle(point, googleType));
        }
示例#5
0
        /// <summary>
        /// Creates a new QuestMarker.
        /// </summary>
        QuestMarker CreateQuestMarker(MarkerTypes markerType, Vector3 flatPosition, int dungeonX = 0, int dungeonZ = 0)
        {
            QuestMarker questMarker = new QuestMarker();

            questMarker.questUID     = ParentQuest.UID;
            questMarker.placeSymbol  = Symbol;
            questMarker.markerType   = markerType;
            questMarker.flatPosition = flatPosition;
            questMarker.dungeonX     = dungeonX;
            questMarker.dungeonZ     = dungeonZ;

            return(questMarker);
        }
示例#6
0
            public static string MarkerTypeToString(MarkerTypes MType)
            {
                string str1      = MType.ToString();
                string newstring = "";

                for (int i = 0; i < str1.Length; i++)
                {
                    if (i > 0 && char.IsUpper(str1[i]))
                    {
                        newstring += " ";
                    }
                    newstring += str1[i].ToString();
                }
                return(newstring);
            }
示例#7
0
文件: Marker.cs 项目: tdhieu/openvss
        /// <summary>
        /// Initializes a new instance of the Visifire.Commons.Marker class
        /// </summary>
        public Marker(MarkerTypes markerType, Double scaleFactor, Size markerSize, Boolean markerBevel, Brush markerColor, String markerLabelText)
        {
            MarkerType = markerType;
            MarkerFillColor = markerColor;
            Text = markerLabelText;
            TextOrientation = Orientation.Horizontal;
            TextAlignmentX = AlignmentX.Right;
            TextAlignmentY = AlignmentY.Center;
            ScaleFactor = scaleFactor;
            MarkerSize = markerSize;
            BorderThickness = 1;
            TextBackground = new SolidColorBrush(Colors.Transparent);
            Bevel = markerBevel;

            Opacity = 1;
            LabelAngle = Double.NaN;
        }
示例#8
0
 void RenderAvailableMoves(Unit unit)
 {
     if (unit != null)
     {
         if (unit.AvailableMoves == null)
         {
             unit.UpdateAvailableMoves();
         }
         unit.AvailableMoves.ForEach(position =>
         {
             MarkerTypes markerType = unit == ActivePlayer.CurrentUnit && ActivePlayer.turnManager.CanPerformMovement(unit)
                 ? MarkerTypes.Movement
                 : MarkerTypes.MovementPreview;
             TintMarker(movementAreaTilemap, position, markerType);
             availableMoves.Add(position);
         });
     }
 }
示例#9
0
    private void TintMarker(Tilemap tilemap, Vector3Int position, MarkerTypes type)
    {
        Dictionary <MarkerTypes, Color> markerColors = new Dictionary <MarkerTypes, Color>()
        {
            { MarkerTypes.Default, defaultTileTint },
            { MarkerTypes.Attack, attackTileTint },
            { MarkerTypes.AttackPreview, attackPreviewTileTint },
            { MarkerTypes.Movement, movementTileTint },
            { MarkerTypes.MovementPreview, movementPreviewTileTint }
        };

        Color tintColor = markerColors[type];

        bool shouldHighlight = position == HoveredCell && (type == MarkerTypes.Attack || type == MarkerTypes.Movement);

        if (shouldHighlight)
        {
            tintColor.a = 180;
        }

        tilemap.SetColor(position, tintColor);
    }
示例#10
0
 public MarkerLayers LayerByType(MarkerTypes Type)
 {
     if (Type == MarkerTypes.BlankMarker || Type == MarkerTypes.Mass || Type == MarkerTypes.Hydrocarbon || Type == MarkerTypes.CameraInfo)
     {
         return(MarkerLayers.NoAI);
     }
     else if (Type == MarkerTypes.LandPathNode || Type == MarkerTypes.RallyPoint || Type == MarkerTypes.AmphibiousPathNode || Type == MarkerTypes.AutoPathNode)
     {
         return(MarkerLayers.Land);
     }
     else if (Type == MarkerTypes.WaterPathNode || Type == MarkerTypes.NavalRallyPoint || Type == MarkerTypes.NavalLink || Type == MarkerTypes.AutoPathNode)
     {
         return(MarkerLayers.Naval);
     }
     else if (Type == MarkerTypes.AirPathNode)
     {
         return(MarkerLayers.Air);
     }
     else
     {
         return(MarkerLayers.Other);
     }
 }
示例#11
0
    void CreateMarker(Transform parent, MarkerTypes marker, Node n)
    {
        string prefab = "";

        if (marker == MarkerTypes.VideoCameraMarker)
        {
            prefab = "VideoCamera";
        }
        if (marker == MarkerTypes.StillCameraMarker)
        {
            prefab = "StillCamera";
        }

        if (marker == MarkerTypes.State)
        {
            prefab = "FlyState";
        }

        GameObject gpPrefab = AssetDatabase.LoadAssetAtPath("Assets/DroneTrack/Prefabs/" + prefab + ".prefab", typeof(GameObject)) as GameObject;
        GameObject gog      = (GameObject)Instantiate(gpPrefab);

        gog.transform.name = prefab;
        gog.transform.SetParent(parent);
        gog.transform.position      = n.DronePosition;
        gog.transform.localRotation = n.DroneRotation;

        if (marker == MarkerTypes.State)
        {
            GameObject state = gog.transform.Find("State").gameObject;
            TextMesh   tm    = state.GetComponent <TextMesh>();
            tm.text = n.FlyState;

            GameObject mess = gog.transform.Find("Message").gameObject;
            TextMesh   tmm  = mess.GetComponent <TextMesh>();
            tmm.text = n.Message;
        }
    }
示例#12
0
            public Marker(MarkerTypes Type, string NewName = "")
            {
                ConnectedToChains = new List <Chain>();
                AdjacentToMarker  = new List <Marker>();

                if (string.IsNullOrEmpty(NewName))
                {
                    Name = GetLowestName(Type);
                }
                else
                {
                    Name = NewName;
                }

                AddNewMarker(this);
                size        = 1;
                position    = Vector3.zero;
                orientation = Vector3.zero;

                MarkerType = Type;
                type       = MarkerTypeToString(Type);

                DefaultsByType();
            }
示例#13
0
 public static string GetName(MarkerTypes type)
 {
     return(TypesHelper.GetName(Names, type));
 }
示例#14
0
            public Marker(string name, LuaTable Table)
            {
                // Create marker from table
                Name = name;
                AddNewMarker(this);
                ConnectedToChains = new List <Chain>();
                AdjacentToMarker  = new List <Marker>();
                string[] Keys = LuaParser.Read.GetTableKeys(Table);

                for (int k = 0; k < Keys.Length; k++)
                {
                    switch (Keys[k])
                    {
                        #region Search For Keys
                    case KEY_POSITION:
                        position = LuaParser.Read.Vector3FromTable(Table, KEY_POSITION);
                        break;

                    case KEY_ORIENTATION:
                        orientation = LuaParser.Read.Vector3FromTable(Table, KEY_ORIENTATION);
                        break;

                    case KEY_SIZE:
                        size = LuaParser.Read.FloatFromTable(Table, KEY_SIZE);
                        break;

                    case KEY_RESOURCE:
                        resource = LuaParser.Read.BoolFromTable(Table, KEY_RESOURCE);
                        break;

                    case KEY_AMOUNT:
                        amount = LuaParser.Read.FloatFromTable(Table, KEY_AMOUNT);
                        break;

                    case KEY_COLOR:
                        color = LuaParser.Read.StringFromTable(Table, KEY_COLOR);
                        break;

                    case KEY_TYPE:
                        type = LuaParser.Read.StringFromTable(Table, KEY_TYPE);
                        break;

                    case KEY_PROP:
                        prop = LuaParser.Read.StringFromTable(Table, KEY_PROP);
                        break;

                    case KEY_EDITORICON:
                        editorIcon = LuaParser.Read.StringFromTable(Table, KEY_EDITORICON);
                        break;

                    case KEY_HINT:
                        hint = LuaParser.Read.BoolFromTable(Table, KEY_HINT);
                        break;

                    case KEY_ZOOM:
                        zoom = LuaParser.Read.FloatFromTable(Table, KEY_ZOOM);
                        break;

                    case KEY_ADJACENTTO:
                        adjacentTo = LuaParser.Read.StringFromTable(Table, KEY_ADJACENTTO);
                        break;

                    case KEY_GRAPH:
                        graph = LuaParser.Read.StringFromTable(Table, KEY_GRAPH);
                        break;

                    case KEY_CANSETCAMERA:
                        canSetCamera = LuaParser.Read.BoolFromTable(Table, KEY_CANSETCAMERA);
                        break;

                    case KEY_CANSYNCCAMERA:
                        canSyncCamera = LuaParser.Read.BoolFromTable(Table, KEY_CANSYNCCAMERA);
                        break;

                    //Effect
                    case KEY_OFFSET:
                        offset = LuaParser.Read.Vector3FromTable(Table, KEY_OFFSET);
                        break;

                    case KEY_EFFECTTEMPLATE:
                        EffectTemplate = LuaParser.Read.StringFromTable(Table, KEY_EFFECTTEMPLATE);
                        break;

                    case KEY_SCALE:
                        scale = LuaParser.Read.FloatFromTable(Table, KEY_SCALE);
                        break;

                    // Weather Generator
                    case KEY_CLOUDCOUNT:
                        cloudCount = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDCOUNT);
                        break;

                    case KEY_CLOUDEMITTERSCALE:
                        cloudEmitterScale = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDEMITTERSCALE);
                        break;

                    case KEY_CLOUDEMITTERSCALERANGE:
                        cloudEmitterScaleRange = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDEMITTERSCALERANGE);
                        break;

                    case KEY_CLOUDCOUNTRANGE:
                        cloudCountRange = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDCOUNTRANGE);
                        break;

                    case KEY_CLOUDSPREAD:
                        cloudSpread = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDSPREAD);
                        break;

                    case KEY_CLOUDHEIGHTRANGE:
                        cloudHeightRange = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDHEIGHTRANGE);
                        break;

                    case KEY_SPAWNCHANCE:
                        spawnChance = LuaParser.Read.FloatFromTable(Table, KEY_SPAWNCHANCE);
                        break;

                    case KEY_FORCETYPE:
                        ForceType = LuaParser.Read.StringFromTable(Table, KEY_FORCETYPE);
                        break;

                    case KEY_CLOUDHEIGHT:
                        cloudHeight = LuaParser.Read.FloatFromTable(Table, KEY_CLOUDHEIGHT);
                        break;

                    // Weather Definition
                    case KEY_WEATHERDRIFTDIRECTION:
                        WeatherDriftDirection = LuaParser.Read.Vector3FromTable(Table, KEY_WEATHERDRIFTDIRECTION);
                        break;

                    case KEY_MAPSTYLE:
                        MapStyle = LuaParser.Read.StringFromTable(Table, KEY_MAPSTYLE);
                        break;

                    case KEY_WEATHERTYPE01:
                        WeatherType01 = LuaParser.Read.StringFromTable(Table, KEY_WEATHERTYPE01);
                        break;

                    case KEY_WEATHERTYPE02:
                        WeatherType02 = LuaParser.Read.StringFromTable(Table, KEY_WEATHERTYPE02);
                        break;

                    case KEY_WEATHERTYPE03:
                        WeatherType03 = LuaParser.Read.StringFromTable(Table, KEY_WEATHERTYPE03);
                        break;

                    case KEY_WEATHERTYPE04:
                        WeatherType04 = LuaParser.Read.StringFromTable(Table, KEY_WEATHERTYPE04);
                        break;

                    case KEY_WEATHERTYPE01CHANCE:
                        WeatherType01Chance = LuaParser.Read.FloatFromTable(Table, KEY_WEATHERTYPE01CHANCE);
                        break;

                    case KEY_WEATHERTYPE02CHANCE:
                        WeatherType02Chance = LuaParser.Read.FloatFromTable(Table, KEY_WEATHERTYPE02CHANCE);
                        break;

                    case KEY_WEATHERTYPE03CHANCE:
                        WeatherType03Chance = LuaParser.Read.FloatFromTable(Table, KEY_WEATHERTYPE03CHANCE);
                        break;

                    case KEY_WEATHERTYPE04CHANCE:
                        WeatherType04Chance = LuaParser.Read.FloatFromTable(Table, KEY_WEATHERTYPE04CHANCE);
                        break;
                        #endregion
                    }
                }

                if (string.IsNullOrEmpty(type))
                {
                    MarkerType = MarkerTypes.BlankMarker;
                }
                else
                {
                    MarkerType = StringToMarkerType(type);
                }

                if (color.Contains("' ),"))
                {
                    // Hard fix for wrong syntax
                    color = color.Replace("' ),", "");
                    prop  = prop.Replace("' ),", "");
                }
            }
示例#15
0
        /// <summary>
        /// Assigns a quest resource to this Place site.
        /// Supports Persons, Foes, Items from within same quest as Place.
        /// Quest must have previously created SiteLink for layout builders to discover assigned resources.
        /// </summary>
        /// <param name="targetSymbol">Resource symbol of Person, Item, or Foe to assign.</param>
        public void AssignQuestResource(Symbol targetSymbol)
        {
            // Site must have at least one marker of each type
            if (!ValidateQuestMarkers(siteDetails.questSpawnMarkers, siteDetails.questItemMarkers))
            {
                throw new Exception(string.Format("Tried to assign resource {0} to Place without at least 1x spawn and 1x item marker.", targetSymbol.Name));
            }

            // Attempt to get resource from symbol
            QuestResource resource = ParentQuest.GetResource(targetSymbol);

            if (resource == null)
            {
                throw new Exception(string.Format("Could not locate quest resource with symbol {0}", targetSymbol.Name));
            }

            // Must be a supported resource type
            MarkerTypes requiredMarkerType = MarkerTypes.None;

            if (resource is Person || resource is Foe)
            {
                requiredMarkerType = MarkerTypes.QuestSpawn;
            }
            else if (resource is Item)
            {
                requiredMarkerType = MarkerTypes.QuestItem;
            }
            else
            {
                throw new Exception(string.Format("Tried to assign incompatible resource symbol {0} to Place", targetSymbol.Name));
            }

            // Assign target resource to marker selected for this quest
            if (requiredMarkerType == MarkerTypes.QuestSpawn)
            {
                AssignResourceToMarker(targetSymbol, ref siteDetails.questSpawnMarkers[siteDetails.selectedQuestSpawnMarker]);
            }
            else if (requiredMarkerType == MarkerTypes.QuestItem)
            {
                AssignResourceToMarker(targetSymbol, ref siteDetails.questItemMarkers[siteDetails.selectedQuestItemMarker]);
            }
            else
            {
                throw new Exception(string.Format("Tried to assign resource symbol _{0}_ to Place {1} but it has an unknown MarkerType {2}", targetSymbol.Name, Symbol.Name, requiredMarkerType.ToString()));
            }

            // Output debug information
            if (resource is Person)
            {
                if (siteDetails.siteType == SiteTypes.Building)
                {
                    if (requiredMarkerType == MarkerTypes.QuestSpawn)
                    {
                        Debug.LogFormat("Assigned Person {0} to Building {1}", (resource as Person).DisplayName, SiteDetails.buildingName);
                    }
                }
                else if (siteDetails.siteType == SiteTypes.Dungeon)
                {
                    if (requiredMarkerType == MarkerTypes.QuestSpawn)
                    {
                        Debug.LogFormat("Assigned Person {0} to Dungeon {1}", (resource as Person).DisplayName, SiteDetails.locationName);
                    }
                }
            }
            else if (resource is Foe)
            {
                if (siteDetails.siteType == SiteTypes.Building)
                {
                    if (requiredMarkerType == MarkerTypes.QuestSpawn)
                    {
                        Debug.LogFormat("Assigned Foe _{0}_ to Building {1}", resource.Symbol.Name, SiteDetails.buildingName);
                    }
                }
                else if (siteDetails.siteType == SiteTypes.Dungeon)
                {
                    if (requiredMarkerType == MarkerTypes.QuestSpawn)
                    {
                        Debug.LogFormat("Assigned Foe _{0}_ to Dungeon {1}", resource.Symbol.Name, SiteDetails.locationName);
                    }
                }
            }
            else if (resource is Item)
            {
                if (siteDetails.siteType == SiteTypes.Building)
                {
                    if (requiredMarkerType == MarkerTypes.QuestItem)
                    {
                        Debug.LogFormat("Assigned Item _{0}_ to Building {1}", resource.Symbol.Name, SiteDetails.buildingName);
                    }
                }
                else if (siteDetails.siteType == SiteTypes.Dungeon)
                {
                    if (requiredMarkerType == MarkerTypes.QuestItem)
                    {
                        Debug.LogFormat("Assigned Item _{0}_ to Dungeon {1}", resource.Symbol.Name, SiteDetails.locationName);
                    }
                }
            }
        }
示例#16
0
 public void InitFrom(Marker other)
 {
     DeviceId   = other.DeviceId;
     DeviceName = other.DeviceName;
     MarkerType = other.MarkerType;
 }
示例#17
0
        /// <summary>
        /// Gets the quest spawn marker in player's current location.
        /// </summary>
        /// <param name="markerType">Get quest spawn or item marker.</param>
        /// <param name="questMarkerOut">QuestMarker out.</param>
        /// <param name="buildingOriginOut">Building origin in scene, or Vector3.zero if not inside a building.</param>
        /// <returns>True if successful.</returns>
        public bool GetCurrentLocationQuestMarker(MarkerTypes markerType, out QuestMarker questMarkerOut, out Vector3 buildingOriginOut)
        {
            questMarkerOut    = new QuestMarker();
            buildingOriginOut = Vector3.zero;

            // Get PlayerEnterExit for world context
            PlayerEnterExit playerEnterExit = GameManager.Instance.PlayerEnterExit;

            if (!playerEnterExit)
            {
                return(false);
            }

            // Get SiteLinks for player's current location
            SiteLink[] siteLinks = null;
            if (playerEnterExit.IsPlayerInsideBuilding)
            {
                StaticDoor[] exteriorDoors = playerEnterExit.ExteriorDoors;
                if (exteriorDoors == null || exteriorDoors.Length < 1)
                {
                    return(false);
                }

                siteLinks = GetSiteLinks(SiteTypes.Building, GameManager.Instance.PlayerGPS.CurrentMapID, exteriorDoors[0].buildingKey);
                if (siteLinks == null || siteLinks.Length == 0)
                {
                    return(false);
                }

                Vector3 buildingPosition = exteriorDoors[0].buildingMatrix.GetColumn(3);
                buildingOriginOut = exteriorDoors[0].ownerPosition + buildingPosition;
            }
            else if (playerEnterExit.IsPlayerInsideDungeon)
            {
                siteLinks = GetSiteLinks(SiteTypes.Dungeon, GameManager.Instance.PlayerGPS.CurrentMapID);
            }
            else
            {
                return(false);
            }

            // Exit if no links found
            if (siteLinks == null || siteLinks.Length == 0)
            {
                return(false);
            }

            // Walk through all found SiteLinks
            foreach (SiteLink link in siteLinks)
            {
                // Get the Quest object referenced by this link
                Quest quest = GetActiveQuest(link.questUID);
                if (quest == null)
                {
                    return(false);
                }

                // Get the Place resource referenced by this link
                Place place = quest.GetPlace(link.placeSymbol);
                if (place == null)
                {
                    return(false);
                }

                // Get spawn marker
                QuestMarker spawnMarker = place.SiteDetails.questSpawnMarkers[place.SiteDetails.selectedQuestSpawnMarker];
                if (markerType == MarkerTypes.QuestSpawn && spawnMarker.targetResources != null)
                {
                    questMarkerOut = spawnMarker;
                    return(true);
                }

                // Get item marker
                QuestMarker itemMarker = place.SiteDetails.questItemMarkers[place.SiteDetails.selectedQuestItemMarker];
                if (markerType == MarkerTypes.QuestItem && itemMarker.targetResources != null)
                {
                    questMarkerOut = itemMarker;
                    return(true);
                }
            }

            return(false);
        }
示例#18
0
        private string GetDefinition(XmlDocument document, MarkerTypes marker)
        {
            if (marker == MarkerTypes.None)
            {
                return(null);
            }
            string ns = document.DocumentElement.NamespaceURI;

            // Find the metadata tag
            var defs = document.DocumentElement.SelectSingleNode("defs");

            if (defs == null)
            {
                defs = document.DocumentElement.PrependChild(document.CreateElement("defs", ns));
            }

            // For each marker, provide a definition
            XmlElement elt;

            switch (marker)
            {
            case MarkerTypes.Arrow:
                elt = (XmlElement)defs.SelectSingleNode("marker[@id='arrow']");
                if (elt == null)
                {
                    elt = document.CreateElement("marker", ns);
                    elt.SetAttribute("id", "arrow");
                    elt.SetAttribute("refX", "0");
                    elt.SetAttribute("refY", "0");
                    elt.SetAttribute("orient", "auto");
                    elt.SetAttribute("markerUnits", "userSpaceOnUse");
                    elt.SetAttribute("style", "overflow:visible");
                    var pl = document.CreateElement("polygon", ns);
                    pl.SetAttribute("class", "arrowhead");
                    pl.SetAttribute("points", "-2.5,1 0,0 -2.5,-1 -2,0");
                    elt.AppendChild(pl);
                    defs.AppendChild(elt);
                }
                return("url(#arrow)");

            case MarkerTypes.Dot:
                elt = (XmlElement)defs.SelectSingleNode("marker[@id='dot']");
                if (elt == null)
                {
                    elt = document.CreateElement("marker", ns);
                    elt.SetAttribute("id", "dot");
                    elt.SetAttribute("refX", "0");
                    elt.SetAttribute("refY", "0");
                    elt.SetAttribute("orient", "auto");
                    elt.SetAttribute("markerUnits", "userSpaceOnUse");
                    elt.SetAttribute("style", "overflow:visible");
                    var c = document.CreateElement("circle", ns);
                    c.SetAttribute("cx", "0");
                    c.SetAttribute("cy", "0");
                    c.SetAttribute("r", "1");
                    c.SetAttribute("class", "dot");
                    elt.AppendChild(c);
                    defs.AppendChild(elt);
                }
                return("url(#dot)");

            case MarkerTypes.Slash:
                elt = (XmlElement)defs.SelectSingleNode("marker[@id='slash']");
                if (elt == null)
                {
                    elt = document.CreateElement("marker", ns);
                    elt.SetAttribute("id", "slash");
                    elt.SetAttribute("refX", "0");
                    elt.SetAttribute("refY", "0");
                    elt.SetAttribute("orient", "auto");
                    elt.SetAttribute("markerUnits", "userSpaceOnUse");
                    elt.SetAttribute("style", "overflow:visible");
                    var pl = document.CreateElement("line", ns);
                    pl.SetAttribute("x1", "-1");
                    pl.SetAttribute("y1", "2");
                    pl.SetAttribute("x2", "1");
                    pl.SetAttribute("y2", "-2");
                    elt.AppendChild(pl);
                    defs.AppendChild(elt);
                }
                return("url(#slash)");
            }
            return(null);
        }