#ifndef GUI_H #define GUI_H #include "scripting.h" // TODO: Remove temporary workaround for CEGUI + GCC 4.6 #include #include class GUI { protected: CEGUI::Window *wnd; bool _showing; public: static CEGUI::Window *root; virtual ~GUI() {}; static void init(); static void pre_render(); static void render(); virtual void update() = 0; virtual void show(); virtual void hide(); bool showing(); }; class ConsoleWindow : public GUI { private: CEGUI::Window *editbox; CEGUI::Listbox *listbox; Lua *lua; bool clicked(const CEGUI::EventArgs& e); bool keydown(const CEGUI::EventArgs& e); void erase_editbox_text(); void handle_input(); public: ConsoleWindow(Lua *lua); virtual ~ConsoleWindow(); virtual void update(); virtual void show(); void add_line(const std::string& line); void add_line(const char *line); }; class ChatWindow : public GUI { private: CEGUI::Listbox *listbox; public: ChatWindow(); virtual ~ChatWindow(); virtual void update() {}; void add_line(const std::string& line); void add_line(const char *line); }; class RaiseWindow : public GUI { private: CEGUI::PushButton *btn; CEGUI::Scrollbar *radius_sb; CEGUI::Window *radius_sb_lbl; CEGUI::Scrollbar *focus_sb; CEGUI::Window *focus_sb_lbl; CEGUI::Scrollbar *strength_sb; CEGUI::Window *strength_sb_lbl; static float radius, focus, strength; public: RaiseWindow(); virtual ~RaiseWindow(); virtual void update(); float get_radius(); float get_focus(); float get_strength(); }; #endif