summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2008-04-12 22:19:34 +0000
committerpeter1138 <peter1138@openttd.org>2008-04-12 22:19:34 +0000
commita3e2d8f577aee76079319a5722f210889684ab79 (patch)
treea2f717d926db096f0eadba9969b2c771af5251d0
parent447a31b7027245fc416e6186c7a30ebbcacb00df (diff)
downloadopenttd-a3e2d8f577aee76079319a5722f210889684ab79.tar.xz
(svn r12676) -Codechange: Reinstate colour selection buses, absent since r6455.
-rw-r--r--src/player_gui.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/src/player_gui.cpp b/src/player_gui.cpp
index efcc3eabd..0aa66aeae 100644
--- a/src/player_gui.cpp
+++ b/src/player_gui.cpp
@@ -29,6 +29,7 @@
#include "string_func.h"
#include "settings_type.h"
#include "widgets/dropdown_func.h"
+#include "widgets/dropdown_type.h"
#include "table/sprites.h"
#include "table/strings.h"
@@ -283,7 +284,6 @@ static const StringID _colour_dropdown[] = {
STR_00DE_BROWN,
STR_00DF_GREY,
STR_00E0_WHITE,
- INVALID_STRING_ID
};
/* Association of liveries to livery classes */
@@ -324,6 +324,29 @@ enum PlayerLiveryWindowWidgets {
PLW_WIDGET_MATRIX,
};
+class DropDownListColourItem : public DropDownListItem {
+public:
+ DropDownListColourItem(int result, bool masked) : DropDownListItem(result, masked) {}
+
+ virtual ~DropDownListColourItem() {}
+
+ virtual StringID String() const
+ {
+ return _colour_dropdown[this->result];
+ }
+
+ virtual uint Height(uint width) const
+ {
+ return 14;
+ }
+
+ virtual void Draw(int x, int y, uint width, uint height, bool sel) const
+ {
+ DrawSprite(SPR_VEH_BUS_SIDE_VIEW, PALETTE_RECOLOR_START + this->result, x + 16, y + 7);
+ DrawStringTruncated(x + 32, y + 3, this->String(), sel ? TC_WHITE : TC_BLACK, x + width - 30);
+ }
+};
+
static void ShowColourDropDownMenu(Window *w, uint32 widget)
{
uint32 used_colours = 0;
@@ -345,7 +368,12 @@ static void ShowColourDropDownMenu(Window *w, uint32 widget)
if (scheme == LS_END) scheme = LS_DEFAULT;
livery = &GetPlayer((PlayerID)w->window_number)->livery[scheme];
- ShowDropDownMenu(w, _colour_dropdown, widget == PLW_WIDGET_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget, used_colours, 0);
+ DropDownList *list = new DropDownList();
+ for (uint i = 0; i < lengthof(_colour_dropdown); i++) {
+ list->push_back(new DropDownListColourItem(i, HasBit(used_colours, i)));
+ }
+
+ ShowDropDownList(w, list, widget == PLW_WIDGET_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget);
}
static void SelectPlayerLiveryWndProc(Window *w, WindowEvent *e)