All pastes #284277 Raw Edit

Miscellany

public text v1 · immutable
#284277 ·published 2006-12-19 00:08 UTC
rendered paste body

typedef struct
	{
	bool drawn;		// should we draw it
	bool selectable;	// is it selectable? you can turn this off and use this to make pictures on the menu for example
	bool free;		// is this button availible to be overwriten
	SDL_Rect button_rect;	// location relative to menu and width / height
	SDL_Rect surface_rect;
	SDL_Surface* surface;
	int (*func)(int);
	} buttonelement;

typedef struct
	{
	bool drawn;
	bool free;
	SFont_Font* font;
	int xrel;
	int yrel;
	int width;
	int height;
	char *text;
	} textelement;

typedef struct
	{
	bool free;
	int keysym;	// SDL_BUTTON_LEFT, SDLK_F11, etc
	int (*func)(int);	// Function to run
	} menuaction;

class menu
	{
	public:
	menu ();
	~menu ();
	int init (unsigned short tx, unsigned short ty, unsigned char r, unsigned char g, unsigned char b, unsigned char a, SDL_Surface* tileset); // this automaticly sets focused and drawn to true
	int predraw (); 
	int draw (SDL_Surface* screen);
	int move (int x, int y);
	void setfocus (bool f);
	void setdrawn (bool d);
	void setnoborder (bool b);
	void setbgcolor (unsigned char r, unsigned char g, unsigned char b, unsigned char a);
	void setbackgroundtype (int b);
	bool isfocused ();
	bool isdrawn ();
	int addmenuaction (int keysym, int (*func)(int)); // returns menuaction number
	int addbutton (unsigned short xrel, unsigned short yrel, unsigned short w, unsigned short h, SDL_Rect surface_rect, SDL_Surface* buttonsurface, bool selectable, int (*func)(int)); // returns the button number
	int modbuttonsurface (int num, SDL_Rect surface_rect, SDL_Surface* buttonsurface); //returns the text number
	int addtext (unsigned short xrel, unsigned short yrel, SFont_Font* font, const char* text);
	int modtextstring (int num, const char* text);
	int modtextfont (int num, SFont_Font* font);
	int modtextposition (int num, unsigned short xrel, unsigned short yrel);
	int modtextpositionx (int num, unsigned short xrel);
	int modtextpositiony (int num, unsigned short yrel);
	int modbuttonselectable (int num, bool selectable);
	int modbuttondrawn (int num, bool drawn);
	int removebutton (int num); 
	int removetext (int num);
	int removemenuaction (int num);
	int movetextcursor (int num, int offset);
	bool textcursorshown ();
	void settextcursor (bool t);
	int runactions (int x, int y, SDL_Event event); // find the collisions / keypresses on a menu and runs the pointed functions.
	SDL_Surface* getsurface ();

	private:
	SDL_Surface* surface;
	buttonelement	buttons[MAXBUTTONELEMENTS];
	textelement	texts[MAXTEXTELEMENTS];
	menuaction	actions[MAXMENUACTIONS];
	xy loc;
	xy txty;
	xy textcursorloc;
	SDL_Surface* bordertileset;
	bool focused;
	bool drawn;
	bool textcursor;
	bool noborder;
	int backgroundtype;
	unsigned char color_r;
	unsigned char color_g;
	unsigned char color_b;
	unsigned char color_a;
	};