(svn r13975) -Codechange: Replace some globals used by the small map window with static members of the window.

This commit is contained in:
peter1138 2008-08-03 14:58:26 +00:00
parent 983e297ff0
commit a5453e43b1
1 changed files with 26 additions and 22 deletions

View File

@ -55,8 +55,6 @@ static const Widget _smallmap_widgets[] = {
{ WIDGETS_END}, { WIDGETS_END},
}; };
static int _smallmap_type;
static bool _smallmap_show_towns = true;
/* number of used industries */ /* number of used industries */
static int _smallmap_industry_count; static int _smallmap_industry_count;
/* number of industries per column*/ /* number of industries per column*/
@ -571,6 +569,9 @@ class SmallMapWindow : public Window
BASE_NB_PER_COLUMN = 6, BASE_NB_PER_COLUMN = 6,
}; };
static SmallMapType map_type;
static bool show_towns;
int32 scroll_x; int32 scroll_x;
int32 scroll_y; int32 scroll_y;
int32 subscroll; int32 subscroll;
@ -591,7 +592,7 @@ public:
* @param type type of map requested (vegetation, owners, routes, etc) * @param type type of map requested (vegetation, owners, routes, etc)
* @param show_towns true if the town names should be displayed, false if not. * @param show_towns true if the town names should be displayed, false if not.
*/ */
void DrawSmallMap(DrawPixelInfo *dpi, int type, bool show_towns) void DrawSmallMap(DrawPixelInfo *dpi)
{ {
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter(); Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
DrawPixelInfo *old_dpi; DrawPixelInfo *old_dpi;
@ -608,7 +609,7 @@ public:
GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, 0); GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, 0);
/* setup owner table */ /* setup owner table */
if (type == SMT_OWNER) { if (this->map_type == SMT_OWNER) {
const Player *p; const Player *p;
/* fill with some special colors */ /* fill with some special colors */
@ -673,7 +674,7 @@ public:
/* number of lines */ /* number of lines */
reps = (dpi->height - y + 1) / 2; reps = (dpi->height - y + 1) / 2;
if (reps > 0) { if (reps > 0) {
DrawSmallMapStuff(ptr, tile_x, tile_y, dpi->pitch * 2, reps, mask, _smallmap_draw_procs[type]); DrawSmallMapStuff(ptr, tile_x, tile_y, dpi->pitch * 2, reps, mask, _smallmap_draw_procs[this->map_type]);
} }
skip_column: skip_column:
@ -691,7 +692,7 @@ public:
} }
/* draw vehicles? */ /* draw vehicles? */
if (type == SMT_CONTOUR || type == SMT_VEHICLES) { if (this->map_type == SMT_CONTOUR || this->map_type == SMT_VEHICLES) {
Vehicle *v; Vehicle *v;
bool skip; bool skip;
byte color; byte color;
@ -729,7 +730,7 @@ public:
} }
/* Calculate pointer to pixel and the color */ /* Calculate pointer to pixel and the color */
color = (type == SMT_VEHICLES) ? _vehicle_type_colors[v->type] : 0xF; color = (this->map_type == SMT_VEHICLES) ? _vehicle_type_colors[v->type] : 0xF;
/* And draw either one or two pixels depending on clipping */ /* And draw either one or two pixels depending on clipping */
blitter->SetPixel(dpi->dst_ptr, x, y, color); blitter->SetPixel(dpi->dst_ptr, x, y, color);
@ -738,7 +739,7 @@ public:
} }
} }
if (show_towns) { if (this->show_towns) {
const Town *t; const Town *t;
FOR_ALL_TOWNS(t) { FOR_ALL_TOWNS(t) {
@ -830,8 +831,8 @@ public:
} }
} }
this->LowerWidget(_smallmap_type + SM_WIDGET_CONTOUR); this->LowerWidget(this->map_type + SM_WIDGET_CONTOUR);
this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, _smallmap_show_towns); this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, this->show_towns);
this->SmallMapCenterOnCurrentPos(); this->SmallMapCenterOnCurrentPos();
this->FindWindowPlacementAndResize(desc); this->FindWindowPlacementAndResize(desc);
@ -845,14 +846,14 @@ public:
DrawPixelInfo new_dpi; DrawPixelInfo new_dpi;
/* Hide Enable all/Disable all buttons if is not industry type small map*/ /* Hide Enable all/Disable all buttons if is not industry type small map*/
this->SetWidgetHiddenState(SM_WIDGET_ENABLEINDUSTRIES, _smallmap_type != SMT_INDUSTRY); this->SetWidgetHiddenState(SM_WIDGET_ENABLEINDUSTRIES, this->map_type != SMT_INDUSTRY);
this->SetWidgetHiddenState(SM_WIDGET_DISABLEINDUSTRIES, _smallmap_type != SMT_INDUSTRY); this->SetWidgetHiddenState(SM_WIDGET_DISABLEINDUSTRIES, this->map_type != SMT_INDUSTRY);
/* draw the window */ /* draw the window */
SetDParam(0, STR_00E5_CONTOURS + _smallmap_type); SetDParam(0, STR_00E5_CONTOURS + this->map_type);
this->DrawWidgets(); this->DrawWidgets();
tbl = _legend_table[_smallmap_type]; tbl = _legend_table[this->map_type];
/* difference in window size */ /* difference in window size */
diff = (_industries_per_column > BASE_NB_PER_COLUMN) ? ((_industries_per_column - BASE_NB_PER_COLUMN) * BASE_NB_PER_COLUMN) + 1 : 0; diff = (_industries_per_column > BASE_NB_PER_COLUMN) ? ((_industries_per_column - BASE_NB_PER_COLUMN) * BASE_NB_PER_COLUMN) + 1 : 0;
@ -862,7 +863,7 @@ public:
y = y_org; y = y_org;
for (;;) { for (;;) {
if (_smallmap_type == SMT_INDUSTRY) { if (this->map_type == SMT_INDUSTRY) {
/* Industry name must be formated, since it's not in tiny font in the specs. /* Industry name must be formated, since it's not in tiny font in the specs.
* So, draw with a parameter and use the STR_SMALLMAP_INDUSTRY string, which is tiny font.*/ * So, draw with a parameter and use the STR_SMALLMAP_INDUSTRY string, which is tiny font.*/
SetDParam(0, tbl->legend); SetDParam(0, tbl->legend);
@ -897,7 +898,7 @@ public:
if (!FillDrawPixelInfo(&new_dpi, 3, 17, this->width - 28 + 22, this->height - 64 - 11 - diff)) return; if (!FillDrawPixelInfo(&new_dpi, 3, 17, this->width - 28 + 22, this->height - 64 - 11 - diff)) return;
this->DrawSmallMap(&new_dpi, _smallmap_type, _smallmap_show_towns); this->DrawSmallMap(&new_dpi);
} }
virtual void OnClick(Point pt, int widget) virtual void OnClick(Point pt, int widget)
@ -928,9 +929,9 @@ public:
case SM_WIDGET_ROUTES: // Show transport routes case SM_WIDGET_ROUTES: // Show transport routes
case SM_WIDGET_VEGETATION: // Show vegetation case SM_WIDGET_VEGETATION: // Show vegetation
case SM_WIDGET_OWNERS: // Show land owners case SM_WIDGET_OWNERS: // Show land owners
this->RaiseWidget(_smallmap_type + SM_WIDGET_CONTOUR); this->RaiseWidget(this->map_type + SM_WIDGET_CONTOUR);
_smallmap_type = widget - SM_WIDGET_CONTOUR; this->map_type = (SmallMapType)(widget - SM_WIDGET_CONTOUR);
this->LowerWidget(_smallmap_type + SM_WIDGET_CONTOUR); this->LowerWidget(this->map_type + SM_WIDGET_CONTOUR);
this->SetDirty(); this->SetDirty();
SndPlayFx(SND_15_BEEP); SndPlayFx(SND_15_BEEP);
@ -944,8 +945,8 @@ public:
break; break;
case SM_WIDGET_TOGGLETOWNNAME: // Toggle town names case SM_WIDGET_TOGGLETOWNNAME: // Toggle town names
this->ToggleWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME); this->show_towns = !this->show_towns;
_smallmap_show_towns = this->IsWidgetLowered(SM_WIDGET_TOGGLETOWNNAME); this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, this->show_towns);
this->SetDirty(); this->SetDirty();
SndPlayFx(SND_15_BEEP); SndPlayFx(SND_15_BEEP);
@ -953,7 +954,7 @@ public:
case SM_WIDGET_LEGEND: // Legend case SM_WIDGET_LEGEND: // Legend
/* if industry type small map*/ /* if industry type small map*/
if (_smallmap_type == SMT_INDUSTRY) { if (this->map_type == SMT_INDUSTRY) {
/* if click on industries label, find right industry type and enable/disable it */ /* if click on industries label, find right industry type and enable/disable it */
Widget *wi = &this->widget[SM_WIDGET_LEGEND]; // label panel Widget *wi = &this->widget[SM_WIDGET_LEGEND]; // label panel
uint column = (pt.x - 4) / 123; uint column = (pt.x - 4) / 123;
@ -1076,6 +1077,9 @@ public:
} }
}; };
SmallMapWindow::SmallMapType SmallMapWindow::map_type = SMT_CONTOUR;
bool SmallMapWindow::show_towns = true;
static const WindowDesc _smallmap_desc = { static const WindowDesc _smallmap_desc = {
WDP_AUTO, WDP_AUTO, 350, 214, 446, 314, WDP_AUTO, WDP_AUTO, 350, 214, 446, 314,
WC_SMALLMAP, WC_NONE, WC_SMALLMAP, WC_NONE,