From b875124824794a7762414db76ed9f953b8ba320f Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Fri, 26 Dec 2008 12:21:48 +0000 Subject: default player settings in player.ini, palette text colors, cleanups --- src/ui/paint.cc | 5 ++ src/ui/paint.h | 3 ++ src/ui/palette.cc | 83 +++++++++++------------------ src/ui/palette.h | 155 ++++++++++++++++++++++++++++++++++++++++++++++-------- src/ui/ui.cc | 57 ++++++++++++++++++-- src/ui/ui.h | 3 ++ 6 files changed, 229 insertions(+), 77 deletions(-) (limited to 'src/ui') diff --git a/src/ui/paint.cc b/src/ui/paint.cc index 86058cf..e6f2402 100644 --- a/src/ui/paint.cc +++ b/src/ui/paint.cc @@ -17,6 +17,11 @@ namespace ui // contains the interface between the user interface and the render library namespace paint { +void assign_color(const char c, const math::Color &color) +{ + render::Text::assign_color(c, color); +} + void color(float r, float g, float b, float a) { gl::color(r, g, b, a); diff --git a/src/ui/paint.h b/src/ui/paint.h index 95f1c62..840e18a 100644 --- a/src/ui/paint.h +++ b/src/ui/paint.h @@ -15,6 +15,9 @@ namespace ui /// low-level widget paint functions namespace paint { +/// assign system colors +void assign_color(const char c, const math::Color &color); + /// set paint color void color(float r=0.0f, float g=0.0f, float b=0.0f, float a=1.0f); diff --git a/src/ui/palette.cc b/src/ui/palette.cc index 79388d8..f8d16c1 100644 --- a/src/ui/palette.cc +++ b/src/ui/palette.cc @@ -10,17 +10,18 @@ namespace ui { -Palette::Palette() +Palette::Palette() : + palette_foreground(1.0f, 1.0f), + palette_background(0.5f, 0.75f), + palette_border(0.0f, 0.8f, 0.0f, 0.5f), + palette_text(0.75f), + palette_highlight(1.0f, 1.0f, 0.5f), + palette_pointer(0.0f, 0.75f, 0.0f), + palette_active(0.0f, 1.0f, 0.0f), + palette_debug(0.50f, 0.75f), + palette_mission(1.0f, 0.5f, 1.0f) { - palette_foreground.assign(1.0f, 1.0f); - palette_highlight.assign(1.0f, 1.0f, 0.5f); - palette_text.assign(0.75f); - palette_background.assign(0.5f, 0.75f); - palette_border.assign(0.0f, 0.8f, 0.0f, 0.5f); - palette_pointer.assign(0.0f, 0.75f, 0.0f); - palette_active.assign(0.0f, 1.0f, 0.0f); - palette_debug.assign(1.0f, 0.0f, 1.0f, 0.75f); } Palette::~Palette() @@ -36,12 +37,15 @@ const math::Color &Palette::color(Color palettecolor) const case Background: return background(); break; - case Highlight: - return highlight(); - break; case Border: return border(); break; + case Text: + return text(); + break; + case Highlight: + return highlight(); + break; case Pointer: return pointer(); break; @@ -50,51 +54,28 @@ const math::Color &Palette::color(Color palettecolor) const break; case Debug: return debug(); + break; + case Mission: + return mission(); + break; + case Bold: + return bold(); + break; + case Fancy: + return fancy(); + break; + case Warning: + return warning(); + break; + case Error: + return error(); + break; default: return foreground(); break; } } -void Palette::set_foreground(math::Color const &color) -{ - palette_foreground.assign(color); -} - -void Palette::set_highlight(math::Color const &color) -{ - palette_highlight.assign(color); -} - -void Palette::set_text(math::Color const &color) -{ - palette_text.assign(color); -} - -void Palette::set_background(math::Color const &color) -{ - palette_background.assign(color); -} - -void Palette::set_border(math::Color const &color) -{ - palette_border.assign(color); -} - -void Palette::set_pointer(math::Color const &color) -{ - palette_pointer.assign(color); -} - -void Palette::set_active(math::Color const &color) -{ - palette_active.assign(color); -} - -void Palette::set_debug(math::Color const &color) -{ - palette_debug.assign(color); -} } diff --git a/src/ui/palette.h b/src/ui/palette.h index 1ef49c7..1aabc59 100644 --- a/src/ui/palette.h +++ b/src/ui/palette.h @@ -12,77 +12,190 @@ namespace ui { +/// color palette used by the user interface class Palette { public: + /// default constructor, creates a default palette Palette(); + + /// default destructor ~Palette(); - enum Color { Foreground=0, Background=1, Highlight=2, Border=3, Pointer=4, Active=5, Debug=6 }; + /// color index + enum Color { Foreground=0, Background=1, Border=2, Text=3, Highlight=4, Pointer=5, Active=6, Debug=7, Mission=8, + Bold=9, Fancy=10, Warning=11, Error=12 }; + + /* ---- mutators ------------------------------------------- */ /// set foreground color - void set_foreground(math::Color const &color); + inline void set_foreground(const math::Color &color) + { + palette_foreground.assign(color); + } + + /// set background color + inline void set_background(const math::Color &color) + { + palette_background.assign(color); + } + + /// set border color + inline void set_border(const math::Color &color) + { + palette_border.assign(color); + } + + /// set text color + inline void set_text(const math::Color &color) + { + palette_text.assign(color); + } /// set highlight color - void set_highlight(math::Color const &color); - - void set_text(math::Color const &color); + inline void set_highlight(const math::Color &color) + { + palette_highlight.assign(color); + } - void set_background(math::Color const &color); + /// set pointer color + inline void set_pointer(const math::Color &color) + { + palette_pointer.assign(color); + } - void set_border(math::Color const &color); + /// set active pointer color + inline void set_active(const math::Color &color) + { + palette_active.assign(color); + } - void set_pointer(math::Color const &color); + /// set debug color + inline void set_debug(const math::Color &color) + { + palette_debug.assign(color); + } - void set_active(math::Color const &color); + /// set mission color + inline void set_mission(const math::Color &color) + { + palette_mission.assign(color); + } - void set_debug(math::Color const &olor); + /// set bold text color + inline void set_bold(const math::Color &color) + { + palette_bold.assign(color); + } - inline const math::Color &foreground() const { - return palette_foreground; + /// set fancy text color + inline void set_fancy(const math::Color &color) + { + palette_fancy.assign(color); } - inline const math::Color &highlight() const { - return palette_highlight; + /// set warning text color + inline void set_warning(const math::Color &color) + { + palette_warning.assign(color); } - inline const math::Color &text() const { - return palette_text; + /// set error text color + inline void set_error(const math::Color &color) + { + palette_error.assign(color); + } + + /* ---- inspectors ----------------------------------------- */ + + /// foreground color + inline const math::Color &foreground() const { + return palette_foreground; } + /// background color inline const math::Color &background() const { return palette_background; } + /// border color inline const math::Color &border() const { return palette_border; } - + + /// text color + inline const math::Color &text() const { + return palette_text; + } + + /// highlight color + inline const math::Color &highlight() const { + return palette_highlight; + } + + /// pointer color inline const math::Color &pointer() const { return palette_pointer; } + /// active pointer color inline const math::Color &active() const { return palette_active; } + /// debug color inline const math::Color &debug() const { return palette_debug; } + /// mission color + inline const math::Color &mission() const { + return palette_mission; + } + + /// bold text color + inline const math::Color &bold() const { + return palette_bold; + } + + /// fancy text color + inline const math::Color &fancy() const { + return palette_fancy; + } + + /// warning text color + inline const math::Color &warning() const { + return palette_warning; + } + + /// error text color + inline const math::Color &error() const { + return palette_error; + } + + // indexed color const math::Color &color(Palette::Color palettecolor) const; private: - + // UI colors math::Color palette_foreground; - math::Color palette_highlight; math::Color palette_background; + math::Color palette_border; + math::Color palette_text; + math::Color palette_highlight; math::Color palette_pointer; math::Color palette_active; - math::Color palette_border; math::Color palette_debug; - math::Color palette_text; + + // HUD colors + math::Color palette_mission; + + // additional text colors + math::Color palette_bold; + math::Color palette_fancy; + math::Color palette_warning; + math::Color palette_error; }; } diff --git a/src/ui/ui.cc b/src/ui/ui.cc index bc6f544..b06e29b 100644 --- a/src/ui/ui.cc +++ b/src/ui/ui.cc @@ -44,6 +44,7 @@ void func_ui_restart(std::string const &args) { if (global_ui) { global_ui->load(); + global_ui->apply_render_options(); } } @@ -291,6 +292,12 @@ void UI::load() } else if (ini.got_section("colors")) { continue; + } else if (ini.got_section("hud")) { + continue; + + } else if (ini.got_section("text")) { + continue; + } else { ini.unknown_section(); continue; @@ -310,12 +317,16 @@ void UI::load() continue; } else if (ini.got_key_float("elementwidth", w)) { elementsize.assign(w, h); + continue; } else if (ini.got_key_float("elementheight", h)) { elementsize.assign(w, h); + continue; } else if (ini.got_key_float("elementmargin", m)) { elementmargin = m; + continue; } else { ini.unkown_key(); + continue; } } else if (ini.in_section("colors")) { @@ -323,26 +334,51 @@ void UI::load() if (ini.got_key_color("foreground", color)) { ui_palette->set_foreground(color); continue; - } else if (ini.got_key_color("highlight", color)) { - ui_palette->set_highlight(color); - continue; - } else if (ini.got_key_color("text", color)) { - ui_palette->set_text(color); } else if (ini.got_key_color("background", color)) { ui_palette->set_background(color); continue; } else if (ini.got_key_color("border", color)) { ui_palette->set_border(color); continue; + } else if (ini.got_key_color("text", color)) { + ui_palette->set_text(color); + } else if (ini.got_key_color("highlight", color)) { + ui_palette->set_highlight(color); + continue; } else if (ini.got_key_color("pointer", color)) { ui_palette->set_pointer(color); + continue; } else if (ini.got_key_color("active", color)) { ui_palette->set_active(color); + continue; } else if (ini.got_key_color("debug", color)) { ui_palette->set_debug(color); + continue; } else { ini.unkown_key(); + continue; } + + } else if (ini.in_section("hud")) { + + if (ini.got_key_color("mission", color)) { + ui_palette->set_mission(color); + continue; + } else { + ini.unkown_key(); + continue; + } + + } else if (ini.in_section("text")) { + } else if (ini.got_key_color("bold", color)) { + ui_palette->set_bold(color); + } else if (ini.got_key_color("fancy", color)) { + ui_palette->set_fancy(color); + } else if (ini.got_key_color("warning", color)) { + ui_palette->set_warning(color); + } else if (ini.got_key_color("error", color)) { + ui_palette->set_error(color); + continue; } } } @@ -376,6 +412,17 @@ void UI::load() menu->add_button("Join", "join; menu hide"); menu->add_button("Game menu", "menu game"); } +} + +void UI::apply_render_options() +{ + // apply palette colors + paint::assign_color('N', palette()->text()); + paint::assign_color('D', palette()->debug()); + paint::assign_color('B', palette()->bold()); + paint::assign_color('F', palette()->fancy()); + paint::assign_color('W', palette()->warning()); + paint::assign_color('E', palette()->error()); } diff --git a/src/ui/ui.h b/src/ui/ui.h index ae42ad6..95577cf 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -33,6 +33,9 @@ public: /// reload menu files void load(); + + /// apply UI options to the render engine + void apply_render_options(); /// make a window the active window void show_menu(const char *label); -- cgit v1.2.3