Hey guys,
I've already finished my game and it was running normal(without any problems), but it's all in main.lua file and i decided to separate in other files like enemy.lua, player.lua,...
I was doing this when I stumbled upon a problem I can not describe, but I'll post the code of the game here so you know better what it is.
I really hope you guys can help me, because once it works out and files get separated and the game running without any problem, finally I'll be able to add more things and finish the game
I apologize for the source code be in portuguese
Problem to separate lua files
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
- player_258
- Prole
- Posts: 9
- Joined: Thu Jun 20, 2013 3:37 pm
Re: Problem to separate lua files
hi !
browsing through your code the first problem i found was this:
in the first line you create an empty table called "nave"
in the nave table you create the update and draw callbacks
nave.update
nave.draw
when love.load is ran, it calls nave.load which then calls novaNave(x, y)
novaNave(x, y) overwrites your current "nave" table with an empty one, then
you set values for position, image, size, etc
because of this, nave.update, nave.draw dont exist anymore because
you overwrote them.
what i think you meant to do was this
notice that i changed "nave" to "naveObject" because otherwise i would be overwriting
nave (the one with the update and draw callbacks) again.
otherwise you could just use this dirty fix
this would add position, image, etc variables to your current nave table
that would result in a huge nave table with update and draw callbacks, position, image, size, etc variables
not that is a bad thing performance wise, but still
that should fix the first problem that appears when you click the start button.
browsing through your code the first problem i found was this:
Code: Select all
nave = {}
-- Configurações da Nave --
function novaNave(x, y)
nave = {}
nave.x = x or 0
nave.y = y or 0
--more code
end
function nave.load()
-- Cria a nave --
nave = novaNave(largura / 2 - 32, altura - 96)
end
function nave.update(dt)
--code
end
function nave.draw()
--code
end
in the nave table you create the update and draw callbacks
nave.update
nave.draw
when love.load is ran, it calls nave.load which then calls novaNave(x, y)
novaNave(x, y) overwrites your current "nave" table with an empty one, then
you set values for position, image, size, etc
because of this, nave.update, nave.draw dont exist anymore because
you overwrote them.
what i think you meant to do was this
Code: Select all
nave = {}
-- Configurações da Nave --
function novaNave(x, y)
local nave = {} --create a new local table, not overwriting the global one
nave.x = x or 0
nave.y = y or 0
--stuff
return nave --return it to whoever called it
end
function nave.load()
-- Cria a nave --
naveObject = novaNave(largura / 2 - 32, altura - 96) --a new naveObject
end
nave (the one with the update and draw callbacks) again.
otherwise you could just use this dirty fix
Code: Select all
nave = {}
-- Configurações da Nave --
function novaNave(x, y)
nave.x = x or 0
nave.y = y or 0
--more code
end
function nave.load()
-- Cria a nave --
novaNave(largura / 2 - 32, altura - 96)
end
that would result in a huge nave table with update and draw callbacks, position, image, size, etc variables
not that is a bad thing performance wise, but still
that should fix the first problem that appears when you click the start button.
sorry if i make any english mistake, not my native language
Who is online
Users browsing this forum: Ahrefs [Bot], Bing [Bot] and 2 guests