Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ------------------------------------------------------------
- -- Waypoint/Rally Pins
- -----------------------------------------------------------
- local waypoints = {
- Player = {
- Control = "Fyr_MM_Scroll_Map_Pins_PlayerWaypoint",
- PinType = MAP_PIN_TYPE_PLAYER_WAYPOINT,
- PinTag = "waypoint",
- Texture = "EsoUI/Art/MapPins/UI_WorldMap_pin_customDestination.dds",
- },
- Rally = {
- Control = "Fyr_MM_Scroll_Map_Pins_RallyPoint",
- PinType = MAP_PIN_TYPE_RALLY_POINT,
- PinTag = "rally",
- Texture = "MiniMap/Textures/rally.dds",
- IsRally = true,
- },
- Ping = {
- Control = "Fyr_MM_Scroll_Map_Pins_Ping",
- PinType = MAP_PIN_TYPE_PING,
- PinTag = "rally",
- Texture = "MiniMap/Textures/ping.dds",
- }
- }
- function ProcessWaypointPin(waypointData, pingEventType, wpx, wpy)
- local waypointPin
- if pingEventType ~= PING_EVENT_ADDED or (wpx == 0 and wpy == 0) then
- waypointPin = GetControl(waypointData.Control)
- if waypointPin then
- waypointPin.m_Pin = nil
- waypointPin.MapId = 0
- waypointPin.nX = 0
- waypointPin.nY = 0
- waypointPin.m_PinType = 0
- waypointPin:SetTexture("")
- waypointPin:SetHidden(true)
- end
- return nil
- end
- waypointPin = GetControl(waypointData.Control)
- if waypointPin == nil then
- waypointPin = WINDOW_MANAGER:CreateControl(waypointData.Control, Fyr_MM_Scroll_Map_Pins, CT_TEXTURE)
- waypointPin.nDistance = function(self)
- if self.nX == nil then
- return 1
- end
- return math.sqrt((zo_round(CurrentMap.PlayerNX * 10000) - zo_round(self.nX * 10000)) ^ 2 + (zo_round(CurrentMap.PlayerNY * 10000) - zo_round(self.nY * 10000)) ^ 2) / 10000
- end
- waypointPin:SetHandler("OnMouseEnter", PinOnMouseEnter)
- waypointPin:SetHandler("OnMouseExit", PinOnMouseExit)
- waypointPin:SetHandler("OnMouseUp", PinOnMouseUp)
- end
- local pin = waypointPin.m_Pin or ZO_Object.New(ZO_MapPin)
- local pinSize = waypointData.IsRally and (ZOpinData[waypointData.PinType].minSize / 3) * FyrMM.pScalePercent or ZOpinData[waypointData.PinType].minSize * FyrMM.pScalePercent
- pin.m_PinType = waypointData.PinType
- pin.m_PinTag = waypointData.PinTag
- pin.nX = wpx
- pin.nY = wpy
- waypointPin.m_Pin = pin
- waypointPin.MapId = CurrentMap.MapId
- waypointPin.nX = wpx
- waypointPin.nY = wpy
- waypointPin.m_PinType = waypointData.PinType
- waypointPin:SetDrawLayer(1)
- FyrMM.SetPinSize(waypointPin, pinSize, 0)
- waypointPin:SetTexture(waypointData.Texture)
- waypointPin:SetHidden(false)
- FyrMM.SetPinAnchor(waypointPin, wpx, wpy, Fyr_MM_Scroll_Map_Pins)
- waypointPin:SetMouseEnabled(true)
- return waypointPin
- end
- function FyrMM.WaypointPins(pingEventType, pinType, pingTag, wpx, wpy) --pingTag never used
- local waypointPin
- if pinType == MAP_PIN_TYPE_PLAYER_WAYPOINT then
- waypointPin = ProcessWaypointPin(waypoints.Player, pingEventType, wpx, wpy)
- if waypointPin then
- FyrMM.Waypoint = waypointPin
- FyrMM.IsWaypoint = true
- else
- FyrMM.Waypoint = nil
- FyrMM.IsWaypoint = false
- end
- elseif pinType == MAP_PIN_TYPE_RALLY_POINT then
- CALLBACK_MANAGER:FireCallbacks("FyrMMDebug", "is rally point ")
- waypointPin = ProcessWaypointPin(waypoints.Rally, pingEventType, wpx, wpy)
- if waypointPin then
- FyrMM.Rally = waypointPin
- FyrMM.IsRally = true
- else
- FyrMM.Rally = nil
- FyrMM.IsRally = false
- end
- elseif pinType == MAP_PIN_TYPE_PING then
- waypointPin = ProcessWaypointPin(waypoints.Ping, pingEventType, wpx, wpy)
- if waypointPin then
- FyrMM.Ping = waypointPin
- FyrMM.IsPing = true
- else
- FyrMM.Ping = nil
- FyrMM.IsPing = false
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement