local love = assert( love, "This tool requires LOVE: love2d.org" ) local map = require 'map' local SAVEDIRECTORY = "out/" local Camera = require 'camera' local wasKeyPressed function love.load() local lfs = assert( love.filesystem ) lfs.setIdentity( "dcearth", false ) assert( lfs.createDirectory( SAVEDIRECTORY.."data/earth" )) assert( lfs.createDirectory( SAVEDIRECTORY.."data/graphics" )) map.load() love.graphics.setNewFont( 12, "mono" ) end function love.update( dt ) local tx, ty = 0, 0 local moveCamera = false if love.keyboard.isScancodeDown( "w" ) then moveCamera = true; ty = ty + 1 end if love.keyboard.isScancodeDown( "a" ) then moveCamera = true; tx = tx - 1 end if love.keyboard.isScancodeDown( "s" ) then moveCamera = true; ty = ty - 1 end if love.keyboard.isScancodeDown( "d" ) then moveCamera = true; tx = tx + 1 end if love.keyboard.isScancodeDown( "q" ) then Camera.Zoom( true ) end if love.keyboard.isScancodeDown( "e" ) then Camera.Zoom( false ) end if moveCamera then Camera.Translate( tx, ty ) end end function love.draw() love.graphics.push( "all" ) map.draw() love.graphics.pop() --Status bar. local x, y = love.mouse.getPosition() local wx, wy = Camera.GetWorldCoordinate( x, y ) local bx, by = Camera.GetBitmapCoordinate( x, y ) local h = love.graphics.getHeight() - 30 love.graphics.setColor( 0.2, 0.1, 0.1, 0.5 ) love.graphics.rectangle( "fill", 0, h, love.graphics.getWidth() / 2, 30 ) love.graphics.setColor( 1, 1, 1, 1 ) love.graphics.rectangle( "line", 0, h, love.graphics.getWidth() / 2, 30 ) love.graphics.print(("SCREEN\t%d\t%d\nWORLD \t%5.2f\t%5.2f"):format(x, y, wx, wy), 0, h) love.graphics.print(("BITMAP\t%5.2f\t%5.2f"):format(bx, by), 200, h ) --Edit box. love.graphics.rectangle( "line", love.graphics.getWidth() / 2, h, love.graphics.getWidth() / 2, 30 ) if map.cities.selected then local c = map.cities.selected love.graphics.setColor( 0.2, 0.1, 0.1, 0.5 ) love.graphics.rectangle( "fill", 0, 0, 150 ,100 ) love.graphics.setColor( 1, 1, 1, 1 ) love.graphics.rectangle( "line", 0, 0, 150 ,100 ) love.graphics.setColor( 1.2, 1.1, 1.1, 1.5 ) love.graphics.print( ("NAME: %s\nX: %3.2f\nY: %3.2f\nPOP: %d\nCAPITAL: %s\nCOUNTRY: %s"):format(c.name, c.x, c.y, c.pop, tostring(c.capital), c.country), 0, 0 ) elseif map.travelnodes.selected then local c = map.travelnodes.selected love.graphics.setColor( 0.2, 0.1, 0.1, 0.5 ) love.graphics.rectangle( "fill", 0, 0, 150 ,100 ) love.graphics.setColor( 1, 1, 1, 1 ) love.graphics.rectangle( "line", 0, 0, 150 ,100 ) love.graphics.setColor( 1.2, 1.1, 1.1, 1.5 ) love.graphics.print( ("Node: %d\nX: %3.2f\nY: %3.2f\n"):format(c.number, c.x, c.y) ) elseif map.ainodes.selectedNode then local c = map.ainodes.selected love.graphics.setColor( 0.2, 0.1, 0.1, 0.5 ) love.graphics.rectangle( "fill", 0, 0, 150 ,100 ) love.graphics.setColor( 1, 1, 1, 1 ) love.graphics.rectangle( "line", 0, 0, 150 ,100 ) love.graphics.setColor( 1.2, 1.1, 1.1, 1.5 ) love.graphics.print( ("Node: %d\nX: %3.2f\nY: %3.2f\noffensive: %s"):format(c.number, c.x, c.y, c.attack) ) end end function love.resize(w, h) Camera.Resize( w, h ) end function love.wheelmoved(x, y) Camera.Zoom( (y > 0) and true or false ) end function love.mousepressed( x, y, button, istouch, presses ) local wx, wy = Camera.GetWorldCoordinate( x, y ) if button == 1 then map.cities.lockSelection() else map.cities.unlockSelection() end print( ("MOUSE\tx %f\ty %f\twx %f\twy %f"):format(x, y, wx, wy) ) end function love.mousemoved( x, y, dx, dy, istouch ) map.cities.selectNearestCity( Camera.GetWorldCoordinate( x, y ) ) end local function ToggleVisibility( layer ) if not layer then return end local ml if map[layer] then ml = map[layer] end if map.territory[layer] then ml = map.territory[layer] end assert( ml ) ml.visible = not( ml.visible ) print( layer, ml.visible ) end local layerVisibilityKeybinds = { ["1"] = "africa", ["2"] = "europe", ["3"] = "northamerica", ["4"] = "southamerica", ["5"] = "southasia", ["6"] = "russia", ["7"] = "sailable", ["8"] = "coastlines", ["9"] = "coastlinesLow", ["0"] = "international", ["-"] = "cities" } function love.keypressed(key) ToggleVisibility( layerVisibilityKeybinds[key] ) if key == "l" then -- To open a file or folder, "file://" must be prepended to the path. love.system.openURL("file://"..love.filesystem.getSaveDirectory()) end wasKeyPressed = true end