basic GUI design
Advertisement
I lacked time this week, but I managed somehow to design a simple GUI system :
Now that it works, I can focus on the tilemap generator.
typedef void(*guiFunction)(void);typedef void(*guiFunctionKeycode)(char);typedef void(*guiFunctionObject)(guiObject&);class guiObject{public: guiObject(); virtual ~guiObject(); bool initialize(Game& g); void event(const sf::Event& ev); virtual void draw(sf::RenderWindow& dest) = 0; virtual void update(double dt) = 0; static void default_function(); static void default_functionKeycode(char code); static void default_functionObject(guiObject& obj); guiFunction onMouseOver = default_function; guiFunction onMouseNotOver = default_function; guiFunction onLeftClick = default_function; guiFunction onLeftHold = default_function; guiFunction onLeftRelease = default_function; guiFunction onRightClick = default_function; guiFunction onRightHold = default_function; guiFunction onRightRelease = default_function; guiFunctionKeycode onKeyPressed = default_functionKeycode; guiFunctionKeycode onKeyReleased = default_functionKeycode; guiFunctionObject onDrag = default_functionObject; // visibility bool isVisible(); void show(); void hide(); // focus bool getFocus(); void setFocus(bool f); // selection bool isSelected(); void select(); void unselect(); // position (origin is the center of the screen) void setPosition(const sf::Vector2f& p); void setPosition(float x, float y); sf::Vector2f getPosition(); // bounds void setLimits(sf::FloatRect& box); sf::FloatRect& getLimits(); // size void setSize(sf::Vector2f& sz); void setSize(float w, float h); sf::Vector2f& getSize(); // manual resize void setResizeable(bool enabled); bool isResizeable(); // drag n'drop void setDragable(bool enabled); bool isDragable(); void setDragArea(sf::FloatRect& d); sf::FloatRect& getDragArea();};class GUI{private: Game *_game; bool _mouseShown = true; std::vector _object;public: GUI(); ~GUI(); bool initialize(Game& g); std::vector& getObject(); void push(guiObject *obj); void pop(); void showMouse(); void hideMouse(); void event(const sf::Event& ev); void draw(sf::RenderWindow& dest); void update(double dt);};Now that it works, I can focus on the tilemap generator.
Advertisement
Advertisement
Advertisement
Discussion