/* A clickable button widget * */ #ifndef _MENUBUTTON_H_ #define _MENUBUTTON_H_ #include #include #include using std::string; // fixme: there's probably a better way to do this, but SDL's event model // has me hard-pressed to figure out what it is. enum ButtonAction {BUTTON_BUILD, BUTTON_ATTACK, BUTTON_MOVE, BUTTON_BUILD_ATTACKER, BUTTON_BUILD_DEFENDER, BUTTON_BUILD_PRODUCER}; class MenuButton { public: MenuButton(string text = "", TTF_Font* font = NULL, int x = 0, int y = 0, ButtonAction action = BUTTON_BUILD); // Selectable buttons change colour for the duration they are selected, // and should ignore clicks while selected void set_hover(bool is_hovering); void draw(SDL_Surface* display, int colour = 0x000000, int background_colour = 0x888888); bool is_at(int test_x, int test_y); ButtonAction get_action() const { return action; } private: string text; int x; int y; bool hover; TTF_Font* font; ButtonAction action; }; #endif