summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/smallmap_gui.cpp48
1 files changed, 26 insertions, 22 deletions
diff --git a/src/smallmap_gui.cpp b/src/smallmap_gui.cpp
index 4dedb59b6..7cd4450be 100644
--- a/src/smallmap_gui.cpp
+++ b/src/smallmap_gui.cpp
@@ -55,8 +55,6 @@ static const Widget _smallmap_widgets[] = {
{ WIDGETS_END},
};
-static int _smallmap_type;
-static bool _smallmap_show_towns = true;
/* number of used industries */
static int _smallmap_industry_count;
/* number of industries per column*/
@@ -571,6 +569,9 @@ class SmallMapWindow : public Window
BASE_NB_PER_COLUMN = 6,
};
+ static SmallMapType map_type;
+ static bool show_towns;
+
int32 scroll_x;
int32 scroll_y;
int32 subscroll;
@@ -591,7 +592,7 @@ public:
* @param type type of map requested (vegetation, owners, routes, etc)
* @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();
DrawPixelInfo *old_dpi;
@@ -608,7 +609,7 @@ public:
GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, 0);
/* setup owner table */
- if (type == SMT_OWNER) {
+ if (this->map_type == SMT_OWNER) {
const Player *p;
/* fill with some special colors */
@@ -673,7 +674,7 @@ public:
/* number of lines */
reps = (dpi->height - y + 1) / 2;
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:
@@ -691,7 +692,7 @@ public:
}
/* draw vehicles? */
- if (type == SMT_CONTOUR || type == SMT_VEHICLES) {
+ if (this->map_type == SMT_CONTOUR || this->map_type == SMT_VEHICLES) {
Vehicle *v;
bool skip;
byte color;
@@ -729,7 +730,7 @@ public:
}
/* 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 */
blitter->SetPixel(dpi->dst_ptr, x, y, color);
@@ -738,7 +739,7 @@ public:
}
}
- if (show_towns) {
+ if (this->show_towns) {
const Town *t;
FOR_ALL_TOWNS(t) {
@@ -830,8 +831,8 @@ public:
}
}
- this->LowerWidget(_smallmap_type + SM_WIDGET_CONTOUR);
- this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, _smallmap_show_towns);
+ this->LowerWidget(this->map_type + SM_WIDGET_CONTOUR);
+ this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, this->show_towns);
this->SmallMapCenterOnCurrentPos();
this->FindWindowPlacementAndResize(desc);
@@ -845,14 +846,14 @@ public:
DrawPixelInfo new_dpi;
/* 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_DISABLEINDUSTRIES, _smallmap_type != SMT_INDUSTRY);
+ this->SetWidgetHiddenState(SM_WIDGET_ENABLEINDUSTRIES, this->map_type != SMT_INDUSTRY);
+ this->SetWidgetHiddenState(SM_WIDGET_DISABLEINDUSTRIES, this->map_type != SMT_INDUSTRY);
/* draw the window */
- SetDParam(0, STR_00E5_CONTOURS + _smallmap_type);
+ SetDParam(0, STR_00E5_CONTOURS + this->map_type);
this->DrawWidgets();
- tbl = _legend_table[_smallmap_type];
+ tbl = _legend_table[this->map_type];
/* 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;
@@ -862,7 +863,7 @@ public:
y = y_org;
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.
* So, draw with a parameter and use the STR_SMALLMAP_INDUSTRY string, which is tiny font.*/
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;
- this->DrawSmallMap(&new_dpi, _smallmap_type, _smallmap_show_towns);
+ this->DrawSmallMap(&new_dpi);
}
virtual void OnClick(Point pt, int widget)
@@ -928,9 +929,9 @@ public:
case SM_WIDGET_ROUTES: // Show transport routes
case SM_WIDGET_VEGETATION: // Show vegetation
case SM_WIDGET_OWNERS: // Show land owners
- this->RaiseWidget(_smallmap_type + SM_WIDGET_CONTOUR);
- _smallmap_type = widget - SM_WIDGET_CONTOUR;
- this->LowerWidget(_smallmap_type + SM_WIDGET_CONTOUR);
+ this->RaiseWidget(this->map_type + SM_WIDGET_CONTOUR);
+ this->map_type = (SmallMapType)(widget - SM_WIDGET_CONTOUR);
+ this->LowerWidget(this->map_type + SM_WIDGET_CONTOUR);
this->SetDirty();
SndPlayFx(SND_15_BEEP);
@@ -944,8 +945,8 @@ public:
break;
case SM_WIDGET_TOGGLETOWNNAME: // Toggle town names
- this->ToggleWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME);
- _smallmap_show_towns = this->IsWidgetLowered(SM_WIDGET_TOGGLETOWNNAME);
+ this->show_towns = !this->show_towns;
+ this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, this->show_towns);
this->SetDirty();
SndPlayFx(SND_15_BEEP);
@@ -953,7 +954,7 @@ public:
case SM_WIDGET_LEGEND: // Legend
/* 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 */
Widget *wi = &this->widget[SM_WIDGET_LEGEND]; // label panel
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 = {
WDP_AUTO, WDP_AUTO, 350, 214, 446, 314,
WC_SMALLMAP, WC_NONE,