Page 1 of 3

[Library] LövelyMoon v2

Posted: Tue Jul 09, 2013 10:11 am
by Davidobot
Welcome to my first library: LövelyMoon! Basicly this library is based around a lua engine called "DaisyMoon". LövelyMoon adds a very neat way of handling gamestates, in fact, it is made to make your game focus on gamestates and such.

The credit for the new version goes to the wonderful bVictor7364

Changes from version 1:
  • Updated to LÖVE 0.10.2
  • lovelyMoon.lua & stateManager.lua are now merged in one module "lovelyMoon".
  • All "lovelyMoon.*" functions (update, draw, etc.) are moved to "lovelyMoon.events.*".
  • All the functions that were in a global scope (from stateManager) were moved to "lovelyMoon.*"
  • Simplified adding state procedure.
  • Added a "switchState(currentID, nextID)", which basically calls "disableState(id)" and then "enableState(id)".
  • Added a "lovelyMoon.new(self)" function.
  • Simplified "state:new()" function. all you have to do now is: "return lovelyMoon.new(self)"
Reference:

Code: Select all

lovelyMoon.event.update(dt)
lovelyMoon.event.draw()
lovelyMoon.event.keypressed(key, unicode)
lovelyMoon.event.keyreleased(key, unicode)
lovelyMoon.event.mousepressed(x, y, button)
lovelyMoon.event.mousereleased(x, y, button)

lovelyMoon.new(self) -- Initializes a new state; call from: function state:new()
lovelyMoon.addState(file, id) -- return state; file argument is used for require.
lovelyMoon.isStateEnabled(id) -- return bool
lovelyMoon.getState(id) -- return state
lovelyMoon.enableState(id)
lovelyMoon.disableState(id)
lovelyMoon.switchState(currentID, nextID)
lovelyMoon.toggleState(id)
lovelyMoon.destroyState(id)
Usage:
0. Place "lovelyMoon.lua" library somewhere in source folder (e.g. "/lib/lovelyMoon.lua")
1. In main.lua add a variable to require the lovelyMoon library and preferable create a table for states:

Code: Select all

lovelyMoon = require("lib.lovelyMoon")
states = {}
2. In function love.load() add states and enable first one:

Code: Select all

function love.load()
	states.menu = lovelyMoon.addState("states.menu", "menu") -- Argument 1 is file path for require
	states.game = lovelyMoon.addState("states.game", "game")
	
	lovelyMoon.enableState("menu")
end
3. Replace love event states by lovelyMoon ones:

Code: Select all

function love.update(dt)
	lovelyMoon.event.update(dt)
end

function love.draw()
	lovelyMoon.event.draw()
end

function love.keypressed(key, unicode)
	lovelyMoon.event.keypressed(key, unicode)
end

function love.keyreleased(key, unicode)
	lovelyMoon.event.keyreleased(key, unicode)
end

function love.mousepressed(x, y, button)
	lovelyMoon.event.mousepressed(x, y, button)
end

function love.mousereleased(x, y, button)
	lovelyMoon.event.mousereleased(x, y, button)
end
4. Create the state script (e.g. "/states/menu.lua"):

Code: Select all

local state = {}

function state:new()
	return lovelyMoon.new(self)
end

function state:load()
	
end

function state:close()
	
end

function state:enable()
	
end

function state:disable()
	
end

function state:update(dt)
	
end

function state:draw()
	
end

function state:keypressed(key, unicode)
	
end

function state:keyreleased(key, unicode)
	
end

function state:mousepressed(x, y, button)
	
end

function state:mousereleased(x, y, button)
	
end

return state
5.That's all. Add game code to states' functions.

Thanks again to bVictor7364! This is all his work!
I hope this library proves to be useful to you all!

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 10:27 am
by substitute541
Can't open "states/Gamestate.lua". No such file or directory.

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 10:35 am
by Davidobot
substitute541 wrote:Can't open "states/Gamestate.lua". No such file or directory.
Whoops :oops: .
Sorry, remind me to never use dofile again (Well, actually, it can prove useful for making a game mod-friendly, hmmmm). Fixed.

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 12:07 pm
by Roland_Yonaba
Putting aside the fact that it spawns lots of globals to the main code, I like it.
Have you considered stackable states ? I don't use them by myself, but it seems some people are fond of them.

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 12:48 pm
by Davidobot
Roland_Yonaba wrote:Putting aside the fact that it spawns lots of globals to the main code, I like it.
Have you considered stackable states ? I don't use them by myself, but it seems some people are fond of them.
Thanks! :awesome:
What do you exactly mean by "stackable states"? You can have multiple gamestates running at the same time if that is what you mean?

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 1:47 pm
by Roland_Yonaba
Davidobot wrote:Thanks! :awesome:
What do you exactly mean by "stackable states"?
You can have multiple gamestates running at the same time if that is what you mean?
Yes.

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 1:58 pm
by Davidobot
Well, as far as I tested, this is possible with this library. :crazy:

Re: [Library] LövelyMoon

Posted: Tue Jul 09, 2013 2:38 pm
by Eamonn
Looks awesome! I'll defiantly be using it in some of my projects! None that I've already gotten into, because I'm too lazy to change the code, but in some other projects this'll be really useful! :)

Re: [Library] LövelyMoon

Posted: Fri Aug 02, 2013 5:53 pm
by Davidobot
Eamonn wrote:Looks awesome! I'll defiantly be using it in some of my projects! None that I've already gotten into, because I'm too lazy to change the code, but in some other projects this'll be really useful! :)
Thanks! :D
If you need any help with the library, feel free to ask me. :3

Re: [Library] LövelyMoon

Posted: Fri Aug 09, 2013 10:01 pm
by jjmafiae
i think i will use some time staring at your code. who knows, it might inspire me to do another unreleased commie library?