Require inside require isn't working!

Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
Before you make a thread asking for help, read this.
Post Reply
RawArkanis
Prole
Posts: 2
Joined: Tue Aug 17, 2010 7:38 pm

Require inside require isn't working!

Post by RawArkanis »

Hai!

This is my first post here.
I'm brazillian and my english is a bit poor. Hope you can understand me. =)

I have a file (utils.lua) with a code for padded imagens that i have found here in the forum.
In another file I add utisl.lua with a require(). This second file (essentials.lua) is for put all common code of the game.

Code: Select all

require("lib/oo/middleclass")
require("lib/graphics/utils")
But adding essentials.lua in other files, like in my start.lua, the function newPaddedImage that is in utils.h can't be found. Generating this errors:
Error

src/states/start.lua:18: attempt to call global 'newPaddedImage' (a nil value)

Traceback

src/state/start.lua:18: in function 'initialize'
.\lib/oo/middleclass.lua:22: in function 'new'
main.lua:15: in function 'load'
[C]: in function 'xpcall'
If I put 'require("lib/graphics/utils")' in start.lua, its work.

How can i fix it?
User avatar
kikito
Inner party member
Posts: 3153
Joined: Sat Oct 03, 2009 5:22 pm
Location: Madrid, Spain
Contact:

Re: Require inside require isn't working!

Post by kikito »

It sounds like you are using functions before requiring them.

I'm sorry if I'm not more specific; I can't without seeing your folder structure and requires.
When I write def I mean function.
RawArkanis
Prole
Posts: 2
Joined: Tue Aug 17, 2010 7:38 pm

Re: Require inside require isn't working!

Post by RawArkanis »

kikito wrote:It sounds like you are using functions before requiring them.

I'm sorry if I'm not more specific; I can't without seeing your folder structure and requires.
Folder Structure:

Code: Select all

lib
--graphics
----utils.lua <-- where newPaddedImage code is in
--oo
----middleclass.lua
--states
----sm.lua
----state.lua
--essentials.lua <-- where utils.lua is required, and dont work
--game.lua
res <-- resource folder (images, etc)
src
--states
----start.lua <-- where i require essentials and newPaddedImage dont work. if i put require("lib/graphics/utils") here, works
main.lua
config.lua
utils.lua code

Code: Select all

function newPaddedImage(filename)
    local source = love.image.newImageData(filename)
    local w, h = source:getWidth(), source:getHeight()
   
    -- Find closest power-of-two.
    local wp = math.pow(2, math.ceil(math.log(w)/math.log(2)))
    local hp = math.pow(2, math.ceil(math.log(h)/math.log(2)))
   
    -- Only pad if needed:
    if wp ~= w or hp ~= h then
        local padded = love.image.newImageData(wp, hp)
        padded:paste(source, 0, 0)
        return love.graphics.newImage(padded)
    end
   
    return love.graphics.newImage(source)
end
essentials.lua code

Code: Select all

require("lib/oo/middleclass")
require("lib/graphics/utils")
start.lua code

Code: Select all

require("lib/essentials")
require("lib/states/state")

StartState = class("StartState", State)

function StartState:initialize ()
	super.initialize(self)
	Logo = newPaddedImage("res/img/logo.png")
	alpha = 255
	stick = 0
	tick = 0
end

...
To work, i put require("lib/graphics/utils") in this last file.
User avatar
kikito
Inner party member
Posts: 3153
Joined: Sat Oct 03, 2009 5:22 pm
Location: Madrid, Spain
Contact:

Re: Require inside require isn't working!

Post by kikito »

I don't see any obvious issue.

When I reach that point, I just try putting lots of prints. For example, try adding this to start.lua:

Code: Select all

print('requiring essentials')
require("lib/essentials")
print('requiring state')
require("lib/states/state")
And then on essentials.lua:

Code: Select all

 -- at the top of the file
print('essentials.lua is being read')

print('requiring middleclass')
require("lib/oo/middleclass")

print('requiring utils')
require("lib/graphics/utils")
And so on with graphics/utils, etc. Activate the console and see if the calls are being made properly.
When I write def I mean function.
Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 1 guest