From a1453419b39bf67ab7a819aaa599f8f5ea7b7af8 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Sat, 16 Oct 2010 10:33:08 +0100 Subject: [PATCH 01/10] Update .pkgmeta file --- .pkgmeta | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/.pkgmeta b/.pkgmeta index 3b3fe92..d0c0583 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -1,14 +1,8 @@ -externals: - libs/AceConfig-3.0: - url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceConfig-3.0/ - libs/CallbackHandler-1.0: - url: svn://svn.wowace.com/wow/callbackhandler/mainline/trunk/CallbackHandler-1.0 - tag: latest - libs/AceGUI-3.0: - url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceGUI-3.0/ - libs/AceDB-3.0: - url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDB-3.0/ - libs/AceDBOptions-3.0: - url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceDBOptions-3.0/ - libs/AceEvent-3.0: - url: svn://svn.wowace.com/wow/ace3/mainline/trunk/AceEvent-3.0/ +package-as: TomTom + +tools-used: + - ace3 + - callbackhandler + - libstub + +enable-nolib-creation: no -- 1.7.9.5 From 82b60afec0d8ef04e8fc96f09c7eb364422c3528 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Sat, 16 Oct 2010 10:37:06 +0100 Subject: [PATCH 02/10] Updated .TOC --- TomTom.toc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TomTom.toc b/TomTom.toc index 44ca822..bd2b412 100755 --- a/TomTom.toc +++ b/TomTom.toc @@ -1,7 +1,7 @@ -## Interface: 30300 +## Interface: 40000 ## Title: TomTom ## Author: jnwhiteh -## Version: wowi:revision +## Version: @project-version@ ## Notes: Acts as your portable navigation assistant ## Notes-zhCN:一个简单的导航助手。 ## Notes-ruRU: Удобный портативный навигатор по игровой карте -- 1.7.9.5 From ca7ec3351773160ca64d9c80b87d1fae0774c33e Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Mon, 18 Oct 2010 15:41:15 +0100 Subject: [PATCH 03/10] Fix a bug with updating the coord feed throttle --- TomTom.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/TomTom.lua b/TomTom.lua index aa3fccf..fc38dcf 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -173,10 +173,6 @@ function TomTom:ADDON_LOADED(event, addon) local coordFeedFrame = CreateFrame("Frame") local throttle, counter = self.db.profile.feeds.coords_throttle, 0 - function TomTom:UpdateCoordFeedThrottle() - throttle = self.db.profile.feeds.coords_throttle - end - coordFeedFrame:SetScript("OnUpdate", function(self, elapsed) counter = counter + elapsed if counter < throttle then @@ -195,6 +191,10 @@ function TomTom:ADDON_LOADED(event, addon) end end +function TomTom:UpdateCoordFeedThrottle() + throttle = self.db.profile.feeds.coords_throttle +end + function TomTom:ReloadOptions() -- This handles the reloading of all options self.profile = self.db.profile -- 1.7.9.5 From 867a1a0fe19b8ec12bb4defabcb2cdf18d383352 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Mon, 18 Oct 2010 23:32:20 +0100 Subject: [PATCH 04/10] Added koKR localization. --- Localization.koKR.lua | 156 +++++++++++++++++++++++++++++++++++++++++++++++++ TomTom.toc | 1 + 2 files changed, 157 insertions(+) create mode 100644 Localization.koKR.lua diff --git a/Localization.koKR.lua b/Localization.koKR.lua new file mode 100644 index 0000000..0999e7f --- /dev/null +++ b/Localization.koKR.lua @@ -0,0 +1,156 @@ +--Localization.koKR.lua by friends + +if ( GetLocale() == "koKR" ) then + +TomTomLocals = { + ["%d yards"] = "%d 미터", + ["%s (%.2f, %.2f)"] = "%s (%.2f, %.2f)", + ["%s yards away"] = "%s 미터 떨어짐", + ["Accept waypoints from guild and party members"] = "길드나 파티원으로 부터 목표지점 수신 허용", + ["Allow control-right clicking on map to create new waypoint"] = "맵에서 Ctrl+우클릭으로 목표지점을 생성할 수 있도록 합니다.", + ["Alpha"] = "투명도", + ["Announce new waypoints when they are added"] = "새로운 목표지점이 생성될때 알림.", + ["Are you sure you would like to remove ALL TomTom waypoints?"] = "모든 목표지점을 삭제하겠습니까?", + ["Arrow colors"] = "화살표 색상", + ["Arrow display"] = "화살표 표시", + ["Ask for confirmation on \"Remove All\""] = "'모든 목표지점 삭제'시 확인창 표시", + ["Automatically set a waypoint when I die"] = "사망시 자동으로 시체의 위치를 표시합니다.", + ["Automatically set to next closest waypoint"] = "자동으로 가장 가까운 다음 목표지점을 표시합니다.", + ["Automatically set waypoint arrow"] = "자동으로 목표지점 화살표 표시", + ["Background color"] = "배경 색상", + ["Bad color"] = "목표의 반대 방향으로 진행시", + ["Block height"] = "표시창 높이", + ["Block width"] = "표시창 너비", + ["Border color"] = "테두리 색상", + ["Clear waypoint distance"] = "목표지점 해제 범위", + ["Clear waypoint from crazy arrow"] = "안내 화살표에서 목표지점 해제", + ["Controls the frequency of updates for the coordinate LDB feed."] = "LDB로의 좌표 자료의 갱신 주기를 설정합니다.", + ["Controls the frequency of updates for the crazy arrow LDB feed."] = "LDB로의 안내 화살표 자료의 갱신 주기를 설정합니다. ", + ["Coordinate Accuracy"] = "좌표 정확도", + ["Coordinate Block"] = "좌표 표시창", + ["Coordinates can be displayed as simple XX, YY coordinate, or as more precise XX.XX, YY.YY. This setting allows you to control that precision"] = "이 설정에서 좌표값을 소수점 두자리 까지 표시할 수 있도록 지정할 수 있습니다.", + ["Coordinate feed accuracy"] = "제공할 좌표 정확도", + ["Coordinate feed throttle"] = "자료 갱신 주기", + ["Crazy Arrow feed throttle"] = "자료 갱신 주기", + ["Create note modifier"] = "목표지점 생성 단축키 조합 설정", + ["Ctrl+Right Click To Add a Waypoint"] = "Ctrl+우클릭으로 목표지점 생성", + ["Cursor Coordinates"] = "커서 좌표", + ["Cursor coordinate accuracy"] = "커서 좌표 정확도(소수점)", + ["Data Feed Options"] = "자료 공유 설정", + ["Disable all mouse input"] = "마우스 입력 불가 설정", + ["Disables the crazy taxi arrow for mouse input, allowing all clicks to pass through"] = "안내화살표 프레임의 마우스 입력을 중단시킵니다.", + ["Display Settings"] = "좌표 표시창 설정", + ["Display waypoints from other zones"] = "다른 지역의 목표지점 표시", + ["Enable coordinate block"] = "좌표 표시창 사용", + ["Enable floating waypoint arrow"] = "목표지점 안내 화살표 사용", + ["Enable minimap waypoints"] = "미니맵에 목표지점 표시", + ["Enable mouseover tooltips"] = "마우스 툴팁 사용", + ["Enable showing cursor coordinates"] = "커서 좌표 표시", + ["Enable showing player coordinates"] = "플레이어 좌표 표시", + ["Enable the right-click contextual menu"] = "마우스 우클릭으로 메뉴 표시", + ["Enable world map waypoints"] = "월드맵에 목표지점 표시", + ["Enables a floating block that displays your current position in the current zone"] = "현재 위치를 표시하는 이동가능한 좌표 표시창을 사용합니다.", + ["Enables a menu when right-clicking on a waypoint allowing you to clear or remove waypoints"] = "목표지점을 우클릭시 나타나는 메뉴(목표지점 해제 및 삭제 기능)를 사용합니다.", + ["Enables a menu when right-clicking on the waypoint arrow allowing you to clear or remove waypoints"] = "목표지점 안내 화살표를 우클릭시 나타나는 메뉴(목표지점 해제 및 삭제 기능)를 사용합니다", + ["Font size"] = "글자 크기", + ["Found %d possible matches for zone %s. Please be more specific"] = "%d 개의 가능한 지점이 존재합니다(%s 지역내). 좀더 정확하게 지정하십시요", + ["Found multiple matches for zone '%s'. Did you mean: %s"] = "'%s'지역에 다수의 동일지점이 발견되었습니다. 재확인 요망: %s", + ["General Options"] = "일반 설정", + ["Good color"] = "목표 방향대로 진행시", + ["Lock coordinate block"] = "좌표 표시창 고정", + ["Lock waypoint arrow"] = "목표지점 안내 화살표 고정", + ["Locks the coordinate block so it can't be accidentally dragged to another location"] = "좌표 표시창 위치를 고정하여 실수로 옮겨지지 않도록 설정합니다.", + ["Locks the waypoint arrow, so it can't be moved accidentally"] = "목표지점 안내 화살표 위치를 고정하여 실수로 옮겨지지 않도록 설정합니다.", + ["Middle color"] = "목표와 다른 방향으로 진행시", + ["Minimap"] = "미니맵", + ["No"] = "아니오", + ["Options profile"] = "설정 프로필", + ["Options that alter the coordinate block"] = "좌표 표시창 사용자 설정", + ["Player Coordinates"] = "플레이어 좌표", + ["Player coordinate accuracy"] = "플레이어 좌표 정확도(소수점)", + ["Profile Options"] = "프로필 설정", + ["Prompt before accepting sent waypoints"] = "전송된 목표지점 수신시 확인함", + ["Provide a LDB data source for coordinates"] = "LDB에 좌표 자료를 제공합니다.", + ["Provide a LDB data source for the crazy-arrow"] = "LDB에 안내 화살표 자료를 제공합니다.", + ["Quest Objectives"] = "퀘스트 수행지역", + ["Options that alter quest objective integration"] = "퀘스트 수행지역을 표시합니다.", + ["TomTom can be configured to set waypoints for the quest objectives that are shown in the watch frame and on the world map. These options can be used to configure these options."] = "퀘스트 수행지역을 TomTom으로 표시합니다.", + ["Enable quest objective integration"] = "기능 사용", + ["Enables the setting of waypoints when modified-clicking on quest objectives"] = "지정한 조합키 사용시 퀘스트 수행지역을 TomTom으로 표시합니다.", + ["set waypoint modifier"] = "사용할 키 설정", + ["This setting changes the modifier used by TomTom when right-clicking on a quest objective POI to create a waypoint"] = "우클릭 버튼과 사용할 조합키를 설정합니다.", + ["Remove all waypoints"] = "모든 목표지점 삭제", + ["Remove all waypoints from this zone"] = "현재 지역의 모든 목표지점 삭제", + ["Remove waypoint"] = "목표지점 삭제", + ["Reset Position"] = "위치 초기화", + ["Resets the position of the waypoint arrow if its been dragged off screen"] = "목표지점 안내 화살표의 위치를 초기화합니다.(실수로 화면밖으로 옮겨졌을때)", + ["Save new waypoints until I remove them"] = "새로운 목표지점 저장", + ["Save profile for TomTom waypoints"] = "TomTom 목표지점 프로필 저장", + ["Save this waypoint between sessions"] = "이 목표지점 저장", + ["Saved profile for TomTom options"] = "TomTom 설정 프로필 저장", + ["Scale"] = "크기", + ["Send to battleground"] = "전장에 전송", + ["Send to guild"] = "길드에 전송", + ["Send to party"] = "파티에 전송", + ["Send to raid"] = "공격대에 전송", + ["Send waypoint to"] = "목표지점 전송", + ["Set as waypoint arrow"] = "목표지점 안내 화살표 표시", + ["Show estimated time to arrival"] = "도착 예정 시간 표시", + ["Shows an estimate of how long it will take you to reach the waypoint at your current speed"] = "현재 속도로 진행시 목표지점까지 도착 예정 시간을 표시합니다.", + ["The color to be displayed when you are halfway between the direction of the active waypoint and the completely wrong direction"] = "목표지점과 많이 틀어진 방향으로 진행시 표시할 색상.", + ["The color to be displayed when you are moving in the direction of the active waypoint"] = "목표지점과 같은 방향으로 진행시 표시할 색상", + ["The color to be displayed when you are moving in the opposite direction of the active waypoint"] = "목표지점과 정반대 방향으로 진행시 표시할 색상", + ["The display of the coordinate block can be customized by changing the options below."] = "좌표 표시창을 아래 설정을 통해 사용자 취향에 맞게 변경할 수 있습니다..", + ["The floating waypoint arrow can change color depending on whether or nor you are facing your destination. By default it will display green when you are facing it directly, and red when you are facing away from it. These colors can be changed in this section. Setting these options to the same color will cause the arrow to not change color at all"] = "목표지점 안내 화살표의 색상을 목표지점에 대한 진행방향에 따라 달리 표시할 수 있습니다. 기본적으로 같은 방향일때는 녹색, 반대방향일 경우 적색으로 표시합니다. 이 표시 색상을 여기에서 변경할 수 있습니다. 모두 같은 색상으로 지정할 경우 화살표의 색상은 변하지 않습니다.", + ["There were no waypoints to remove in %s"] = "%s 에는 삭제할 목표지점이 없습니다.", + ["These options let you customize the size and opacity of the waypoint arrow, making it larger or partially transparent, as well as limiting the size of the title display."] = "여기에서 목표지점 안내 화살표의 크기와 투명도, 제목의 표시 크기를 설정할 수 있습니다.", + ["This option will not remove any waypoints that are currently set to persist, but only effects new waypoints that get set"] = "이 설정을 해제하더라도 이미 저장되어 있는 목표지점은 삭제되지 않으며, 이후 새로 추가된 목표지점에만 적용됩니다.", + ["This option will toggle whether or not you are asked to confirm removing all waypoints. If enabled, a dialog box will appear, requiring you to confirm removing the waypoints"] = "이 설정은 모든 목표지점 삭제시 다시 한 번 확인 한 후 삭제하게합니다.", + ["This setting allows you to change the opacity of the title text, making it transparent or opaque"] = "이 설정은 제목 표시의 투명도를 조절합니다.", + ["This setting allows you to change the opacity of the waypoint arrow, making it transparent or opaque"] = "이 설정은 목표지점 안내 화살표의 투명도를 조절합니다.", + ["This setting allows you to change the scale of the waypoint arrow, making it larger or smaller"] = "이 설정은 목표지점 안내 화살표의 크기를 조절합니다.", + ["This setting allows you to specify the maximum height of the title text. Any titles that are longer than this height (in game pixels) will be truncated."] = "이 설정은 제목 표시줄의 최대 높이를 지정합니다. 설정값 보다 큰 제목은 제거됩니다.", + ["This setting allows you to specify the maximum width of the title text. Any titles that are longer than this width (in game pixels) will be wrapped to the next line."] = "이 설정은 제목 표시줄의 최대 너비를 지정합니다. 설정값 보다 길면 다음줄로 줄바꿈 됩니다.", + ["This setting allows you to specify the scale of the title text."] = "이 설정은 제목 표시의 크기를 비율로 조절할 수 있게합니다.", + ["This setting changes the modifier used by TomTom when right-clicking on the world map to create a waypoint"] = "월드맵에 우클릭으로 목표지점 설정시 함께 사용할 조합키를 지정합니다.", + ["This setting will control the distance at which the waypoint arrow switches to a downwards arrow, indicating you have arrived at your destination"] = "이 설정은 목표지점과 어느 정도의 거리까지 접근했을 때 안내 화살표를 목표지점에 도착했음을 표시하는 아래화살표로 변경할지를 결정합니다.", + ["Title Alpha"] = "제목 표시 투명도", + ["Title Height"] = "제목 표시 높이", + ["Title Scale"] = "제목 표시 스케일", + ["Title Width"] = "제목 표시 너비", + ["TomTom"] = "TomTom", + ["TomTom is a simple navigation assistant"] = "TomTom은 간단한 길찾기 도우미입니다.", + ["TomTom Waypoint Arrow"] = "TomTom 목표지점 안내 화살표", + ["TomTom can announce new waypoints to the default chat frame when they are added"] = "새로운 목표지점이 추가되었을때 대화창에 출력합니다.", + ["TomTom can automatically set a waypoint when you die, guiding you back to your corpse"] = "사망시 자동으로 시체의 위치를 목표지점으로 설정하고 안내 화살표를 표시합니다.", + ["TomTom can display a tooltip containing information abouto waypoints, when they are moused over. This setting toggles that functionality"] = "툴팁에 목표지점에 대한 정보를 표시할지를 결정합니다.", + ["TomTom can display multiple waypoint arrows on the minimap. These options control the display of these waypoints"] = "미니맵에 다수의 목표지점을 표시할지를 결정합니다.", + ["TomTom can display multiple waypoints on the world map. These options control the display of these waypoints"] = "월드맵에 다수의 목표지점을 표시할지를 결정합니다.", + ["TomTom can hide waypoints in other zones, this setting toggles that functionality"] = "타지역의 목표지점도 표시할지를 결정합니다.", + ["TomTom is capable of providing data sources via LibDataBroker, which allows them to be displayed in any LDB compatible display. These options enable or disable the individual feeds, but will only take effect after a reboot."] = "TomTom은 LibDataBroker를 통해 이를 지원하는 다른 애드온들로 하여금 사용할 수 있도록 좌료 자료를 제공할 수 있습니다. 이 설정은 각각 사용여부를 지정할 수 있지만, UI 재시작을 해야만 적용됩니다.", + ["TomTom provides an arrow that can be placed anywhere on the screen. Similar to the arrow in \"Crazy Taxi\" it will point you towards your next waypoint"] = "TomTom 은 이동 가능한 화살표를 제공합니다.\n이 화살표는 목표지점 도착시 까지 진행 방향을 표시해 줍니다.", + ["TomTom provides you with a floating coordinate display that can be used to determine your current position. These options can be used to enable or disable this display, or customize the block's display."] = "TomTom은 현재 위치를 표시할 수 있는 이동가능한 좌표 표시창을 지원합니다. 이 설정은 이 표시창의 사용여부와 모양을 변경할 수 있게합니다.", + ["TomTom waypoint"] = "TomTom 목표지점", + ["TomTom's saved variables are organized so you can have shared options across all your characters, while having different sets of waypoints for each. These options sections allow you to change the saved variable configurations so you can set up per-character options, or even share waypoints between characters"] = "TomTom의 저장된 값은 계정내 모든 캐릭터간에 공유할 수 있습니다. 이 설정은 저장된 값을 캐릭별로 각각 사용할건지, 모든 캐릭이 같이 공유할건지를 결정합니다.", + ["Waypoint Arrow"] = "목표지점 안내 화살표", + ["Waypoint Options"] = "목표지점 설정", + ["Waypoint communication"] = "목표지점 공유", + ["Waypoint from %s"] = "%s |1으로;로 부터 받은 목표지점", + ["Waypoints can be automatically cleared when you reach them. This slider allows you to customize the distance in yards that signals your \"arrival\" at the waypoint. A setting of 0 turns off the auto-clearing feature\n\nChanging this setting only takes effect after reloading your interface."] = "목표지점은 그곳에 도착시 자동으로 해제됩니다. 이 슬라이더는 목표지점 도착점의 오차 범위를 지정합니다. 0 값으로 지정하면 자동 해제 기능을 사용하지 않습니다.\n이 설정의 변경은 애드온 재시작시 적용됩니다.", + ["Waypoints profile"] = "목표지점 프로필", + ["When a new waypoint is added, TomTom can automatically set the new waypoint as the \"Crazy Arrow\" waypoint."] = "새로운 목표지점이 생성되면, TomTom은 자동으로 이 목표지점에 대해 안내 화살표를 표시합니다.", + ["When the current waypoint is cleared (either by the user or automatically) and this option is set, TomTom will automatically set the closest waypoint in the current zone as active waypoint."] = "현재의 목표지점이 제거되면 (사용자에 의하거나 자동으로 행해지던) 이 설정이 켜져있으면, TomTom 은 자동으로 현 지역에서 가장 가까운 다음 목표지점을, 표시할 새로운 목표지점으로 선택합니다.", + ["World Map"] = "월드 맵", + ["Yes"] = "네", + ["\"Arrival Distance\""] = "\"도착점 오차 범위\"", + ["|cffffff78/way [desc]|r - Adds a waypoint at x,y with descrtiption desc"] = "|cffffff78/way [표시할 제목]|r - x,y 좌표에 목표지점 지정(표시할 제목은 생략가능)", + ["|cffffff78/way [desc]|r - Adds a waypoint at x,y in zone with description desc"] = "|cffffff78/way <지역명> [표시할 제목]|r - 지정한 지역의 x,y 좌표에 목표지점 지정(표시할 제목은 생략가능)", + ["|cffffff78/way reset |r - Resets all waypoints in zone"] = "|cffffff78/way reset <지역명>|r - 해당 지역의 모든 목표지점 초기화", + ["|cffffff78/way reset all|r - Resets all waypoints"] = "|cffffff78/way reset all|r - 모든 목표지점 초기화", + ["|cffffff78TomTom |r/way |cffffff78Usage:|r"] = "|cffffff78TomTom |r/way |cffffff78사용법:|r", + ["|cffffff78TomTom|r: Added '%s' (sent from %s) to zone %s"] = "|cffffff78TomTom|r: '%s'|1을;를; (%s |1으로;로 부터 전송받은) %s 지역에 추가", +} + +setmetatable(TomTomLocals, {__index=function(t,k) rawset(t, k, k); return k; end}) + +end diff --git a/TomTom.toc b/TomTom.toc index bd2b412..8ebe689 100755 --- a/TomTom.toc +++ b/TomTom.toc @@ -26,6 +26,7 @@ Localization.deDE.lua Localization.zhCN.lua Localization.ruRU.lua Localization.zhTW.lua +Localization.koKR.lua TomTom.lua TomTom_Waypoints.lua -- 1.7.9.5 From e6d215b5291c8ee7cdb3bd5687c6ef7ec11cf86f Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Thu, 28 Oct 2010 08:13:14 +0100 Subject: [PATCH 05/10] Make checked out version sane --- TomTom.lua | 1 + TomTom.toc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/TomTom.lua b/TomTom.lua index fc38dcf..575210e 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -26,6 +26,7 @@ TomTom = { } if TomTom.version == "wowi:revision" then TomTom.version = "SVN" end +if TomTom.version == "@project-version@" then TomTom.version = "SCM" end TomTom.eventFrame:SetScript("OnEvent", function(self, event, ...) local method = TomTom.events[event] diff --git a/TomTom.toc b/TomTom.toc index 8ebe689..4fed039 100755 --- a/TomTom.toc +++ b/TomTom.toc @@ -1,7 +1,7 @@ ## Interface: 40000 ## Title: TomTom ## Author: jnwhiteh -## Version: @project-version@ +## Version: @project-version@ ## Notes: Acts as your portable navigation assistant ## Notes-zhCN:一个简单的导航助手。 ## Notes-ruRU: Удобный портативный навигатор по игровой карте -- 1.7.9.5 From e9e51e9ba1d0351ceb042c83969edbfcc5d5d313 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Thu, 4 Nov 2010 16:06:14 +0000 Subject: [PATCH 06/10] Added a .staticIcon for LDB displays that don't use the dynamic icon --- Images/StaticArrow.tga | Bin 0 -> 16402 bytes TomTom_CrazyArrow.lua | 9 +++++---- 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 Images/StaticArrow.tga diff --git a/Images/StaticArrow.tga b/Images/StaticArrow.tga new file mode 100644 index 0000000000000000000000000000000000000000..b91e5d58bcc657595337c01a2cd3b202b4404003 GIT binary patch literal 16402 zcmeI33z*Gi9>;%kbBJ*nx5%Z2C?S_6cC}a!(eA9JvYsv*S=k<|8`fH?wd7HxM=B-V zR$<#pkFFxSjO5bQswjm;CStU%W5&Gu`M$@WGdFXFF*Eh}zt3;}|8xH5{LlOS-QMr} zd*3mOwczMtUF`hw!K*TLu1s%|k^acFWvXW-)tPb@vh%FD)joIAxn_g-*=8m6)2049 zan=~?ceU$nqV=-}tsZ_*fnLSf?@GOICDDN-yUYgI?Y7(&*}FE=?gn=|tB4MM{P;uQ z>|*t8F4jL_%j}T7Y9HC-c)?$+mvyw7cep#uepwP`DDmHjB{?^;$~F$!YCkh)?;y+V zsJ&v}*bJM^onPY@wa`O3n@0ZzApJ_bpJ(a^6DCwh3x zCflvxzvxGXKNjrm$@$OX|LIm0%q@{8&Bd&aakhf%cae8&ug$kqJ~iI%v!7ZMs}j40 z5&fz&Ws(wjZUT8d0iO=pC}acpvpxRS;C%{_{e^$Imuw#oi;0Js_JmEcZZ_4D$Oj4Z zG=`Y@;T;p`a>)83%aDWMcPGIg_Jd`XWs7Ya@+NxtgLNlwn8p17@#DNOn~*(?q$4f| z{%3fd)Bb@Ug!Pb$z82ULVqrKOp&ievve|7m>%&#qKVs-&HFEw)aBoMlkK?Zl?ql(v z1HW=WPRS-49I-jJj+6+zA%-iH%7#q%H~lX?A?i6`F)1RF8fOokcPDb;~&ZcuaCJG8Mdg@?bZx*FeT1_<#I|@hF5j2!laNv78g6Uo zI)2~L)!kCp>p(FO;LUwLK1M1(q}qOa!`8x)o**Ceg-=y?PLD3-qpJV?Cj6a*q#@y0 zkBob9pZ?|)^Mj5K^78Y2KX>*1ThAqamKfFp_X@-x<_Y4A4z832hj@X^*xv?|6EsGa z=8=H4!xfE>IcFi^d{=?9M1J29dClClnb&&kgO3h&!)Sdn`nXGXU+SuFtez(y`1oJR z_X6xX;|KUl7X0ym{nM7(Xyy);iG|WTVnN@5-2QiDpU?5KdmZGwV;&D}$LAy<3Jz2u&yO`!EV($6*hwyCS}RSj41(~4eBmLt6m zW-~GjuvVpnKMu_Ok(J1ad@p+ozjD3Kv(5F*=1g{(kwa$MopTu(fo+^rlh|IUpun%A@3ET1zpW?Yzd zp|`(cKCr#c_{CAi!>7nG7e&|kW1kZKhSZy`g0D8Qro5^^H7;C(Q=PuxBLQv6?`I*q zk?_1$zAh2JmF?%4>z&ctJxvSjsdG`9d`6#_9)@KPbM4dHyP99u%;5*(k&J_HQ!o2P z!ClVhPDAWn1HL-VhEjtY#W>O(_HsVRs`2Sq&*BDgbw!Tv#&D+=Ie!?qHzHXczi=zp zE7vtchMQ}@x4nCeCO?*~brznYw#9C-OQkKKX^iN$znkX@iif}t=<8Z?;Pv!0dLM4$ zeZDoE`fbM4G-lh2(ZvMj*eQ5YHP&b1Sf7Z=g+B!LPGEiqIl*yjgIT#=cE8G8?M=1a zBwD23pDO-^ZlPO3lOEorNvGmW8YjgOqysq7cJkn#@ZfSetaY*%y}{Ru7+z|hdLLS4 z-&2KLXD|C|Ef3T z#&*EdjKav{LzieZWQ^c*{nn&Q+pTa7hM+bKj z8y(0Cb@A+fLSrGy6z0~wu!WRapIQ_gg=O>F>Z|OeYm&R0XSYS5)Yb% zU1ws;RNIjYzjSaIzeq>E#2Xf1{}HU++zkE~z<?WRXW$*#`15XCXscPD z_%~R$__0m#9*DTk_2w#lR>|il>GMJS3wv(-y8jw&NcNCzp-)0n ziNEI9sPLl(R!qUC7cp|KvI9XL&F`!++|R$T?{VzPbpf}%oa@ErZppsI;|*+cDp>RT z&dKmIf69PYetYGiE1x4?djVWySK&u%eE%9ox}~;4bIJU02k&|OuYz$%KKPaI=b1}6 zoZ`8A5SP+HeppWBy@K#7$MCzGs2@Cp?K@E$6KjdC4$ucr9*n-;we4Ew*vI{E#>VQ#Pay0GWh^0Q?$?*(HT5LE3j2(n6ZlVXp5~@y!KJ?k`=Zd=&~@<4I;;o9!p%AMCVnb~$vTbHyk$yHfj#n&19y3Db8wz#~XML4Sj-UiSmtCsS|QraFV_@v2WY*xJC!52Oplg17%7 zu-}c42L~P<=>0vgkIu!7U(XYEa_h#6cV7G?zuSkLTLYdSwt3R2o8Eu(GX73rtekG0 zuRe11n|Hap4yo=onx3?%WzTdoGm!7F&vdYN zqQ0BRSR4J^wlMVwzmEP^g)v|lI#{ncm73~wnrBNNDTh;BqaBTWepD?^@6oS3FXPxX&0tgz+b$F){!S7{j3G^mRY0Rs6EPQ!V)yi;fX)j^I%WM z{wyE!`Q`j*@dwY%?@W%*W(O_GH2dLvTq(`AfX^q0GiNy>zzsGqlvB)}+ z_vXVbGa~V;--Tg|=6-Jc!mam|PqY>Y581*zdjxqlye~KWZiS*OK|%qYjKdl5yXQe)m3Tj*@Vn3kXsQTJ!>W%0C{EMluC&Twj2fuVM){M1<5c@HP4R^ygFz?Ka^nugG zuY9lhM%Vpa{r(^A`_NoN>-_ltN~$@ns7#gKz9#Tf&y7b9moNrD%Uo}Fap9LQ@vLlg znoS%WWxvBwYL{7UcDKob^Jy>mD(bRbSVJm3{PKbD7*vs*bT#wi_pn)35ChVMxKQpE za3r1cYsv|Vf4-lg`8<4j2X*_e;ri#m~+KbSMAFB!UC`#25S~MF%vwQ z;5vfr0pk{U^E&jjqQ`+A3#lW#$bPn`iRp(}lew4Y{F%Hqlv?v|@$Vk2({+yfFs=zT zj7BYXwWtODB=)&f<#iR-nJR)mKI&DRV|_g%C+#ntjC8c>)F1|7uYZ8;W&HKYPWw7N z4A%R>JODHO1ILe zJsG+(&wFR^uJ-z?qFq*wQFLTH{hvr?n#7*VarAH$IeI8_G&BB*&*M=YHXi+0vz`1y z-*R3BGMDRz5$%lB|2_6XS|Zx565cn-MHxQA_!Gci2}#7B6<9Ye4_DAydpx3CS p#4pn*76OqiRXdr2s6wHgm#W8|ZcUCyoITEJ;H(DDYM?kY@PCW*cI^NF literal 0 HcmV?d00001 diff --git a/TomTom_CrazyArrow.lua b/TomTom_CrazyArrow.lua index b667254..42c6c21 100644 --- a/TomTom_CrazyArrow.lua +++ b/TomTom_CrazyArrow.lua @@ -380,11 +380,12 @@ local function wayframe_OnEvent(self, event, arg1, ...) local feed_crazy = ldb:NewDataObject("TomTom_CrazyArrow", { type = "data source", icon = "Interface\\Addons\\TomTom\\Images\\Arrow", + staticIcon = "Interface\\Addons\\TomTom\\Images\\StaticArrow", text = "Crazy", - iconR = 1, - iconG = 1, - iconB = 1, - iconCoords = {0, 1, 0, 1}, + iconR = 0.2, + iconG = 1.0, + iconB = 0.2, + iconCoords = texcoords["1:1"], OnTooltipShow = function(tooltip) local dist = TomTom:GetDistanceToWaypoint(active_point) if dist then -- 1.7.9.5 From 6c03fc64a886e8bed61e9141ddb601077ef45802 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Thu, 18 Nov 2010 17:14:02 +0000 Subject: [PATCH 07/10] Added Astrolabe as a tool-used --- .pkgmeta | 1 + 1 file changed, 1 insertion(+) diff --git a/.pkgmeta b/.pkgmeta index d0c0583..e9c751a 100644 --- a/.pkgmeta +++ b/.pkgmeta @@ -4,5 +4,6 @@ tools-used: - ace3 - callbackhandler - libstub + - astrolabe enable-nolib-creation: no -- 1.7.9.5 From c7dfcc45244184be726c9291db6f0ee71e4f5b12 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Wed, 24 Nov 2010 14:21:37 +0000 Subject: [PATCH 08/10] Update (and compat) for Astrolabe-1.0 with Cataclysm --- TomTom.lua | 148 +++-- TomTom_CrazyArrow.lua | 1 - TomTom_Waypoints.lua | 26 +- libs/Astrolabe/Astrolabe.lua | 1296 +++++++++++++++++++++--------------------- 4 files changed, 761 insertions(+), 710 deletions(-) diff --git a/TomTom.lua b/TomTom.lua index 575210e..8047a8f 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -4,12 +4,8 @@ -- Simple localization table for messages local L = TomTomLocals -local Astrolabe = DongleStub("Astrolabe-0.4") local ldb = LibStub("LibDataBroker-1.1") --- Speed up minimap updates -Astrolabe.MinimapUpdateTime = 0.1 - -- Create the addon object TomTom = { events = {}, @@ -28,6 +24,63 @@ TomTom = { if TomTom.version == "wowi:revision" then TomTom.version = "SVN" end if TomTom.version == "@project-version@" then TomTom.version = "SCM" end +--[[-------------------------------------------------------------------------- +-- Astrolabe compatability library +----------------------------------------------------------------------------]] + +local compat = {} +TomTom.compat = compat + +do + local Astrolabe = DongleStub("Astrolabe-1.0") + + -- Create a lookup table from mapID to c,z pairs + local mapcz = {} + for cid, zlist in ipairs(Astrolabe.ContinentList) do + for zid, mapid in pairs(zlist) do + mapcz[mapid] = {cid, zid} + end + end + + -- Speed up minimap updates + Astrolabe.MinimapUpdateTime = 0.1 + + -- This function takes the mapID return from the Astrolabe function + -- and converts it to a c,z,x,y tuple + function compat:GetCurrentPlayerPosition() + local map, floor, x, y = Astrolabe:GetCurrentPlayerPosition() + local c, z = mapcz[map] + return c, z, x, y + end + + function compat:GetDirectionToIcon(...) + return Astrolabe:GetDirectionToIcon(...) + end + + function compat:GetDistanceToIcon(...) + return Astrolabe:GetDistanceToIcon(...) + end + + function compat:RemoveIconFromMinimap(...) + return Astrolabe:RemoveIconFromMinimap(...) + end + + function compat:IsIconOnEdge(...) + return Astrolabe:IsIconOnEdge(...) + end + + function compat:PlaceIconOnMinimap(icon, c, z, x, y) + local mapId = Astrolabe:GetMapID(c, z) + return Astrolabe:PlaceIconOnMinimap(icon, mapId, nil, x, y) + end + + function compat:PlaceIconOnWorldMap(frame, icon, c, z, x, y) + local mapId = Astrolabe:GetMapID(c, z) + return Astrolabe:PlaceIconOnWorldMap(frame, icon, mapId, nil, x, y) + end + +end + TomTom.eventFrame:SetScript("OnEvent", function(self, event, ...) local method = TomTom.events[event] if method and TomTom[method] then @@ -181,7 +234,7 @@ function TomTom:ADDON_LOADED(event, addon) end counter = 0 - local c,z,x,y = Astrolabe:GetCurrentPlayerPosition() + local c,z,x,y = compat:GetCurrentPlayerPosition() local opt = TomTom.db.profile if x and y then @@ -860,42 +913,45 @@ function TomTom:SetCustomWaypoint(c,z,x,y,callback,minimap,world, silent) return self:AddZWaypoint(c, z, x, y, desc, false, minimap, world, callback, silent) end --- Code taken from HandyNotes, thanks Xinhuan ---------------------------------------------------------- --- Public functions for plugins to convert between MapFile <-> C,Z --- -local continentMapFile = { - [WORLDMAP_COSMIC_ID] = "Cosmic", -- That constant is -1 - [0] = "World", - [1] = "Kalimdor", - [2] = "Azeroth", - [3] = "Expansion01", -} -local reverseMapFileC = {} -local reverseMapFileZ = {} -for C = 1, #Astrolabe.ContinentList do - for Z = 1, #Astrolabe.ContinentList[C] do - local mapFile = Astrolabe.ContinentList[C][Z] - reverseMapFileC[mapFile] = C - reverseMapFileZ[mapFile] = Z - end -end -for C = -1, 3 do - local mapFile = continentMapFile[C] - reverseMapFileC[mapFile] = C - reverseMapFileZ[mapFile] = 0 -end +do + local Astrolabe = DongleStub("Astrolabe-1.0") + -- Code taken from HandyNotes, thanks Xinhuan + --------------------------------------------------------- + -- Public functions for plugins to convert between MapFile <-> C,Z + -- + local continentMapFile = { + [WORLDMAP_COSMIC_ID] = "Cosmic", -- That constant is -1 + [0] = "World", + [1] = "Kalimdor", + [2] = "Azeroth", + [3] = "Expansion01", + } + local reverseMapFileC = {} + local reverseMapFileZ = {} + for C = 1, #Astrolabe.ContinentList do + for Z = 1, #Astrolabe.ContinentList[C] do + local mapFile = Astrolabe.ContinentList[C][Z] + reverseMapFileC[mapFile] = C + reverseMapFileZ[mapFile] = Z + end + end + for C = -1, 3 do + local mapFile = continentMapFile[C] + reverseMapFileC[mapFile] = C + reverseMapFileZ[mapFile] = 0 + end -function TomTom:GetMapFile(C, Z) - if not C or not Z then return end - if Z == 0 then - return continentMapFile[C] - elseif C > 0 then - return Astrolabe.ContinentList[C][Z] - end -end -function TomTom:GetCZ(mapFile) - return reverseMapFileC[mapFile], reverseMapFileZ[mapFile] + function TomTom:GetMapFile(C, Z) + if not C or not Z then return end + if Z == 0 then + return continentMapFile[C] + elseif C > 0 then + return Astrolabe.ContinentList[C][Z] + end + end + function TomTom:GetCZ(mapFile) + return reverseMapFileC[mapFile], reverseMapFileZ[mapFile] + end end -- Public functions for plugins to convert between coords <--> x,y @@ -931,7 +987,7 @@ do end function WorldMap_OnUpdate(self, elapsed) - local c,z,x,y = Astrolabe:GetCurrentPlayerPosition() + local c,z,x,y = compat:GetCurrentPlayerPosition() local opt = TomTom.db.profile if not x or not y then @@ -952,7 +1008,7 @@ end do function Block_OnUpdate(self, elapsed) - local c,z,x,y = Astrolabe:GetCurrentPlayerPosition() + local c,z,x,y = compat:GetCurrentPlayerPosition() local opt = TomTom.db.profile if not x or not y then @@ -974,7 +1030,7 @@ do end function Block_OnClick(self, button, down) - local c,z,x,y = Astrolabe:GetCurrentPlayerPosition() + local c,z,x,y = compat:GetCurrentPlayerPosition() local zone = TomTom:GetMapFile(c, z) local desc = format("%s: %.2f, %.2f", zone, x*100, y*100) TomTom:AddZWaypoint(c, z, x*100, y*100, desc) @@ -997,7 +1053,7 @@ for cidx,c in ipairs{GetMapContinents()} do end function TomTom:GetClosestWaypoint() - local c,z,x,y = Astrolabe:GetCurrentPlayerPosition() + local c,z,x,y = compat:GetCurrentPlayerPosition() local zone = TomTom:GetMapFile(c, z) local closest_uid = nil local closest_dist = nil @@ -1032,7 +1088,7 @@ end SLASH_TOMTOM_WAYBACK1 = "/wayb" SLASH_TOMTOM_WAYBACK2 = "/wayback" SlashCmdList["TOMTOM_WAYBACK"] = function(msg) - local backc,backz,backx,backy = Astrolabe:GetCurrentPlayerPosition() + local backc,backz,backx,backy = compat:GetCurrentPlayerPosition() TomTom:AddZWaypoint(backc, backz, backx*100, backy*100, L["Wayback"]) end @@ -1158,3 +1214,5 @@ SlashCmdList["TOMTOM_WAY"] = function(msg) return usage() end end + + diff --git a/TomTom_CrazyArrow.lua b/TomTom_CrazyArrow.lua index 42c6c21..20f424a 100644 --- a/TomTom_CrazyArrow.lua +++ b/TomTom_CrazyArrow.lua @@ -6,7 +6,6 @@ -- with the artwork.) ----------------------------------------------------------------------------]] -local Astrolabe = DongleStub("Astrolabe-0.4") local sformat = string.format local L = TomTomLocals local ldb = LibStub("LibDataBroker-1.1") diff --git a/TomTom_Waypoints.lua b/TomTom_Waypoints.lua index b8784db..d3c102c 100644 --- a/TomTom_Waypoints.lua +++ b/TomTom_Waypoints.lua @@ -8,8 +8,8 @@ -- TomTom:AddZWaypoint() and TomTom:RemoveWaypoint() instead. ----------------------------------------------------------------------------]] --- Import Astrolabe for locations -local Astrolabe = DongleStub("Astrolabe-0.4") +-- Import compat library +local compat = TomTom.compat -- Create a tooltip to be used when mousing over waypoints local tooltip = CreateFrame("GameTooltip", "TomTomTooltip", UIParent, "GameTooltipTemplate") @@ -77,7 +77,7 @@ local rad_135 = math.rad(135) local function rotateArrow(self) if self.disabled then return end - local angle = Astrolabe:GetDirectionToIcon(self) + local angle = compat:GetDirectionToIcon(self) if not angle then return self:Hide() end angle = angle + rad_135 @@ -185,10 +185,10 @@ function TomTom:SetWaypoint(c, z, x, y, callbacks, show_minimap, show_world) point.uid = getuid(point) -- Place the waypoint - Astrolabe:PlaceIconOnMinimap(point.minimap, c, z, x, y) + compat:PlaceIconOnMinimap(point.minimap, c, z, x, y) if show_world then - Astrolabe:PlaceIconOnWorldMap(TomTomMapOverlay, point.worldmap, c, z, x, y) + compat:PlaceIconOnWorldMap(TomTomMapOverlay, point.worldmap, c, z, x, y) else point.worldmap.disabled = true end @@ -244,7 +244,7 @@ end function TomTom:ClearWaypoint(uid) local point = resolveuid(uid, true) if point then - Astrolabe:RemoveIconFromMinimap(point.minimap) + compat:RemoveIconFromMinimap(point.minimap) point.minimap:Hide() point.worldmap:Hide() @@ -265,12 +265,12 @@ end function TomTom:GetDistanceToWaypoint(uid) local point = resolveuid(uid) - return point and Astrolabe:GetDistanceToIcon(point.minimap) + return point and compat:GetDistanceToIcon(point.minimap) end function TomTom:GetDirectionToWaypoint(uid) local point = resolveuid(uid) - return point and Astrolabe:GetDirectionToIcon(point.minimap) + return point and compat:GetDirectionToIcon(point.minimap) end do @@ -334,7 +334,7 @@ do local minimap_count = 0 function Minimap_OnUpdate(self, elapsed) - local dist,x,y = Astrolabe:GetDistanceToIcon(self) + local dist,x,y = compat:GetDistanceToIcon(self) local disabled = self.disabled if not dist or IsInInstance() then @@ -349,7 +349,7 @@ do -- Reset the counter minimap_count = 0 - local edge = Astrolabe:IsIconOnEdge(self) + local edge = compat:IsIconOnEdge(self) local data = self.point local callbacks = data.callbacks @@ -360,7 +360,7 @@ do self.arrow:Show() -- Rotate the icon, as required - local angle = Astrolabe:GetDirectionToIcon(self) + local angle = compat:GetDirectionToIcon(self) angle = angle + rad_135 if GetCVar("rotateMinimap") == "1" then @@ -438,7 +438,7 @@ do local data = self.point if data.worldmap and data.show_world and not disabled then - local x,y = Astrolabe:PlaceIconOnWorldMap(TomTomMapOverlay, self, data.c, data.z, data.x, data.y) + local x,y = compat:PlaceIconOnWorldMap(TomTomMapOverlay, self, data.c, data.z, data.x, data.y) if (x and y and (0 < x and x <= 1) and (0 < y and y <= 1)) then self:Show() else @@ -454,7 +454,7 @@ do if event == "PLAYER_ENTERING_WORLD" then local data = self.point if data and data.uid and resolveuid(data.uid) then - Astrolabe:PlaceIconOnMinimap(self, data.c, data.z, data.x, data.y) + compat:PlaceIconOnMinimap(self, data.c, data.z, data.x, data.y) end end end diff --git a/libs/Astrolabe/Astrolabe.lua b/libs/Astrolabe/Astrolabe.lua index 1b58576..80f8544 100644 --- a/libs/Astrolabe/Astrolabe.lua +++ b/libs/Astrolabe/Astrolabe.lua @@ -1,7 +1,7 @@ --[[ Name: Astrolabe -Revision: $Rev: 107 $ -$Date: 2009-08-05 08:34:29 +0100 (Wed, 05 Aug 2009) $ +Revision: $Rev: 116 $ +$Date: 2010-11-23 04:59:44 +0000 (Tue, 23 Nov 2010) $ Author(s): Esamynn (esamynn at wowinterface.com) Inspired By: Gatherer by Norganna MapLibrary by Kristofer Karlsson (krka at kth.se) @@ -13,7 +13,7 @@ Description: This library also manages and updates the position of Minimap icons automatically. -Copyright (C) 2006-2008 James Carrothers +Copyright (C) 2006-2010 James Carrothers License: This library is free software; you can redistribute it and/or @@ -41,8 +41,8 @@ Note: -- WARNING!!! -- DO NOT MAKE CHANGES TO THIS LIBRARY WITHOUT FIRST CHANGING THE LIBRARY_VERSION_MAJOR -- STRING (to something unique) OR ELSE YOU MAY BREAK OTHER ADDONS THAT USE THIS LIBRARY!!! -local LIBRARY_VERSION_MAJOR = "Astrolabe-0.4" -local LIBRARY_VERSION_MINOR = tonumber(string.match("$Revision: 107 $", "(%d+)") or 1) +local LIBRARY_VERSION_MAJOR = "Astrolabe-1.0" +local LIBRARY_VERSION_MINOR = tonumber(string.match("$Revision: 116 $", "(%d+)") or 1) if not DongleStub then error(LIBRARY_VERSION_MAJOR .. " requires DongleStub.") end if not DongleStub:IsNewerVersion(LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR) then return end @@ -50,7 +50,7 @@ if not DongleStub:IsNewerVersion(LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR) t local Astrolabe = {}; -- define local variables for Data Tables (defined at the end of this file) -local WorldMapSize, MinimapSize, ValidMinimapShapes; +local WorldMapSize, MinimapSize, ValidMinimapShapes, zeroData; function Astrolabe:GetVersion() return LIBRARY_VERSION_MAJOR, LIBRARY_VERSION_MINOR; @@ -107,6 +107,15 @@ local yield = coroutine.yield local next = next local GetFramerate = GetFramerate +local real_GetCurrentMapAreaID = GetCurrentMapAreaID +local function GetCurrentMapAreaID() + local id = real_GetCurrentMapAreaID(); + if ( id < 0 and GetCurrentMapContinent() == WORLDMAP_WORLD_ID ) then + return 0; + end + return id; +end + -------------------------------------------------------------------------------------------------------------- -- Internal Utility Functions @@ -130,15 +139,12 @@ local function argcheck(value, num, ...) error(string.format("Bad argument #%d to 'Astrolabe.%s' (%s expected, got %s)", num, name, types, type(value)), 3) end -local function getContPosition( zoneData, z, x, y ) - if ( z ~= 0 ) then - zoneData = zoneData[z]; - x = x * zoneData.width + zoneData.xOffset; - y = y * zoneData.height + zoneData.yOffset; - else - x = x * zoneData.width; - y = y * zoneData.height; +local function getSystemPosition( mapData, f, x, y ) + if ( f ~= 0 ) then + mapData = mapData[f]; end + x = x * mapData.width + mapData.xOffset; + y = y * mapData.height + mapData.yOffset; return x, y; end @@ -147,58 +153,68 @@ end -- General Utility Functions -------------------------------------------------------------------------------------------------------------- -function Astrolabe:ComputeDistance( c1, z1, x1, y1, c2, z2, x2, y2 ) +function Astrolabe:ComputeDistance( m1, f1, x1, y1, m2, f2, x2, y2 ) --[[ - argcheck(c1, 2, "number"); - assert(3, c1 >= 0, "ComputeDistance: Illegal continent index to c1: "..c1); - argcheck(z1, 3, "number", "nil"); + argcheck(m1, 2, "number"); + assert(3, m1 >= 0, "ComputeDistance: Illegal map id to m1: "..m1); + argcheck(f1, 3, "number", "nil"); argcheck(x1, 4, "number"); argcheck(y1, 5, "number"); - argcheck(c2, 6, "number"); - assert(3, c2 >= 0, "ComputeDistance: Illegal continent index to c2: "..c2); - argcheck(z2, 7, "number", "nil"); + argcheck(m2, 6, "number"); + assert(3, m2 >= 0, "ComputeDistance: Illegal map id to m2: "..m2); + argcheck(f2, 7, "number", "nil"); argcheck(x2, 8, "number"); argcheck(y2, 9, "number"); --]] - z1 = z1 or 0; - z2 = z2 or 0; + f1 = f1 or 0; + f2 = f2 or 0; local dist, xDelta, yDelta; - if ( c1 == c2 and z1 == z2 ) then - -- points in the same zone - local zoneData = WorldMapSize[c1]; - if ( z1 ~= 0 ) then - zoneData = zoneData[z1]; + if ( m1 == m2 and f1 == f2 ) then + -- points in the same zone on the same floor + local mapData = WorldMapSize[m1]; + if ( f1 ~= 0 ) then + mapData = mapData[f1]; end - xDelta = (x2 - x1) * zoneData.width; - yDelta = (y2 - y1) * zoneData.height; - - elseif ( c1 == c2 ) then - -- points on the same continent - local zoneData = WorldMapSize[c1]; - x1, y1 = getContPosition(zoneData, z1, x1, y1); - x2, y2 = getContPosition(zoneData, z2, x2, y2); - xDelta = (x2 - x1); - yDelta = (y2 - y1); + xDelta = (x2 - x1) * mapData.width; + yDelta = (y2 - y1) * mapData.height; - elseif ( c1 and c2 ) then - local cont1 = WorldMapSize[c1]; - local cont2 = WorldMapSize[c2]; - if ( cont1.parentContinent == cont2.parentContinent ) then - x1, y1 = getContPosition(cont1, z1, x1, y1); - x2, y2 = getContPosition(cont2, z2, x2, y2); - if ( c1 ~= cont1.parentContinent ) then - x1 = x1 + cont1.xOffset; - y1 = y1 + cont1.yOffset; - end - if ( c2 ~= cont2.parentContinent ) then - x2 = x2 + cont2.xOffset; - y2 = y2 + cont2.yOffset; + else + local map1 = WorldMapSize[m1]; + local map2 = WorldMapSize[m2]; + if ( map1.system == map2.system ) then + -- points within the same system (continent) + x1, y1 = getSystemPosition(map1, f1, x1, y1); + x2, y2 = getSystemPosition(map2, f2, x2, y2); + xDelta = (x2 - x1); + yDelta = (y2 - y1); + + else + local sp1 = map1.systemParent; + local sp2 = map2.systemParent; + if ( sp1 == sp2 ) then + --local worldID = sp1; + -- instead of a new local, reuse sp1 + local s1 = map1.system; + local s2 = map2.system; + x1, y1 = getSystemPosition(map1, f1, x1, y1); + x2, y2 = getSystemPosition(map2, f2, x2, y2); + if not ( s1 == map1.systemParent ) then + local cont1 = WorldMapSize[sp1][s1]; + x1 = x1 - cont1.xOffset; + y1 = y1 - cont1.yOffset; + end + if not ( s2 == map2.systemParent ) then + local cont2 = WorldMapSize[sp1][s2]; + x2 = x2 - cont2.xOffset; + y2 = y2 - cont2.yOffset; + end + + xDelta = x2 - x1; + yDelta = y2 - y1; end - - xDelta = x2 - x1; - yDelta = y2 - y1; + end end @@ -208,64 +224,77 @@ function Astrolabe:ComputeDistance( c1, z1, x1, y1, c2, z2, x2, y2 ) return dist, xDelta, yDelta; end -function Astrolabe:TranslateWorldMapPosition( C, Z, xPos, yPos, nC, nZ ) +function Astrolabe:TranslateWorldMapPosition( M, F, xPos, yPos, nM, nF ) --[[ - argcheck(C, 2, "number"); - argcheck(Z, 3, "number", "nil"); + argcheck(M, 2, "number"); + argcheck(F, 3, "number", "nil"); argcheck(xPos, 4, "number"); argcheck(yPos, 5, "number"); - argcheck(nC, 6, "number"); - argcheck(nZ, 7, "number", "nil"); + argcheck(nM, 6, "number"); + argcheck(nF, 7, "number", "nil"); --]] - Z = Z or 0; - nZ = nZ or 0; - if ( nC < 0 ) then + F = F or 0; + nF = nF or 0; + if ( nM < 0 ) then return; end - local zoneData; - if ( C == nC and Z == nZ ) then + local mapData; + if ( M == nM and F == nF ) then return xPos, yPos; - elseif ( C == nC ) then - -- points on the same continent - zoneData = WorldMapSize[C]; - xPos, yPos = getContPosition(zoneData, Z, xPos, yPos); - if ( nZ ~= 0 ) then - zoneData = WorldMapSize[C][nZ]; - xPos = xPos - zoneData.xOffset; - yPos = yPos - zoneData.yOffset; - end - - elseif ( C and nC ) and ( WorldMapSize[C].parentContinent == WorldMapSize[nC].parentContinent ) then - -- different continents, same world - zoneData = WorldMapSize[C]; - local parentContinent = zoneData.parentContinent; - xPos, yPos = getContPosition(zoneData, Z, xPos, yPos); - if ( C ~= parentContinent ) then - -- translate up to world map if we aren't there already - xPos = xPos + zoneData.xOffset; - yPos = yPos + zoneData.yOffset; - zoneData = WorldMapSize[parentContinent]; - end - if ( nC ~= parentContinent ) then - -- translate down to the new continent - zoneData = WorldMapSize[nC]; - xPos = xPos - zoneData.xOffset; - yPos = yPos - zoneData.yOffset; - if ( nZ ~= 0 ) then - zoneData = zoneData[nZ]; - xPos = xPos - zoneData.xOffset; - yPos = yPos - zoneData.yOffset; + else + local map = WorldMapSize[M]; + local nMap = WorldMapSize[nM]; + if ( map.system == nMap.system ) then + -- points within the same system (continent) + xPos, yPos = getSystemPosition(map, F, xPos, yPos); + mapData = WorldMapSize[nM]; + if ( nF ~= 0 ) then + mapData = mapData[nF]; + end + xPos = xPos - mapData.xOffset; + yPos = yPos - mapData.yOffset; + + else + -- different continents, same world + local SP = map.systemParent; + local nSP = nMap.systemParent; + if ( SP == nSP ) then + --local worldID = SP; + -- instead of a new local, reuse SP + local S = map.system; + local nS = nMap.system; + mapData = WorldMapSize[M]; + xPos, yPos = getSystemPosition(mapData, F, xPos, yPos); + if ( M ~= SP ) then + -- translate up to world map if we aren't there already + local cont = WorldMapSize[SP][S]; + xPos = xPos - cont.xOffset; + yPos = yPos - cont.yOffset; + mapData = WorldMapSize[SP]; + end + if ( nM ~= SP ) then + -- translate down to the new continent + local nCont = WorldMapSize[SP][nS]; + xPos = xPos + nCont.xOffset; + yPos = yPos + nCont.yOffset; + mapData = WorldMapSize[nM]; + if ( nF ~= 0 ) then + mapData = mapData[nF]; + end + end + + else + return; end + end - else - return; end - return (xPos / zoneData.width), (yPos / zoneData.height); + return (xPos / mapData.width), (yPos / mapData.height); end --***************************************************************************** @@ -281,24 +310,26 @@ function Astrolabe:GetUnitPosition( unit, noMapChange ) -- to change map zoom, so return return; end - local lastCont, lastZone = GetCurrentMapContinent(), GetCurrentMapZone(); + local lastMapID, lastFloor = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(); SetMapToCurrentZone(); x, y = GetPlayerMapPosition(unit); if ( x <= 0 and y <= 0 ) then - SetMapZoom(GetCurrentMapContinent()); + WorldMapZoomOutButton_OnClick(); x, y = GetPlayerMapPosition(unit); if ( x <= 0 and y <= 0 ) then - -- we are in an instance or otherwise off the continent map + -- we are in an instance or otherwise off map return; end end - local C, Z = GetCurrentMapContinent(), GetCurrentMapZone(); - if ( C ~= lastCont or Z ~= lastZone ) then - SetMapZoom(lastCont, lastZone); -- set map zoom back to what it was before + local M, F = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(); + if ( M ~= lastMapID or F ~= lastFloor ) then + -- set map zoom back to what it was before + SetMapByID(lastMapID); + SetDungeonMapLevel(lastFloor); end - return C, Z, x, y; + return M, F, x, y; end - return GetCurrentMapContinent(), GetCurrentMapZone(), x, y; + return GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(), x, y; end --***************************************************************************** @@ -310,31 +341,30 @@ end -- setting before this function returns, if it was changed. --***************************************************************************** function Astrolabe:GetCurrentPlayerPosition() - local x, y = GetPlayerMapPosition("player"); - if ( x <= 0 and y <= 0 ) then - if ( self.WorldMapVisible ) then - -- we know there is a visible world map, so don't cause - -- WORLD_MAP_UPDATE events by changing map zoom - return; - end - local lastCont, lastZone = GetCurrentMapContinent(), GetCurrentMapZone(); - SetMapToCurrentZone(); - x, y = GetPlayerMapPosition("player"); - if ( x <= 0 and y <= 0 ) then - SetMapZoom(GetCurrentMapContinent()); - x, y = GetPlayerMapPosition("player"); - if ( x <= 0 and y <= 0 ) then - -- we are in an instance or otherwise off the continent map - return; - end - end - local C, Z = GetCurrentMapContinent(), GetCurrentMapZone(); - if ( C ~= lastCont or Z ~= lastZone ) then - SetMapZoom(lastCont, lastZone); --set map zoom back to what it was before - end - return C, Z, x, y; + return self:GetUnitPosition("player", self.WorldMapVisible); +end + +function Astrolabe:GetMapID(continent, zone) + zone = zone or 0; + local ret = self.ContinentList[continent]; + if ( ret ) then + return ret[zone]; + end + if ( continent == 0 and zone == 0 ) then + return 0; + end +end + +function Astrolabe:GetMapInfo( mapID, mapFloor ) + mapFloor = mapFloor or 0 + local mapData = WorldMapSize[mapID] + local system, systemParent = mapData.system, mapData.systemParent + if ( mapFloor ~= 0 ) then + mapData = mapData[mapFloor]; + end + if ( mapData ~= zeroData ) then + return system, systemParent, mapData.width, mapData.height, mapData.xOffset, mapData.yOffset end - return GetCurrentMapContinent(), GetCurrentMapZone(), x, y; end @@ -437,34 +467,34 @@ local function placeIconOnMinimap( minimap, minimapZoom, mapWidth, mapHeight, ic icon:SetPoint("CENTER", minimap, "CENTER", xDist/xScale, -yDist/yScale); end -function Astrolabe:PlaceIconOnMinimap( icon, continent, zone, xPos, yPos ) +function Astrolabe:PlaceIconOnMinimap( icon, mapID, mapFloor, xPos, yPos ) -- check argument types argcheck(icon, 2, "table"); assert(3, icon.SetPoint and icon.ClearAllPoints, "Usage Message"); - argcheck(continent, 3, "number"); - argcheck(zone, 4, "number", "nil"); + argcheck(mapID, 3, "number"); + argcheck(mapFloor, 4, "number", "nil"); argcheck(xPos, 5, "number"); argcheck(yPos, 6, "number"); -- if the positining system is currently active, just use the player position used by the last incremental (or full) update -- otherwise, make sure we base our calculations off of the most recent player position (if one is available) - local lC, lZ, lx, ly; + local lM, lF, lx, ly; if ( self.processingFrame:IsShown() ) then - lC, lZ, lx, ly = unpack(self.LastPlayerPosition); + lM, lF, lx, ly = unpack(self.LastPlayerPosition); else - lC, lZ, lx, ly = self:GetCurrentPlayerPosition(); - if ( lC and lC >= 0 ) then + lM, lF, lx, ly = self:GetCurrentPlayerPosition(); + if ( lM and lM >= 0 ) then local lastPosition = self.LastPlayerPosition; - lastPosition[1] = lC; - lastPosition[2] = lZ; + lastPosition[1] = lM; + lastPosition[2] = lF; lastPosition[3] = lx; lastPosition[4] = ly; else - lC, lZ, lx, ly = unpack(self.LastPlayerPosition); + lM, lF, lx, ly = unpack(self.LastPlayerPosition); end end - local dist, xDist, yDist = self:ComputeDistance(lC, lZ, lx, ly, continent, zone, xPos, yPos); + local dist, xDist, yDist = self:ComputeDistance(lM, lF, lx, ly, mapID, mapFloor, xPos, yPos); if not ( dist ) then --icon's position has no meaningful position relative to the player's current location return -1; @@ -478,8 +508,8 @@ function Astrolabe:PlaceIconOnMinimap( icon, continent, zone, xPos, yPos ) end AddedOrUpdatedIcons[icon] = iconData - iconData.continent = continent; - iconData.zone = zone; + iconData.mapID = mapID; + iconData.mapFloor = mapFloor; iconData.xPos = xPos; iconData.yPos = yPos; iconData.dist = dist; @@ -559,11 +589,11 @@ do resetIncrementalUpdate = false -- by definition, the incremental update is reset if it is here - local C, Z, x, y = self:GetCurrentPlayerPosition(); - if ( C and C >= 0 ) then + local M, F, x, y = self:GetCurrentPlayerPosition(); + if ( M and M >= 0 ) then local Minimap = Minimap; local lastPosition = self.LastPlayerPosition; - local lC, lZ, lx, ly = unpack(lastPosition); + local lM, lF, lx, ly = unpack(lastPosition); minimapRotationEnabled = GetCVar("rotateMinimap") ~= "0" if ( minimapRotationEnabled ) then @@ -576,7 +606,7 @@ do -- check Minimap Shape minimapShape = GetMinimapShape and ValidMinimapShapes[GetMinimapShape()]; - if ( lC == C and lZ == Z and lx == x and ly == y ) then + if ( lM == M and lF == F and lx == x and ly == y ) then -- player has not moved since the last update if ( lastZoom ~= Minimap:GetZoom() or self.ForceNextUpdate or minimapRotationEnabled ) then local currentZoom = Minimap:GetZoom(); @@ -602,7 +632,7 @@ do self.ForceNextUpdate = false; end else - local dist, xDelta, yDelta = self:ComputeDistance(lC, lZ, lx, ly, C, Z, x, y); + local dist, xDelta, yDelta = self:ComputeDistance(lM, lF, lx, ly, M, F, x, y); if ( dist ) then local currentZoom = Minimap:GetZoom(); lastZoom = currentZoom; @@ -631,15 +661,15 @@ do end end if not ( resetIncrementalUpdate ) then - lastPosition[1] = C; - lastPosition[2] = Z; + lastPosition[1] = M; + lastPosition[2] = F; lastPosition[3] = x; lastPosition[4] = y; end else self:RemoveAllMinimapIcons() - lastPosition[1] = C; - lastPosition[2] = Z; + lastPosition[1] = M; + lastPosition[2] = F; lastPosition[3] = x; lastPosition[4] = y; end @@ -688,8 +718,8 @@ do resetFullUpdate = false -- by definition, the full update is reset if it is here fullUpdateInProgress = true -- set the flag the says a full update is in progress - local C, Z, x, y = self:GetCurrentPlayerPosition(); - if ( C and C >= 0 ) then + local M, F, x, y = self:GetCurrentPlayerPosition(); + if ( M and M >= 0 ) then minimapRotationEnabled = GetCVar("rotateMinimap") ~= "0" if ( minimapRotationEnabled ) then minimapRotationOffset = GetPlayerFacing(); @@ -708,7 +738,7 @@ do local mapHeight = Minimap:GetHeight(); local count = 0 for icon, data in pairs(self.MinimapIcons) do - local dist, xDist, yDist = self:ComputeDistance(C, Z, x, y, data.continent, data.zone, data.xPos, data.yPos); + local dist, xDist, yDist = self:ComputeDistance(M, F, x, y, data.mapID, data.mapFloor, data.xPos, data.yPos); if ( dist ) then placeIconOnMinimap(Minimap, currentZoom, mapWidth, mapHeight, icon, dist, xDist, yDist); @@ -732,8 +762,8 @@ do if not ( resetFullUpdate ) then local lastPosition = self.LastPlayerPosition; - lastPosition[1] = C; - lastPosition[2] = Z; + lastPosition[1] = M; + lastPosition[2] = F; lastPosition[3] = x; lastPosition[4] = y; @@ -829,19 +859,19 @@ end -- World Map Icon Placement -------------------------------------------------------------------------------------------------------------- -function Astrolabe:PlaceIconOnWorldMap( worldMapFrame, icon, continent, zone, xPos, yPos ) +function Astrolabe:PlaceIconOnWorldMap( worldMapFrame, icon, mapID, mapFloor, xPos, yPos ) -- check argument types argcheck(worldMapFrame, 2, "table"); assert(3, worldMapFrame.GetWidth and worldMapFrame.GetHeight, "Usage Message"); argcheck(icon, 3, "table"); assert(3, icon.SetPoint and icon.ClearAllPoints, "Usage Message"); - argcheck(continent, 4, "number"); - argcheck(zone, 5, "number", "nil"); + argcheck(mapID, 4, "number"); + argcheck(mapFloor, 5, "number", "nil"); argcheck(xPos, 6, "number"); argcheck(yPos, 7, "number"); - local C, Z = GetCurrentMapContinent(), GetCurrentMapZone(); - local nX, nY = self:TranslateWorldMapPosition(continent, zone, xPos, yPos, C, Z); + local M, F = GetCurrentMapAreaID(), GetCurrentMapDungeonLevel(); + local nX, nY = self:TranslateWorldMapPosition(mapID, mapFloor, xPos, yPos, M, F); -- anchor and :Show() the icon if it is within the boundry of the current map, :Hide() it otherwise if ( nX and nY and (0 < nX and nX <= 1) and (0 < nY and nY <= 1) ) then @@ -922,9 +952,10 @@ function Astrolabe:OnShow( frame ) if not ( self.WorldMapVisible ) then SetMapToCurrentZone(); end - local C, Z = Astrolabe:GetCurrentPlayerPosition(); - if ( C and C >= 0 ) then - SetMapZoom(C, Z); + local M, F = Astrolabe:GetCurrentPlayerPosition(); + if ( M and M >= 0 ) then + SetMapByID(M); + SetDungeonMapLevel(F); else frame:Hide(); return @@ -963,6 +994,55 @@ end -- Library Registration -------------------------------------------------------------------------------------------------------------- +local function harvestMapData( HarvestedMapData ) + local mapData = {} + local mapName = GetMapInfo(); + local mapID = GetCurrentMapAreaID(); + local numFloors = GetNumDungeonMapLevels(); + mapData.mapName = mapName; + mapData.cont = (GetCurrentMapContinent()) or -100; + mapData.zone = (GetCurrentMapZone()) or -100; + mapData.numFloors = numFloors; + local _, TLx, TLy, BRx, BRy = GetCurrentMapZone(); + if ( TLx and TLy and BRx and BRy ) then + mapData[0] = {}; + if not ( TLx < BRx ) then + TLx = -TLx; + BRx = -BRx; + end + if not ( TLy < BRy) then + TLy = -TLy; + BRy = -BRy; + end + mapData[0].TLx = TLx; + mapData[0].TLy = TLy; + mapData[0].BRx = BRx; + mapData[0].BRy = BRy; + end + if ( numFloors > 0 ) then + for f = 1, numFloors do + SetDungeonMapLevel(f); + local _, TLx, TLy, BRx, BRy = GetCurrentMapDungeonLevel(); + if ( TLx and TLy and BRx and BRy ) then + mapData[f] = {}; + if not ( TLx < BRx ) then + TLx = -TLx; + BRx = -BRx; + end + if not ( TLy < BRy) then + TLy = -TLy; + BRy = -BRy; + end + mapData[f].TLx = TLx; + mapData[f].TLy = TLy; + mapData[f].BRx = BRx; + mapData[f].BRy = BRy; + end + end + end + HarvestedMapData[mapID] = mapData; +end + local function activate( newInstance, oldInstance ) if ( oldInstance ) then -- this is an upgrade activate if ( oldInstance.DumpNewIconsCache ) then @@ -985,13 +1065,28 @@ local function activate( newInstance, oldInstance ) local frame = CreateFrame("Frame"); newInstance.processingFrame = frame; + newInstance.HarvestedMapData = {}; + local HarvestedMapData = newInstance.HarvestedMapData; + newInstance.ContinentList = { GetMapContinents() }; for C in pairs(newInstance.ContinentList) do local zones = { GetMapZones(C) }; newInstance.ContinentList[C] = zones; + SetMapZoom(C, 0); + zones[0] = GetCurrentMapAreaID(); + harvestMapData(HarvestedMapData); for Z in ipairs(zones) do SetMapZoom(C, Z); - zones[Z] = GetMapInfo(); + zones[Z] = GetCurrentMapAreaID(); + harvestMapData(HarvestedMapData); + end + end + + for id=1,10000 do + if not ( HarvestedMapData[id] ) then + if ( SetMapByID(id) ) then + harvestMapData(HarvestedMapData); + end end end end @@ -1077,508 +1172,407 @@ ValidMinimapShapes = { -- distances across and offsets of the world maps -- in game yards WorldMapSize = { - -- World Map of Azeroth [0] = { - parentContinent = 0, - height = 31809.64857610083, - width = 47714.278579261, - }, - -- Kalimdor - { -- [1] - parentContinent = 0, - height = 24533.025279205, - width = 36800.210572494, - xOffset = -8590.40725049343, - yOffset = 5628.692856102324, - zoneData = { - Ashenvale = { - height = 3843.722331667447, - width = 5766.728885829694, - xOffset = 15366.76675592628, - yOffset = 8126.925930315996, - }, - Aszhara = { - height = 3381.22554790382, - width = 5070.886912363937, - xOffset = 20343.90431905976, - yOffset = 7458.18074892042, - }, - AzuremystIsle = { - height = 2714.563862990522, - width = 4070.87719998905, - xOffset = 9966.708003150136, - yOffset = 5460.278492344226, - }, - Barrens = { - height = 6756.201888541853, - width = 10133.44231353798, - xOffset = 14443.84040901447, - yOffset = 11187.32063797497, - }, - BloodmystIsle = { - height = 2174.984213312164, - width = 3262.535628257626, - xOffset = 9541.702868577344, - yOffset = 3424.87645454774, - }, - Darkshore = { - height = 4366.635262519317, - width = 6550.07142937905, - xOffset = 14125.0864431955, - yOffset = 4466.535577798089, - }, - Darnassis = { - height = 705.7244742259542, - width = 1058.344272032854, - xOffset = 14128.39058434346, - yOffset = 2561.565704787642, - }, - Desolace = { - height = 2997.895112390325, - width = 4495.882561567951, - xOffset = 12833.40568925697, - yOffset = 12347.7291386989, - }, - Durotar = { - height = 3524.975103516492, - width = 5287.556393263762, - xOffset = 19029.30641831177, - yOffset = 10991.48866520544, - }, - Dustwallow = { - height = 3499.975024621409, - width = 5250.057340719384, - xOffset = 18041.79555525144, - yOffset = 14833.12785083746, - }, - Felwood = { - height = 3833.30578953572, - width = 5750.062500603067, - xOffset = 15425.10050841866, - yOffset = 5666.52696052216, - }, - Feralas = { - height = 4633.300220031075, - width = 6950.07476479001, - xOffset = 11625.05968863682, - yOffset = 15166.45859885191, - }, - Moonglade = { - height = 1539.572004392277, - width = 2308.359613919473, - xOffset = 18448.04941280923, - yOffset = 4308.203668830446, - }, - Mulgore = { - height = 3424.975591847491, - width = 5137.555664509726, - xOffset = 15018.84638430639, - yOffset = 13072.72374939454, - }, - Ogrimmar = { - height = 935.4097495193695, - width = 1402.619172463506, - xOffset = 20747.42615230776, - yOffset = 10525.94819392488, - }, - Silithus = { - height = 2322.900917404436, - width = 3483.371660836989, - xOffset = 14529.25779832084, - yOffset = 18758.10034739171, - }, - StonetalonMountains = { - height = 3256.22685709556, - width = 4883.386126224323, - xOffset = 13820.91659894445, - yOffset = 9883.163451643639, - }, - Tanaris = { - height = 4599.967247105565, - width = 6900.075410478199, - xOffset = 17285.53717337067, - yOffset = 18674.76738951156, - }, - Teldrassil = { - height = 3393.725685278266, - width = 5091.720159017256, - xOffset = 13252.16118637725, - yOffset = 968.6435100517717, - }, - TheExodar = { - height = 704.6827795715492, - width = 1056.782908333002, - xOffset = 10533.08067788734, - yOffset = 6276.205943683332, - }, - ThousandNeedles = { - height = 2933.311990587089, - width = 4400.046926738385, - xOffset = 17500.12330544135, - yOffset = 16766.44742072096, - }, - ThunderBluff = { - height = 695.8286363220358, - width = 1043.761162566134, - xOffset = 16550.11296988024, - yOffset = 13649.80296445508, - }, - UngoroCrater = { - height = 2466.648940830691, - width = 3700.039952384531, - xOffset = 16533.4461782123, - yOffset = 18766.43318304924, - }, - Winterspring = { - height = 4733.299352687333, - width = 7100.076688034489, - xOffset = 17383.45536235255, - yOffset = 4266.537029274375, - }, + height = 31809.52239, + system = 0, + systemParent = 0, + width = 47714.28663, + xOffset = 0, + yOffset = 0, + [13] = { + xOffset = -8476.18926, + yOffset = -18428.5703, }, - }, - -- Eastern Kingdoms - { -- [2] - parentContinent = 0, - height = 27149.795290881, - width = 40741.175327834, - xOffset = 18542.31220836664, - yOffset = 3585.574573158966, - zoneData = { - Alterac = { - height = 1866.674220583334, - width = 2799.999464405289, - xOffset = 17388.63468066122, - yOffset = 9676.382149825957, - }, - Arathi = { - height = 2400.009317069356, - width = 3599.999517304195, - xOffset = 19038.63447926361, - yOffset = 11309.72195295708, - }, - Badlands = { - height = 1658.340337615859, - width = 2487.500569928747, - xOffset = 20251.13345045087, - yOffset = 17065.99453090572, - }, - BlastedLands = { - height = 2233.342487048268, - width = 3349.999380719363, - xOffset = 19413.63423284709, - yOffset = 21743.09620559562, - }, - BurningSteppes = { - height = 1952.091015081907, - width = 2929.167049647848, - xOffset = 18438.63415866318, - yOffset = 18207.66550773985, - }, - DeadwindPass = { - height = 1666.673717206878, - width = 2499.999255461505, - xOffset = 19005.30099399293, - yOffset = 21043.09319963172, - }, - DunMorogh = { - height = 3283.346244075043, - width = 4925.000979131685, - xOffset = 16369.88372014602, - yOffset = 15053.48652833869, - }, - Duskwood = { - height = 1800.007435102674, - width = 2699.999451812027, - xOffset = 17338.63474984946, - yOffset = 20893.09262994406, - }, - EasternPlaguelands = { - height = 2687.510259086504, - width = 4031.248684963022, - xOffset = 20459.46800337001, - yOffset = 7472.207074316265, - }, - Elwynn = { - height = 2314.592478810788, - width = 3470.832795915813, - xOffset = 16636.55146195304, - yOffset = 19116.00248086271, - }, - EversongWoods = { - height = 3283.346090242183, - width = 4925.00271131707, - xOffset = 20259.46550654072, - yOffset = 2534.687768168357, - }, - Ghostlands = { - height = 2200.008615840919, - width = 3300.001914001321, - xOffset = 21055.29898547313, - yOffset = 5309.698628620597, - }, - Hilsbrad = { - height = 2133.341648261057, - width = 3199.998998314975, - xOffset = 17105.30161317513, - yOffset = 10776.38647689923, - }, - Hinterlands = { - height = 2566.6767425107, - width = 3849.999302583992, - xOffset = 19746.96759079755, - yOffset = 9709.715638073398, - }, - Ironforge = { - height = 527.6066263822604, - width = 790.625237342102, - xOffset = 18885.55918004965, - yOffset = 15745.64757909506, - }, - LochModan = { - height = 1839.589436540107, - width = 2758.333078630792, - xOffset = 20165.71744013867, - yOffset = 15663.90644131906, - }, - Redridge = { - height = 1447.921846941264, - width = 2170.833008876805, - xOffset = 19742.80073199006, - yOffset = 19751.42200372843, - }, - SearingGorge = { - height = 1487.505327445583, - width = 2231.249676776115, - xOffset = 18494.88412729142, - yOffset = 17276.41249042905, - }, - SilvermoonCity = { - height = 806.7736903384404, - width = 1211.459296502504, - xOffset = 22172.71642224908, - yOffset = 3422.648306718702, - }, - Silverpine = { - height = 2800.0110500699, - width = 4199.999060067367, - xOffset = 14721.96859379216, - yOffset = 9509.714862642681, - }, - Stormwind = { - height = 1158.337650999629, - width = 1737.500553362899, - xOffset = 16449.05109973784, - yOffset = 19172.25293704512, - }, - Stranglethorn = { - height = 4254.183097414531, - width = 6381.247773741421, - xOffset = 15951.13530113703, - yOffset = 22345.18245588815, - }, - Sunwell = { - height = 2218.75784157939, - width = 3327.080984022923, - xOffset = 21074.05125342849, - yOffset = 7.594755912743345, - }, - SwampOfSorrows = { - height = 1529.173582734637, - width = 2293.750686253685, - xOffset = 20394.88344424886, - yOffset = 20797.25895394673, - }, - Tirisfal = { - height = 3012.512329627232, - width = 4518.747902731258, - xOffset = 15138.6360714653, - yOffset = 7338.872677268415, - }, - Undercity = { - height = 640.1066040851099, - width = 959.3745478926886, - xOffset = 17298.77542115219, - yOffset = 9298.435370484816, - }, - WesternPlaguelands = { - height = 2866.677851772014, - width = 4299.999720893135, - xOffset = 17755.30124459509, - yOffset = 7809.708293788776, - }, - Westfall = { - height = 2333.342511708478, - width = 3499.999662793482, - xOffset = 15155.30169114852, - yOffset = 20576.42535247717, - }, - Wetlands = { - height = 2756.260945423485, - width = 4135.416085415621, - xOffset = 18561.55114967782, - yOffset = 13324.31325114659, - }, + [14] = { + xOffset = -36714.28738, + yOffset = -14761.90436, + }, + [485] = { + xOffset = -25238.09554, + yOffset = -11047.61835, }, }, - -- Outland - { -- [3] - parentContinent = 3, - height = 11642.355227091, - width = 17463.987300595, - zoneData = { - BladesEdgeMountains = { - height = 3616.553525584605, - width = 5424.971374542539, - xOffset = 4150.184588602209, - yOffset = 1412.982196881336, - }, - Hellfire = { - height = 3443.64230460125, - width = 5164.556244744065, - xOffset = 7456.417231266903, - yOffset = 4339.973859432732, - }, - Nagrand = { - height = 3683.218433421437, - width = 5524.971116484553, - xOffset = 2700.192056890117, - yOffset = 5779.512082963144, - }, - Netherstorm = { - height = 3716.550667470386, - width = 5574.970542741407, - xOffset = 7512.666973902843, - yOffset = 365.0979868806522, - }, - ShadowmoonValley = { - height = 3666.551832578994, - width = 5499.971055470069, - xOffset = 8770.993482940312, - yOffset = 7769.033432511459, - }, - ShattrathCity = { - height = 870.8062268244973, - width = 1306.243111124071, - xOffset = 6860.744657085816, - yOffset = 7295.086006462451, - }, - TerokkarForest = { - height = 3599.887549731843, - width = 5399.971897226099, - xOffset = 5912.67529110344, - yOffset = 6821.146327166267, - }, - Zangarmarsh = { - height = 3351.978661481413, - width = 5027.057239215307, - xOffset = 3521.020775148071, - yOffset = 3885.821395736634, - }, + [13] = { + height = 24533.19945, + systemParent = 0, + width = 36799.81197, + xOffset = -17066.60126, + yOffset = -12799.89961, + }, + [14] = { + height = 27149.68748, + systemParent = 0, + width = 40741.17907, + xOffset = -18171.96844, + yOffset = -11176.34367, + }, + [321] = { + { -- [1] + height = 1159.5835, + width = 1739.375, + xOffset = 3506.354, + yOffset = -2486.66675, + }, + { -- [2] + height = 241.39025, + width = 362.08962, + xOffset = 4163.96713, + yOffset = -1932.27183, }, + xOffset = 8690.02719, + yOffset = -3623.15183, + }, + [401] = { + height = 2825.00046, + width = 4237.49828, + xOffset = 0, + yOffset = 0, + }, + [443] = { + height = 764.58325, + width = 1145.83472, + xOffset = 0, + yOffset = 0, + }, + [461] = { + height = 1170.83309, + width = 1756.25023, + xOffset = 0, + yOffset = 0, + }, + [462] = { + height = 3283.33296, + width = 4924.99935, + xOffset = 2087.50023, + yOffset = -8641.66578, + }, + [463] = { + height = 2200.0001, + width = 3300.00085, + xOffset = 2883.33272, + yOffset = -5866.66614, + }, + [464] = { + height = 2714.58133, + width = 4070.83028, + xOffset = -7099.9985, + yOffset = -7339.58233, + }, + [466] = { + height = 11642.71843, + systemParent = 466, + width = 17464.0779, + xOffset = -12996.03902, + yOffset = -5821.35914, + }, + [471] = { + height = 704.68794, + width = 1056.7699, + xOffset = -6533.63241, + yOffset = -6523.64995, + }, + [476] = { + height = 2174.99908, + width = 3262.50031, + xOffset = -7525.00003, + yOffset = -9374.99943, + }, + [480] = { + height = 806.7719, + width = 1211.45871, + xOffset = 4000.74932, + yOffset = -7753.70939, + }, + [482] = { + height = 1514.58311, + width = 2270.83529, + xOffset = 0, + yOffset = 0, }, - -- Northrend - { -- [4] - parentContinent = 0, - height = 11834.3119870532, - width = 17751.3962441049, - xOffset = 16020.94044398222, - yOffset = 454.2451915717977, - zoneData = { - BoreanTundra = { - height = 3843.764953143499, - width = 5764.582303295793, - xOffset = 646.3192474426043, - yOffset = 5695.48114050537, - }, - CrystalsongForest = { - height = 1814.590295101352, - width = 2722.916513743646, - xOffset = 7773.401390128443, - yOffset = 4091.308181657137, - }, - Dalaran = { - height = 553.3418567935553, - width = 830.0149393375432, - xOffset = 8164.641313001377, - yOffset = 4526.723129621716, - }, - Dragonblight = { - height = 3739.598062842169, - width = 5608.332396545997, - xOffset = 5590.068422600026, - yOffset = 5018.394866268677, - }, - GrizzlyHills = { - height = 3500.013689934217, - width = 5249.998732532693, - xOffset = 10327.56786162186, - yOffset = 5076.728707808831, - }, - HrothgarsLanding = { - height = 2452.093653509858, - width = 3677.082560623348, - xOffset = 6419.234857391856, - yOffset = -187.8757232657943, - }, - HowlingFjord = { - height = 4031.265457002443, - width = 6045.831836878359, - xOffset = 10615.0679627145, - yOffset = 7476.73831512609, - }, - IcecrownGlacier = { - height = 4181.266519840844, - width = 6270.832975322177, - xOffset = 3773.401695036191, - yOffset = 1166.296622984233, - }, - LakeWintergrasp = { - height = 1983.341134082619, - width = 2974.99948105957, - xOffset = 4887.98528918423, - yOffset = 4876.727878058311, - }, - SholazarBasin = { - height = 2904.178067737769, - width = 4356.249510482578, - xOffset = 2287.985538503677, - yOffset = 3305.888591396293, - }, - TheStormPeaks = { - height = 4741.684740041381, - width = 7112.498187401986, - xOffset = 7375.484940713573, - yOffset = 395.46058562991, - }, - ZulDrak = { - height = 3329.179762967791, - width = 4993.749118857795, - xOffset = 9817.151095677416, - yOffset = 2924.637042390465, - }, + [485] = { + height = 11834.26515, + systemParent = 0, + width = 17751.39839, + xOffset = -9217.15231, + yOffset = -10593.37487, + }, + [499] = { + height = 2218.75027, + width = 3327.08362, + xOffset = 2902.08234, + yOffset = -11168.74965, + }, + [502] = { + height = 2108.33411, + width = 3162.49385, + xOffset = 0, + yOffset = 0, + }, + [504] = { + { -- [1] + height = 553.33995, + width = 830.01643, + xOffset = -1052.51109, + yOffset = -6066.67115, }, + { -- [2] + height = 375.48927, + width = 563.22279, + xOffset = -915.86865, + yOffset = -5975.33259, + }, + xOffset = -1270.796, + yOffset = -11581.57677, + }, + [512] = { + height = 1162.50002, + width = 1743.74946, + xOffset = 0, + yOffset = 0, + }, + [531] = { + height = 774.99991, + width = 1162.49961, + xOffset = 0, + yOffset = 0, + }, + [540] = { + height = 1766.66716, + width = 2650.00164, + xOffset = 0, + yOffset = 0, + }, + [544] = { + system = 544, + }, + [545] = { + height = 2097.91669, + width = 3145.83325, + xOffset = 0, + yOffset = 0, + }, + [602] = { + height = 1022.91668, + width = 1533.33347, + xOffset = 0, + yOffset = 0, + }, + [605] = { + system = 605, + }, + [609] = { + height = 502.08329, + width = 752.08331, + xOffset = 0, + yOffset = 0, + }, + [611] = { + height = 593.74988, + width = 889.58325, + xOffset = 0, + yOffset = 0, + }, + [640] = { + system = 640, + }, + [677] = { + height = 593.74988, + width = 889.58325, + xOffset = 0, + yOffset = 0, + }, + [678] = { + height = 2097.91669, + width = 3145.83325, + xOffset = 0, + yOffset = 0, + }, + [679] = { + height = 2097.91669, + width = 3145.83325, + xOffset = 0, + yOffset = 0, + }, + [681] = { + height = 3010.41666, + width = 4514.58301, + xOffset = 0, + yOffset = 0, + }, + [682] = { + height = 3010.41666, + width = 4514.58301, + xOffset = 0, + yOffset = 0, + }, + [686] = { + height = 922.9166, + width = 1383.33334, + xOffset = 0, + yOffset = 0, + }, + [708] = { + height = 1343.75002, + width = 2014.58153, + xOffset = -4810.41584, + yOffset = 2160.41647, + }, + [709] = { + height = 1224.99954, + width = 1837.49974, + xOffset = -5212.4997, + yOffset = 1222.91666, + }, + [717] = { + height = 1674.99988, + width = 2512.4912, + xOffset = 0, + yOffset = 0, + }, + [737] = { + system = 737, }, } -local zeroData; -zeroData = { xOffset = 0, height = 0, yOffset = 0, width = 0, __index = function() return zeroData end }; +local function zeroDataFunc(tbl, key) + if ( type(key) == "number" ) then + return zeroData; + else + return 0; + end +end + +zeroData = { xOffset = 0, height = 0, yOffset = 0, width = 0, __index = zeroDataFunc }; setmetatable(zeroData, zeroData); -setmetatable(WorldMapSize, zeroData); -for continent, zones in pairs(Astrolabe.ContinentList) do - local mapData = WorldMapSize[continent]; - for index, mapName in pairs(zones) do - if not ( mapData.zoneData[mapName] ) then - --WE HAVE A PROBLEM!!! - ChatFrame1:AddMessage("Astrolabe is missing data for "..select(index, GetMapZones(continent)).."."); - mapData.zoneData[mapName] = zeroData; +function printError( ... ) + if ( ASTROLABE_VERBOSE) then + print(...) + end +end + +for mapID, harvestedData in pairs(Astrolabe.HarvestedMapData) do + local mapData = WorldMapSize[mapID]; + if ( mapData ) then + if ( harvestedData.numFloors > 0 ) then + for f, harvData in pairs(harvestedData) do + if ( type(f) == "number" and f > 0 ) then + if not ( mapData[f] ) then + mapData[f] = {}; + end + local floorData = mapData[f] + if not ( floorData.width ) then + floorData.width = harvData.BRx - harvData.TLx + end + if not ( floorData.height ) then + floorData.height = harvData.BRy - harvData.TLy + end + if not ( floorData.xOffset ) then + floorData.xOffset = harvData.TLx + end + if not ( floorData.yOffset ) then + floorData.yOffset = harvData.TLy + end + end + end + for f = 1, harvestedData.numFloors do + if not ( mapData[f] ) then + printError(("Astrolabe is missing data for %s [%d], floor %d."):format(harvestedData.mapName, mapID, f)); + end + end + -- TODO: handle floored world maps + + else + local harvData = harvestedData[0] + if not ( mapData.width ) then + mapData.width = harvData.BRx - harvData.TLx + end + if not ( mapData.height ) then + mapData.height = harvData.BRy - harvData.TLy + end + if not ( mapData.xOffset ) then + mapData.xOffset = harvData.TLx + end + if not ( mapData.yOffset ) then + mapData.yOffset = harvData.TLy + end + end - mapData[index] = mapData.zoneData[mapName]; - mapData.zoneData[mapName] = nil; + + else + mapData = {}; + + if ( harvestedData.numFloors > 0 ) then + for f, harvData in pairs(harvestedData) do + if ( type(f) == "number" and f > 0 ) then + mapData[f] = {}; + local floorData = mapData[f] + floorData.width = harvData.BRx - harvData.TLx + floorData.height = harvData.BRy - harvData.TLy + floorData.xOffset = harvData.TLx + floorData.yOffset = harvData.TLy + end + end + for f = 1, harvestedData.numFloors do + if not ( mapData[f] ) then + printError(("Astrolabe is missing data for %s [%d], floor %d."):format(harvestedData.mapName, mapID, f)); + end + end + + else + local harvData = harvestedData[0] + if ( harvData ) then + mapData.width = harvData.BRx - harvData.TLx + mapData.height = harvData.BRy - harvData.TLy + mapData.xOffset = harvData.TLx + mapData.yOffset = harvData.TLy + + else + printError(("Astrolabe is missing data for %s [%d]."):format(harvestedData.mapName, mapID)); + + end + + end + + -- if we don't have any data, we're gonna use zeroData, but we also need to + -- setup the system and systemParent IDs so things don't get confused + if not ( next(mapData, nil) ) then + mapData = { xOffset = 0, height = 0, yOffset = 0, width = 0 }; + setmetatable(mapData, zeroData); + + -- if this is a regluar outside zone map and + if ( harvestedData.cont > 0 and harvestedData.zone == 0 ) then + printError(("Astrolabe is missing data for world map %s [%d] (%d, %d)."):format(harvestedData.mapName, mapID, harvestedData.cont, harvestedData.zone)); + end + end + + -- store the data in the WorldMapSize DB + WorldMapSize[mapID] = mapData; + + end + + -- setup system and systemParent IDs + if ( mapData and mapData ~= zeroData ) then + if not ( mapData.system ) then + mapData.system = mapID; + + if ( harvestedData.cont > 0 and harvestedData.zone > 0 ) then + mapData.system = Astrolabe:GetMapID(harvestedData.cont, nil); + end + end + if not ( mapData.systemParent ) then + mapData.systemParent = mapID; + + local systemData = WorldMapSize[mapData.system]; + if ( systemData and systemData.systemParent ) then + mapData.systemParent = systemData.systemParent; + end + end + setmetatable(mapData, zeroData); end end +setmetatable(WorldMapSize, zeroData); -- register this library with AstrolabeMapMonitor, this will cause a full update if PLAYER_LOGIN has already fired local AstrolabeMapMonitor = DongleStub("AstrolabeMapMonitor"); -- 1.7.9.5 From 3d85c52330671d2cdd46aefc78ee66434602324c Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Wed, 24 Nov 2010 14:29:42 +0000 Subject: [PATCH 09/10] Fixing some whitespace issues --- TomTom.lua | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/TomTom.lua b/TomTom.lua index 8047a8f..5ad8f02 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -25,7 +25,7 @@ if TomTom.version == "wowi:revision" then TomTom.version = "SVN" end if TomTom.version == "@project-version@" then TomTom.version = "SCM" end --[[-------------------------------------------------------------------------- --- Astrolabe compatability library +-- Astrolabe compatability library ----------------------------------------------------------------------------]] local compat = {} @@ -230,9 +230,9 @@ function TomTom:ADDON_LOADED(event, addon) coordFeedFrame:SetScript("OnUpdate", function(self, elapsed) counter = counter + elapsed if counter < throttle then - return + return end - + counter = 0 local c,z,x,y = compat:GetCurrentPlayerPosition() local opt = TomTom.db.profile @@ -269,7 +269,7 @@ function TomTom:ReloadWaypoints() waypoints = {} self.waypoints = waypoints self.waypointprofile = self.waydb.profile - + for zone,data in pairs(self.waypointprofile) do local c,z = self:GetCZ(zone) local same = (c == pc) and (z == pz) @@ -494,7 +494,7 @@ local dropdown_info = { local uid = TomTom.dropdown.uid local data = waypoints[uid] TomTom:RemoveWaypoint(uid) - --TomTom:PrintF("Removing waypoint %0.2f, %0.2f in %s", data.x, data.y, data.zone) + --TomTom:PrintF("Removing waypoint %0.2f, %0.2f in %s", data.x, data.y, data.zone) end, }, { -- Remove all waypoints from this zone @@ -652,7 +652,7 @@ end function TomTom:CHAT_MSG_ADDON(event, prefix, data, channel, sender) if prefix ~= "TOMTOM2" then return end - if sender == UnitName("player") then return end + if sender == UnitName("player") then return end local zone,coord,title = string.split(":", data) if not title:match("%S") then @@ -667,7 +667,7 @@ function TomTom:CHAT_MSG_ADDON(event, prefix, data, channel, sender) end --[[------------------------------------------------------------------- --- Define callback functions +-- Define callback functions -------------------------------------------------------------------]]-- local function _minimap_onclick(event, uid, self, button) if TomTom.db.profile.minimap.menu then @@ -697,7 +697,7 @@ local function _both_tooltip_show(event, tooltip, uid, dist) end local function _minimap_tooltip_show(event, tooltip, uid, dist) - if not TomTom.db.profile.minimap.tooltip then + if not TomTom.db.profile.minimap.tooltip then tooltip:Hide() return end @@ -838,9 +838,9 @@ function TomTom:AddZWaypoint(c, z, x, y, desc, persistent, minimap, world, custo if crazy == nil then crazy = self.profile.arrow.autoqueue end local coord = self:GetCoord(x / 100, y / 100) - local zone = self:GetMapFile(c, z) - - if not zone then + local zone = self:GetMapFile(c, z) + + if not zone then return end @@ -891,9 +891,9 @@ end function TomTom:WaypointExists(c, z, x, y, desc) local coord = self:GetCoord(x / 100, y / 100) - local zone = self:GetMapFile(c, z) + local zone = self:GetMapFile(c, z) - if not zone then + if not zone then return end @@ -1006,7 +1006,7 @@ do end end -do +do function Block_OnUpdate(self, elapsed) local c,z,x,y = compat:GetCurrentPlayerPosition() local opt = TomTom.db.profile @@ -1029,12 +1029,12 @@ do self:StopMovingOrSizing() end - function Block_OnClick(self, button, down) - local c,z,x,y = compat:GetCurrentPlayerPosition() - local zone = TomTom:GetMapFile(c, z) - local desc = format("%s: %.2f, %.2f", zone, x*100, y*100) - TomTom:AddZWaypoint(c, z, x*100, y*100, desc) - end + function Block_OnClick(self, button, down) + local c,z,x,y = compat:GetCurrentPlayerPosition() + local zone = TomTom:GetMapFile(c, z) + local desc = format("%s: %.2f, %.2f", zone, x*100, y*100) + TomTom:AddZWaypoint(c, z, x*100, y*100, desc) + end end local function usage() -- 1.7.9.5 From 8c962b98f8b94671c4409907b40cf406a50d8201 Mon Sep 17 00:00:00 2001 From: James Whitehead II Date: Wed, 24 Nov 2010 14:48:39 +0000 Subject: [PATCH 10/10] Fix issues with mapfile <-> c,z <-> name lookups --- TomTom.lua | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/TomTom.lua b/TomTom.lua index 5ad8f02..af44ed9 100755 --- a/TomTom.lua +++ b/TomTom.lua @@ -49,7 +49,7 @@ do -- and converts it to a c,z,x,y tuple function compat:GetCurrentPlayerPosition() local map, floor, x, y = Astrolabe:GetCurrentPlayerPosition() - local c, z = mapcz[map] + local c, z = unpack(mapcz[map]) return c, z, x, y end @@ -914,6 +914,9 @@ function TomTom:SetCustomWaypoint(c,z,x,y,callback,minimap,world, silent) end do + -- Code to convert between a MapFile ane a C,Z tuple + -- This no longer can use Astrolabe to build these tables + local Astrolabe = DongleStub("Astrolabe-1.0") -- Code taken from HandyNotes, thanks Xinhuan --------------------------------------------------------- @@ -925,28 +928,39 @@ do [1] = "Kalimdor", [2] = "Azeroth", [3] = "Expansion01", + [4] = "Northrend", + [5] = "TheMaelstromContinent", } + local mapCZtoFile = {} + _G.mc = mapCZtoFile local reverseMapFileC = {} local reverseMapFileZ = {} - for C = 1, #Astrolabe.ContinentList do - for Z = 1, #Astrolabe.ContinentList[C] do - local mapFile = Astrolabe.ContinentList[C][Z] - reverseMapFileC[mapFile] = C - reverseMapFileZ[mapFile] = Z + + for cid, zlist in pairs{GetMapContinents()} do + for zid, zname in pairs{GetMapZones(cid)} do + SetMapZoom(cid, zid) + local mapFile = GetMapInfo() + reverseMapFileC[mapFile] = cid + reverseMapFileZ[mapFile] = zid + mapCZtoFile[cid] = mapCZtoFile[cid] or {} + mapCZtoFile[cid][zid] = mapCZtoFile[cid][zid] or {} + mapCZtoFile[cid][zid] = mapFile end end - for C = -1, 3 do - local mapFile = continentMapFile[C] - reverseMapFileC[mapFile] = C + + for cid, mapFile in pairs(continentMapFile) do + reverseMapFileC[mapFile] = cid reverseMapFileZ[mapFile] = 0 + mapCZtoFile[cid] = mapCZtoFile[cid] or {} + mapCZtoFile[cid][0] = mapCZtoFile[cid][0] or {} + mapCZtoFile[cid][0] = mapFile end function TomTom:GetMapFile(C, Z) if not C or not Z then return end - if Z == 0 then - return continentMapFile[C] - elseif C > 0 then - return Astrolabe.ContinentList[C][Z] + local c = mapCZtoFile[C] + if c then + return c[Z] end end function TomTom:GetCZ(mapFile) -- 1.7.9.5