require "import"
-- Debugging / Logging:
debug = calc.debug
calc.isDebug = true
function love.load()
-- Declaration:
love.window.setTitle(info.name.." - v"..info.version)
width, height = love.graphics.getDimensions()
cam = Camera()
zoomlevel = 0.5
-- Loading:
ships = {} --Potentially add other starships in the future?
planet = {}
loadPlanets()
local spawnPlanet = planet[1]
player = Player(spawnPlanet.x, spawnPlanet.y-spawnPlanet.r-1)
gui = Gui(1)
end
-- Planets:
function loadPlanets()
debug("Planets in planet table: "..#planetdata)
for i=1, #planetdata do
local p = planetdata[i]
debug(p.name.." is loading")
table.insert(planet, i,
Planet(
-- Planet Data Assignment:
p.x, p.y,
p.r, p.m,
p.name,
p.colour,
p.parent
)
)
debug(p.name.." is loaded")
end
debug("Planets loaded: "..#planet)
end
function updatePlanets()
planet[1]:update()
end
function drawPlanets()
for i=1, #planet do
planet[i]:draw()
--debug("Drawing planet " .. i)
end
end
-- Camera
function cameraControls()
local zooming = 0.01
function love.wheelmoved(x, y)
if y > 0 then
-- Zoom in:
zoomlevel = zoomlevel + zooming
elseif y < 0 then
-- Zoom out:
zoomlevel = zoomlevel - zooming
end
end
-- Reset Zoom:
if love.mouse.isDown(3) then
zoomlevel = 1
end
-- Zoom Limit:
local max = 4
local min = 0.001
if zoomlevel < min then
zoomlevel = min
end
if zoomlevel > max then
zoomlevel = max
end
--debug(zoomlevel)
cam:zoomTo(zoomlevel)
end
-- MAIN
function love.update(dt)
-- Game Objects:
updatePlanets()
player:update(dt)
-- Gui:
gui:update(dt)
-- Camera:
cam:lookAt(player.x, player.y)
cameraControls()
--debug(player.x .. " " .. player.y)
end
function love.draw()
cam:attach()
-- Game Objects:
drawPlanets()
player:draw()
-- Camera Zoom Player Location Indicator: OVERWORK SOON PLS KAY; IT UGLY
if zoomlevel < 0.3 then
love.graphics.setColor(1, 1, 1, 0.2)
love.graphics.circle("fill", player.x, player.y, (1/zoomlevel)*10)
end
cam:detach()
-- Gui:
gui:draw()
end