[SDL] Making simple menu's in a game..

Matt Pruett entelin at logicaldreams.net
Mon Jun 20 21:49:04 PDT 2005


I am making a little tile based game, nothing big and complicated or
anything. But I want to start making a basic menu system for it and I
have never really done it before. What would the general code structure
be for a menu system?

So far I have made a menu class whos goal is to keep track of buttons
and other objects on the menu and draw the whole menu onto a surface
which can be fetched from one of its methods... it works like this..

menu coolmenu
// we add all the elements to the menu
coolmenu.addbutton
coolmenu.addbutton
coolmenu.addbutton
// this gets passed the on screen location, size in tiles of the menu
and background color. Then it draws the menu onto a surface held in the
class.
tileselectmenu.build
// would be used to move the menu around the screen
tileselectmenu.move
// gets passed your display or other surface you want to render it to to
finally draw it somewhere.
tileselectmenu.draw (screen);

this is the actual class declaration to give you a general idea

class menu
	{
	public:
	menu ();
	~menu ();
	int build (unsigned short tx, unsigned short ty, unsigned char r,
unsigned char g, unsigned char b, unsigned char a,SDL_Surface*
tileset0);
	int draw (SDL_Surface* screen);
	int move (int x, int y);
	int addbutton (unsigned short xrel, unsigned short yrel, unsigned short
w, unsigned short h, SDL_Rect surface_rect, SDL_Surface*
buttonsurface); //returns the button number
	int removebutton (int num); 
	int addtext (unsigned short xrel, unsigned short yrel, const char*
text);
	int removetext ();
	int checkcollisions (); // this is only a stub so far but it would
return mabe a pointer to the element or button or something that it
collided on? or perhaps just a number... i dnno.
	SDL_Surface* getsurface ();

	private:
	SDL_Surface* surface;
	button buttons[MAXBUTTONELEMENTS];
	xy loc;
	};

So my question is... is this generally how you go about making a menu
system? Any sugguestions about how I should approach it? How would
something like dragging work? (like picking up an item out of one menu
and putting it in annother).

elements I want to add would be buttons, dragable items, and a text
window with a text entry at the bottom.

thanks.

-- 
Matt Pruett <entelin at logicaldreams.net>





More information about the SDL mailing list