(svn r5714) Backport from branches/TGP (r5701 and r5711)
-Fix: < > boxes in patch-settings didn't grey out when they hit the limit of their range -Codechange: while at it, prettyfied DrawArrowButtons() a bit -Fix: < > boxes in industry production window (when cheat enabled) had a minor glitch
This commit is contained in:
@@ -734,11 +734,11 @@ static void PatchesSelectionWndProc(Window *w, WindowEvent *e)
|
||||
} else {
|
||||
int32 value;
|
||||
|
||||
/* Draw [<][>] boxes for settings of an integer-type */
|
||||
DrawArrowButtons(x, y, 3, WP(w,def_d).data_2 - (i * 2), editable);
|
||||
|
||||
value = (int32)ReadValue(var, sd->save.conv);
|
||||
|
||||
/* Draw [<][>] boxes for settings of an integer-type */
|
||||
DrawArrowButtons(x, y, 3, WP(w,def_d).data_2 - (i * 2), (editable && value != sdb->min), (editable && value != sdb->max));
|
||||
|
||||
disabled = (value == 0) && (sdb->flags & SGF_0ISDISABLED);
|
||||
if (disabled) {
|
||||
SetDParam(0, STR_CONFIG_PATCHES_DISABLED);
|
||||
@@ -1049,20 +1049,29 @@ void ShowNewgrf(void)
|
||||
w->disabled_state = (1 << 5) | (1 << 6) | (1 << 7);
|
||||
}
|
||||
|
||||
/** Draw [<][>] boxes
|
||||
* state: 0 = none clicked, 1 = first clicked, 2 = second clicked */
|
||||
void DrawArrowButtons(int x, int y, int ctab, byte state, bool enabled)
|
||||
/**
|
||||
* Draw [<][>] boxes.
|
||||
* @param x the x position to draw
|
||||
* @param y the y position to draw
|
||||
* @param ctab the color of the buttons
|
||||
* @param state 0 = none clicked, 1 = first clicked, 2 = second clicked
|
||||
* @param clickable_left is the left button clickable?
|
||||
* @param clickable_right is the right button clickable?
|
||||
*/
|
||||
void DrawArrowButtons(int x, int y, int ctab, byte state, bool clickable_left, bool clickable_right)
|
||||
{
|
||||
DrawFrameRect(x, y+1, x + 9, y+9, ctab, (state == 1) ? FR_LOWERED : 0);
|
||||
DrawFrameRect(x+10, y+1, x +19, y+9, ctab, (state == 2) ? FR_LOWERED : 0);
|
||||
DrawStringCentered(x+ 5, y+1, STR_6819, 0); // [<]
|
||||
DrawStringCentered(x+15, y+1, STR_681A, 0); // [>]
|
||||
int color = PALETTE_MODIFIER_GREYOUT | _color_list[3].unk2;
|
||||
|
||||
if (!enabled) {
|
||||
int color = PALETTE_MODIFIER_GREYOUT | _color_list[3].unk2;
|
||||
GfxFillRect(x+ 1, y+1, x+ 1+8, y+8, color);
|
||||
GfxFillRect(x+11, y+1, x+11+8, y+8, color);
|
||||
}
|
||||
DrawFrameRect(x, y + 1, x + 9, y + 9, ctab, (state == 1) ? FR_LOWERED : 0);
|
||||
DrawFrameRect(x + 10, y + 1, x + 19, y + 9, ctab, (state == 2) ? FR_LOWERED : 0);
|
||||
DrawStringCentered(x + 5, y + 1, STR_6819, 0); // [<]
|
||||
DrawStringCentered(x + 15, y + 1, STR_681A, 0); // [>]
|
||||
|
||||
/* Grey out the buttons that aren't clickable */
|
||||
if (!clickable_left)
|
||||
GfxFillRect(x + 1, y + 1, x + 1 + 8, y + 8, color);
|
||||
if (!clickable_right)
|
||||
GfxFillRect(x + 11, y + 1, x + 11 + 8, y + 8, color);
|
||||
}
|
||||
|
||||
static char _str_separator[2];
|
||||
@@ -1076,7 +1085,7 @@ static void CustCurrencyWndProc(Window *w, WindowEvent *e)
|
||||
DrawWindowWidgets(w);
|
||||
|
||||
// exchange rate
|
||||
DrawArrowButtons(10, y, 3, (clk >> (i*2)) & 0x03, true);
|
||||
DrawArrowButtons(10, y, 3, (clk >> (i*2)) & 0x03, true, true);
|
||||
SetDParam(0, 1);
|
||||
SetDParam(1, 1);
|
||||
DrawString(x, y + 1, STR_CURRENCY_EXCHANGE_RATE, 0);
|
||||
@@ -1109,7 +1118,7 @@ static void CustCurrencyWndProc(Window *w, WindowEvent *e)
|
||||
i++;
|
||||
|
||||
// switch to euro
|
||||
DrawArrowButtons(10, y, 3, (clk >> (i*2)) & 0x03, true);
|
||||
DrawArrowButtons(10, y, 3, (clk >> (i*2)) & 0x03, true, true);
|
||||
SetDParam(0, _custom_currency.to_euro);
|
||||
DrawString(x, y + 1, (_custom_currency.to_euro != CF_NOEURO) ? STR_CURRENCY_SWITCH_TO_EURO : STR_CURRENCY_SWITCH_TO_EURO_NEVER, 0);
|
||||
x = 35;
|
||||
|
||||
Reference in New Issue
Block a user