Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- minimapWidget = nil
- minimapButton = nil
- minimapWindow = nil
- otmm = true
- preloaded = false
- fullmapView = false
- oldZoom = nil
- oldPos = nil
- function init()
- minimapButton = modules.client_topmenu.addRightGameToggleButton('minimapButton', tr('Minimap') .. ' (Ctrl+M)', '/images/topbuttons/minimap', toggle)
- minimapButton:setOn(true)
- minimapWindow = g_ui.loadUI('minimap', modules.game_interface.getRightPanel())
- minimapWindow:setContentMinimumHeight(64)
- minimapWidget = minimapWindow:recursiveGetChildById('minimap')
- local gameRootPanel = modules.game_interface.getRootPanel()
- g_keyboard.bindKeyPress('Alt+Left', function() minimapWidget:move(1,0) end, gameRootPanel)
- g_keyboard.bindKeyPress('Alt+Right', function() minimapWidget:move(-1,0) end, gameRootPanel)
- g_keyboard.bindKeyPress('Alt+Up', function() minimapWidget:move(0,1) end, gameRootPanel)
- g_keyboard.bindKeyPress('Alt+Down', function() minimapWidget:move(0,-1) end, gameRootPanel)
- g_keyboard.bindKeyDown('Ctrl+M', toggle)
- g_keyboard.bindKeyDown('Ctrl+Shift+M', toggleFullMap)
- minimapWindow:setup()
- connect(g_game, {
- onGameStart = online,
- onGameEnd = offline,
- })
- connect(LocalPlayer, {
- onPositionChange = updateCameraPosition
- })
- if g_game.isOnline() then
- online()
- end
- end
- function terminate()
- if g_game.isOnline() then
- saveMap()
- end
- disconnect(g_game, {
- onGameStart = online,
- onGameEnd = offline,
- })
- disconnect(LocalPlayer, {
- onPositionChange = updateCameraPosition
- })
- local gameRootPanel = modules.game_interface.getRootPanel()
- g_keyboard.unbindKeyPress('Alt+Left', gameRootPanel)
- g_keyboard.unbindKeyPress('Alt+Right', gameRootPanel)
- g_keyboard.unbindKeyPress('Alt+Up', gameRootPanel)
- g_keyboard.unbindKeyPress('Alt+Down', gameRootPanel)
- g_keyboard.unbindKeyDown('Ctrl+M')
- g_keyboard.unbindKeyDown('Ctrl+Shift+M')
- minimapWindow:destroy()
- minimapButton:destroy()
- end
- function toggle()
- if minimapButton:isOn() then
- minimapWindow:close()
- minimapButton:setOn(false)
- else
- minimapWindow:open()
- minimapButton:setOn(true)
- end
- end
- function onMiniWindowClose()
- minimapButton:setOn(false)
- end
- function preload()
- loadMap(false)
- preloaded = true
- end
- function online()
- loadMap(not preloaded)
- updateCameraPosition()
- end
- function offline()
- saveMap()
- end
- function loadMap(clean)
- local protocolVersion = g_game.getProtocolVersion()
- if clean then
- g_minimap.clean()
- end
- if otmm then
- local minimapFile = '/minimap.otmm'
- if g_resources.fileExists(minimapFile) then
- g_minimap.loadOtmm(minimapFile)
- end
- else
- local minimapFile = '/minimap_' .. protocolVersion .. '.otcm'
- if g_resources.fileExists(minimapFile) then
- g_map.loadOtcm(minimapFile)
- end
- end
- minimapWidget:load()
- end
- function saveMap()
- local protocolVersion = g_game.getProtocolVersion()
- if otmm then
- local minimapFile = '/minimap.otmm'
- g_minimap.saveOtmm(minimapFile)
- else
- local minimapFile = '/minimap_' .. protocolVersion .. '.otcm'
- g_map.saveOtcm(minimapFile)
- end
- minimapWidget:save()
- end
- function updateCameraPosition()
- local player = g_game.getLocalPlayer()
- if not player then return end
- local pos = player:getPosition()
- if not pos then return end
- if not minimapWidget:isDragging() then
- if not fullmapView then
- minimapWidget:setCameraPosition(player:getPosition())
- end
- minimapWidget:setCrossPosition(player:getPosition())
- end
- minimapWindow:recursiveGetChildById('positionX'):setText('X: '..pos.x)
- minimapWindow:recursiveGetChildById('positionY'):setText('Y: '..pos.y)
- minimapWindow:recursiveGetChildById('positionZ'):setText('Z: '..pos.z)
- end
- function toggleFullMap()
- if not fullmapView then
- fullmapView = true
- minimapWindow:hide()
- minimapWidget:setParent(modules.game_interface.getRootPanel())
- minimapWidget:fill('parent')
- minimapWidget:setAlternativeWidgetsVisible(true)
- else
- fullmapView = false
- minimapWidget:setParent(minimapWindow:getChildById('contentsPanel'))
- minimapWidget:fill('parent')
- minimapWindow:show()
- minimapWidget:setAlternativeWidgetsVisible(false)
- end
- local zoom = oldZoom or 0
- local pos = oldPos or minimapWidget:getCameraPosition()
- oldZoom = minimapWidget:getZoom()
- oldPos = minimapWidget:getCameraPosition()
- minimapWidget:setZoom(zoom)
- minimapWidget:setCameraPosition(pos)
- end
Advertisement
Add Comment
Please, Sign In to add comment