local love = assert( love, "This tool requires LOVE: love2d.org" ) --assert( require('mobdebug') ).start() --remote debugger local map = require 'map.map' local button = require 'ui.button' local mainmenu = require 'ui.menu.mainmenu' local Camera = require 'ui.camera' function love.load() love.filesystem.setIdentity( "dcearth", false ) love.keyboard.setKeyRepeat( true ) love.graphics.setNewFont( 14 ) end function love.directorydropped( path ) if map.path then assert( love.filesystem.unmount( map.path ) ) map.loaded = false end love.filesystem.mount( path, "" ) return map.load( path ) end function love.update( dt ) local tx, ty = 0, 0 local moveCamera = false if love.keyboard.isScancodeDown( "w" ) then moveCamera = true; ty = ty + dt * 150 / Camera.zoom end if love.keyboard.isScancodeDown( "a" ) then moveCamera = true; tx = tx - dt * 150 / Camera.zoom end if love.keyboard.isScancodeDown( "s" ) then moveCamera = true; ty = ty - dt * 150 / Camera.zoom end if love.keyboard.isScancodeDown( "d" ) then moveCamera = true; tx = tx + dt * 150 / Camera.zoom end if love.keyboard.isScancodeDown( "q" ) then Camera.Zoom( dt * 400 ) end if love.keyboard.isScancodeDown( "e" ) then Camera.Zoom( -dt* 400 ) end if moveCamera then Camera.Translate( tx, ty ) end end function love.draw() if not map.loaded then local w, h = love.graphics.getDimensions() return love.graphics.printf( "Drag and drop folder to begin.", w / 2 - 200, h / 2 - 128, 400, "center") end love.graphics.push( "all" ) map.draw() love.graphics.pop() mainmenu.draw() end function love.resize(w, h) Camera.Resize( w, h ) end function love.wheelmoved(x, y) Camera.Zoom( (y > 0) and 3 or -3 ) end function love.mousepressed( x, y, mouseButton, istouch, presses ) local wx, wy = Camera.GetWorldCoordinate( x, y ) return button.mousepressed( x, y ) end function love.mousemoved( x, y, dx, dy, istouch ) if not map.loaded then return end --mouse over menu button.selectIn( x, y ) --mouse on map if map.selectionLocked then return end if map.editLayer and map.editLayer.selectNearest then map.selected = map.editLayer:selectNearest( Camera.GetWorldCoordinate( x, y ) ) end end function love.keypressed(key, code, isRepeat) if code == "up" then return button.selectPrev() end if code == "down" then return button.selectNext() end if code == "right" then return button.selectNextInGroup() end if code == "left" then return button.selectPrevInGroup() end if code == "return" then return button.selected:callback() end if key == "c" then map.selectionLocked = not( map.selectionLocked ) end end function love.textinput() end