Guest User

minimap.lua

a guest
Apr 22nd, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.49 KB | None | 0 0
  1. minimapWidget = nil
  2. minimapButton = nil
  3. minimapWindow = nil
  4. otmm = true
  5. preloaded = false
  6. fullmapView = false
  7. oldZoom = nil
  8. oldPos = nil
  9.  
  10. function init()
  11.   minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle)
  12.   minimapButton:setOn(true)
  13.  
  14.   minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())
  15.   minimapWindow:setContentMinimumHeight(64)
  16.  
  17.   minimapWidget = minimapWindow:recursiveGetChildById('minimap')
  18.  
  19.   local gameRootPanel = modules.game_interface.getRootPanel()
  20.   g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)
  21.   g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)
  22.   g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)
  23.   g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)
  24.   g_keyboard.bindKeyDown('Ctrl+M', toggle)
  25.   g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)
  26.  
  27.   minimapWindow:setup()
  28.  
  29.   connect(g_game, {
  30.     onGameStart = online,
  31.     onGameEnd = offline,
  32.   })
  33.  
  34.   connect(LocalPlayer, {
  35.     onPositionChange = updateCameraPosition
  36.   })
  37.  
  38.   if g_game.isOnline() then
  39.     online()
  40.   end
  41. end
  42.  
  43. function terminate()
  44.   if g_game.isOnline() then
  45.     saveMap()
  46.   end
  47.  
  48.   disconnect(g_game, {
  49.     onGameStart = online,
  50.     onGameEnd = offline,
  51.   })
  52.  
  53.   disconnect(LocalPlayer, {
  54.     onPositionChange = updateCameraPosition
  55.   })
  56.  
  57.   local gameRootPanel = modules.game_interface.getRootPanel()
  58.   g_keyboard.unbindKeyPress('Alt+Left', gameRootPanel)
  59.   g_keyboard.unbindKeyPress('Alt+Right', gameRootPanel)
  60.   g_keyboard.unbindKeyPress('Alt+Up', gameRootPanel)
  61.   g_keyboard.unbindKeyPress('Alt+Down', gameRootPanel)
  62.   g_keyboard.unbindKeyDown('Ctrl+M')
  63.   g_keyboard.unbindKeyDown('Ctrl+Shift+M')
  64.  
  65.   minimapWindow:destroy()
  66.   minimapButton:destroy()
  67. end
  68.  
  69. function toggle()
  70.   if minimapButton:isOn() then
  71.     minimapWindow:close()
  72.     minimapButton:setOn(false)
  73.   else
  74.     minimapWindow:open()
  75.     minimapButton:setOn(true)
  76.   end
  77. end
  78.  
  79. function onMiniWindowClose()
  80.   minimapButton:setOn(false)
  81. end
  82.  
  83. function preload()
  84.   loadMap(false)
  85.   preloaded = true
  86. end
  87.  
  88. function online()
  89.   loadMap(not preloaded)
  90.   updateCameraPosition()
  91. end
  92.  
  93. function offline()
  94.   saveMap()
  95. end
  96.  
  97. function loadMap(clean)
  98.   local protocolVersion = g_game.getProtocolVersion()
  99.  
  100.   if clean then
  101.     g_minimap.clean()
  102.   end
  103.  
  104.   if otmm then
  105.     local minimapFile = '/minimap.otmm'
  106.     if g_resources.fileExists(minimapFile) then
  107.       g_minimap.loadOtmm(minimapFile)
  108.     end
  109.   else
  110.     local minimapFile = '/minimap_' .. protocolVersion .. '.otcm'
  111.     if g_resources.fileExists(minimapFile) then
  112.       g_map.loadOtcm(minimapFile)
  113.     end
  114.   end
  115.   minimapWidget:load()
  116. end
  117.  
  118. function saveMap()
  119.   local protocolVersion = g_game.getProtocolVersion()
  120.   if otmm then
  121.     local minimapFile = '/minimap.otmm'
  122.     g_minimap.saveOtmm(minimapFile)
  123.   else
  124.     local minimapFile = '/minimap_' .. protocolVersion .. '.otcm'
  125.     g_map.saveOtcm(minimapFile)
  126.   end
  127.   minimapWidget:save()
  128. end
  129.  
  130. function updateCameraPosition()
  131.   local player = g_game.getLocalPlayer()
  132.   if not player then return end
  133.   local pos = player:getPosition()
  134.   if not pos then return end
  135.   if not minimapWidget:isDragging() then
  136.     if not fullmapView then
  137.       minimapWidget:setCameraPosition(player:getPosition())
  138.     end
  139.     minimapWidget:setCrossPosition(player:getPosition())
  140.   end
  141.   minimapWindow:recursiveGetChildById('positionX'):setText('X: '..pos.x)
  142.   minimapWindow:recursiveGetChildById('positionY'):setText('Y: '..pos.y)
  143.   minimapWindow:recursiveGetChildById('positionZ'):setText('Z: '..pos.z)
  144. end
  145.  
  146. function toggleFullMap()
  147.   if not fullmapView then
  148.     fullmapView = true
  149.     minimapWindow:hide()
  150.     minimapWidget:setParent(modules.game_interface.getRootPanel())
  151.     minimapWidget:fill('parent')
  152.     minimapWidget:setAlternativeWidgetsVisible(true)
  153.   else
  154.     fullmapView = false
  155.     minimapWidget:setParent(minimapWindow:getChildById('contentsPanel'))
  156.     minimapWidget:fill('parent')
  157.     minimapWindow:show()
  158.     minimapWidget:setAlternativeWidgetsVisible(false)
  159.   end
  160.  
  161.   local zoom = oldZoom or 0
  162.   local pos = oldPos or minimapWidget:getCameraPosition()
  163.   oldZoom = minimapWidget:getZoom()
  164.   oldPos = minimapWidget:getCameraPosition()
  165.   minimapWidget:setZoom(zoom)
  166.   minimapWidget:setCameraPosition(pos)
  167. end
Advertisement
Add Comment
Please, Sign In to add comment