Questions about the LÖVE API, installing LÖVE and other support related questions go here.
Forum rules
ntpspe
Prole
Posts: 31
Joined: Sun Aug 07, 2011 6:19 pm

Hey guys,

So I've made a simple menu, just with a logo and background music, along with a nice 'debug' part in the top left telling me the FPS, dt and which keys/mousebuttons are being pressed.

1.So my first question, i'm using " fps = love.timer.getFPS( )" to get the fps, then printing it in the " love.graphics.print(fps .." FPS", 0, 30, 0)" way.

But... it says 0 all the time. Can somebody just explain why? Is it because i'm on the menu which is static (nothings moving).

2. Can I have someone post a reply that's a simple "How to make buttons" please? As in explain every part of it, i've seen another forum post about simple buttons, and I do understand, but i'd rather learn in terms similar to the wiki if possible Not "Download this and copy it in" or "just do this".

3. When the user clicks 'New Game' is there some way for it to move from main.lua to... game.lua or something? So that I can have the main.lua as the menu and for global variables, and then the main game will be in another .lua file?

-NT
Last edited by ntpspe on Mon Aug 08, 2011 2:00 pm, edited 1 time in total.

ntpspe
Prole
Posts: 31
Joined: Sun Aug 07, 2011 6:19 pm

PS: I think someone should do a button tutorial in the wiki

thelinx
The Strongest
Posts: 848
Joined: Fri Sep 26, 2008 3:56 pm
Location: Sweden

First, don't double post.
ntpspe wrote: 1.So my first question, i'm using " fps = love.timer.getFPS( )" to get the fps, then printing it in the " love.graphics.print(fps .." FPS", 0, 30, 0)" way.

But... it says 0 all the time. Can somebody just explain why? Is it because i'm on the menu which is static (nothings moving).
Sounds like you're setting the fps variable in love.load() or in the global scope. Try putting that bit of code in love.update().
2. Can I have someone post a reply that's a simple "How to make buttons" please? As in explain every part of it, i've seen another forum post about simple buttons, and I do understand, but i'd rather learn in terms similar to the wiki if possible Not "Download this and copy it in" or "just do this".
It isn't as easy as "just do this" unless you want to download something and use in your project.
To do buttons without any third-party libraries, you'd have to manually check mouse positions and see if they are within a certain area of the screen, and then draw a corresponding image.
3. When the user clicks 'New Game' is there some way for it to move from main.lua to... game.lua or something? So that I can have the main.lua as the menu and for global variables, and then the main game will be in another .lua file?
Make your love.update and love.draw callbacks do different stuff depending on what "state" the game is in. Something like this:

Code: Select all

function love.load()
end

function new_game()
-- do stuff
state = "game"
end

function love.draw()
elseif state == "game" then
-- draw game
end
end

-- et. c.


ntpspe
Prole
Posts: 31
Joined: Sun Aug 07, 2011 6:19 pm

Sounds like you're setting the fps variable in love.load() or in the global scope. Try putting that bit of code in love.update().
Yeah I was doing, thanks, i'll move it now and give it a shot
It isn't as easy as "just do this" unless you want to download something and use in your project.
To do buttons without any third-party libraries, you'd have to manually check mouse positions and see if they are within a certain area of the screen, and then draw a corresponding image.
I don't think I worded it correctly, but yeah, basically instructions for how to manually check the mouse positions to see if they're in the 'button' area. I didn't mean like proper buttons
Make your love.update and love.draw callbacks do different stuff depending on what "state" the game is in. Something like this:
That makes sense, but I basically want my game split into different files so that if I want to edit a specific part later, i can just load up 'inventory.lua' for example.

Robin
The Omniscient
Posts: 6506
Joined: Fri Feb 20, 2009 4:29 pm
Location: The Netherlands
Contact:

From your posts, I can see that you need some understanding of Lua and programming in general before you do things like that. That's not a bad thing, but you need to realise that something like "basically instructions for how to manually check the mouse positions to see if they're in the 'button' area." requires nothing more than basic programming skills (or in fact basic math skills).

ntpspe
Prole
Posts: 31
Joined: Sun Aug 07, 2011 6:19 pm

I understand how to do it, just thought it'd help if there were a tutorial on it

And yeah, I'm still in the learning process, hence why I chose LOVE over SDL or Irrlicht or something Everyone's gotta start somewhere, and I'm using LOVE as my learning project. I have coded C++ applications in the past

EDIT: And that's what forums are for are they not? Asking questions and learning things? And thelinx has been very helpful, moving the FPS and deltatime worked perfectly, so my debug menu is working now

On another note, whenever I use love.graphics.newFont, either in love.load or anywhere else, even if I just set the size, I get a massive memory leak, and my fps drops to 3. Without using love.graphics.newFont anywhere, I get 45fps minimum. Is this a bug? It was mentioned in the bug tracker before.

nevon
Commander of the Circuloids
Posts: 938
Joined: Thu Feb 14, 2008 8:25 pm
Location: Stockholm, Sweden
Contact:

ntpspe wrote:On another note, whenever I use love.graphics.newFont, either in love.load or anywhere else, even if I just set the size, I get a massive memory leak, and my fps drops to 3. Without using love.graphics.newFont anywhere, I get 45fps minimum. Is this a bug? It was mentioned in the bug tracker before.
love.graphics.newFont returns a new font object, so you should never do it outside of love.load. I would recommend doing something like this:

Code: Select all

function love.load()
fonts = {
small = love.graphics.newFont(11),
medium = love.graphics.newFont(16),
large = love.graphics.newFont(22)
}
end

function love.draw()
love.graphics.setFont(fonts.large)
love.graphics.printf("Look, ma! No memory leaks!", 0, love.graphics.getHeight()/2, love.graphics.getWidth(), "center")
end

Robin
The Omniscient
Posts: 6506
Joined: Fri Feb 20, 2009 4:29 pm
Location: The Netherlands
Contact:

ntpspe wrote:EDIT: And that's what forums are for are they not? Asking questions and learning things? And thelinx has been very helpful, moving the FPS and deltatime worked perfectly, so my debug menu is working now
Yes, you are right here.

The thing is, the forums can only help you if you have specific questions or problems. To check if the mouse is within a certain area, I could tell you to use love.mouse.getPosition, but you should be able to think of a way to compare that location to some other numbers. See Programming in Lua if you don't know the right syntax.

Taehl
Dreaming in associative arrays
Posts: 1024
Joined: Mon Jan 11, 2010 5:07 am
Location: CA, USA
Contact:

ntpspe wrote:3. When the user clicks 'New Game' is there some way for it to move from main.lua to... game.lua or something? So that I can have the main.lua as the menu and for global variables, and then the main game will be in another .lua file?
The fastest, easiest way that I can think of would be to make a new file called game.lua or something, which contains love.load, love.update, love.draw, and all the other functions you want. Then, to start your game, use the code

Code: Select all

love.filesystem.load("game.lua")() love.load()
Doing that will overwrite the love.update and such from your main menu and replace them with that of the game.
Earliest Love2D supporter who can't Love anymore. Let me disable pixel shaders if I don't use them, dammit!
Lenovo Thinkpad X60 Tablet, built like a tank. But not fancy enough for Love2D 0.10.0+.

ntpspe
Prole
Posts: 31
Joined: Sun Aug 07, 2011 6:19 pm

Thanks Taehl I managed to do that last night and it all works fine

@Robin yeah, Well I've managed to get button detection working by creating 4 variables, x1, x2, y1 and y2, which set the boundary for the 200x100 button.

So basically,

Code: Select all

function love.mousepressed(x ,y ,button)
if button == "l" and x > spbuttonx1 and x < spbuttonx2 and y > spbuttony1 and y < spbuttony2 then
buttontest = "You clicked the singleplayer button"
singleplayer()
end
end

Which works perfectly

### Who is online

Users browsing this forum: No registered users and 54 guests