summaryrefslogtreecommitdiff
path: root/src/engine_gui.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-03-03 22:03:15 +0000
committerrubidium <rubidium@openttd.org>2007-03-03 22:03:15 +0000
commit35fde14a527e0381769d08422513e6746704e1fc (patch)
tree419b44d6e3973f9233c668259ab6c7a64273f449 /src/engine_gui.cpp
parentcf47f2a856d3365cd42eaa4b5e9f5e2095586172 (diff)
downloadopenttd-35fde14a527e0381769d08422513e6746704e1fc.tar.xz
(svn r9001) -Codechange: remove duplication of functions and strings with respect to the news of new vehicles.
Diffstat (limited to 'src/engine_gui.cpp')
-rw-r--r--src/engine_gui.cpp158
1 files changed, 36 insertions, 122 deletions
diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp
index 0975cc3d1..c63515826 100644
--- a/src/engine_gui.cpp
+++ b/src/engine_gui.cpp
@@ -20,23 +20,20 @@
static StringID GetEngineCategoryName(EngineID engine)
{
- if (engine < NUM_TRAIN_ENGINES) {
- switch (RailVehInfo(engine)->railtype) {
- case RAILTYPE_RAIL: return STR_8102_RAILROAD_LOCOMOTIVE;
- case RAILTYPE_ELECTRIC: return STR_8102_RAILROAD_LOCOMOTIVE;
- case RAILTYPE_MONO: return STR_8106_MONORAIL_LOCOMOTIVE;
- case RAILTYPE_MAGLEV: return STR_8107_MAGLEV_LOCOMOTIVE;
- default: NOT_REACHED();
- }
+ switch (GetEngine(engine)->type) {
+ default: NOT_REACHED();
+ case VEH_Road: return STR_8103_ROAD_VEHICLE;
+ case VEH_Aircraft: return STR_8104_AIRCRAFT;
+ case VEH_Ship: return STR_8105_SHIP;
+ case VEH_Train:
+ switch (RailVehInfo(engine)->railtype) {
+ default: NOT_REACHED();
+ case RAILTYPE_RAIL: return STR_8102_RAILROAD_LOCOMOTIVE;
+ case RAILTYPE_ELECTRIC: return STR_8102_RAILROAD_LOCOMOTIVE;
+ case RAILTYPE_MONO: return STR_8106_MONORAIL_LOCOMOTIVE;
+ case RAILTYPE_MAGLEV: return STR_8107_MAGLEV_LOCOMOTIVE;
+ }
}
-
- if (engine < NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES)
- return STR_8103_ROAD_VEHICLE;
-
- if (engine < NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES)
- return STR_8105_SHIP;
-
- return STR_8104_AIRCRAFT;
}
static const Widget _engine_preview_widgets[] = {
@@ -62,10 +59,10 @@ static void DrawShipEngineInfo(EngineID engine, int x, int y, int maxw);
static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw);
static const DrawEngineInfo _draw_engine_list[4] = {
- {DrawTrainEngine,DrawTrainEngineInfo},
- {DrawRoadVehEngine,DrawRoadVehEngineInfo},
- {DrawShipEngine,DrawShipEngineInfo},
- {DrawAircraftEngine,DrawAircraftEngineInfo},
+ { DrawTrainEngine, DrawTrainEngineInfo },
+ { DrawRoadVehEngine, DrawRoadVehEngineInfo },
+ { DrawShipEngine, DrawShipEngineInfo },
+ { DrawAircraftEngine, DrawAircraftEngineInfo },
};
static void EnginePreviewWndProc(Window *w, WindowEvent *e)
@@ -83,10 +80,7 @@ static void EnginePreviewWndProc(Window *w, WindowEvent *e)
DrawStringCentered(w->width >> 1, 80, GetCustomEngineName(engine), 0x10);
- (dei = _draw_engine_list,engine < NUM_TRAIN_ENGINES) ||
- (dei++,engine < NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES) ||
- (dei++,engine < NUM_TRAIN_ENGINES + NUM_ROAD_ENGINES + NUM_SHIP_ENGINES) ||
- (dei++, true);
+ dei = &_draw_engine_list[GetEngine(engine)->type];
width = w->width;
dei->engine_proc(width >> 1, 100, engine, 0);
@@ -142,35 +136,6 @@ static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
DrawStringMultiCenter(x, y, STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER, maxw);
}
-void DrawNewsNewTrainAvail(Window *w)
-{
- EngineID engine;
-
- DrawNewsBorder(w);
-
- engine = WP(w,news_d).ni->string_id;
- SetDParam(0, GetEngineCategoryName(engine));
- DrawStringMultiCenter(w->width >> 1, 20, STR_8859_NEW_NOW_AVAILABLE, w->width - 2);
-
- GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
-
- SetDParam(0, GetCustomEngineName(engine));
- DrawStringMultiCenter(w->width >> 1, 57, STR_885A, w->width - 2);
-
- DrawTrainEngine(w->width >> 1, 88, engine, 0);
- GfxFillRect(25, 56, w->width - 56, 112, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
- DrawTrainEngineInfo(engine, w->width >> 1, 129, w->width - 52);
-}
-
-StringID GetNewsStringNewTrainAvail(const NewsItem *ni)
-{
- EngineID engine = ni->string_id;
- SetDParam(0, STR_8859_NEW_NOW_AVAILABLE);
- SetDParam(1, GetEngineCategoryName(engine));
- SetDParam(2, GetCustomEngineName(engine));
- return STR_02B6;
-}
-
static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw)
{
const AircraftVehicleInfo *avi = AircraftVehInfo(engine);
@@ -183,33 +148,6 @@ static void DrawAircraftEngineInfo(EngineID engine, int x, int y, int maxw)
DrawStringMultiCenter(x, y, STR_A02E_COST_MAX_SPEED_CAPACITY, maxw);
}
-void DrawNewsNewAircraftAvail(Window *w)
-{
- EngineID engine;
-
- DrawNewsBorder(w);
-
- engine = WP(w,news_d).ni->string_id;
-
- DrawStringMultiCenter(w->width >> 1, 20, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE, w->width - 2);
- GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
-
- SetDParam(0, GetCustomEngineName(engine));
- DrawStringMultiCenter(w->width >> 1, 57, STR_A02D, w->width - 2);
-
- DrawAircraftEngine(w->width >> 1, 93, engine, 0);
- GfxFillRect(25, 56, w->width - 56, 110, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
- DrawAircraftEngineInfo(engine, w->width >> 1, 131, w->width - 52);
-}
-
-StringID GetNewsStringNewAircraftAvail(const NewsItem *ni)
-{
- EngineID engine = ni->string_id;
- SetDParam(0, STR_A02C_NEW_AIRCRAFT_NOW_AVAILABLE);
- SetDParam(2, GetCustomEngineName(engine));
- return STR_02B6;
-}
-
static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
{
const RoadVehicleInfo *rvi = RoadVehInfo(engine);
@@ -223,32 +161,6 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
DrawStringMultiCenter(x, y, STR_902A_COST_SPEED_RUNNING_COST, maxw);
}
-void DrawNewsNewRoadVehAvail(Window *w)
-{
- EngineID engine;
-
- DrawNewsBorder(w);
-
- engine = WP(w,news_d).ni->string_id;
- DrawStringMultiCenter(w->width >> 1, 20, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE, w->width - 2);
- GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
-
- SetDParam(0, GetCustomEngineName(engine));
- DrawStringMultiCenter(w->width >> 1, 57, STR_9029, w->width - 2);
-
- DrawRoadVehEngine(w->width >> 1, 88, engine, 0);
- GfxFillRect(25, 56, w->width - 56, 112, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
- DrawRoadVehEngineInfo(engine, w->width >> 1, 129, w->width - 52);
-}
-
-StringID GetNewsStringNewRoadVehAvail(const NewsItem *ni)
-{
- EngineID engine = ni->string_id;
- SetDParam(0, STR_9028_NEW_ROAD_VEHICLE_NOW_AVAILABLE);
- SetDParam(2, GetCustomEngineName(engine));
- return STR_02B6;
-}
-
static void DrawShipEngineInfo(EngineID engine, int x, int y, int maxw)
{
const ShipVehicleInfo *svi = ShipVehInfo(engine);
@@ -260,29 +172,31 @@ static void DrawShipEngineInfo(EngineID engine, int x, int y, int maxw)
DrawStringMultiCenter(x, y, STR_982E_COST_MAX_SPEED_CAPACITY, maxw);
}
-void DrawNewsNewShipAvail(Window *w)
+
+StringID GetNewsStringNewVehicleAvail(const NewsItem *ni)
{
- EngineID engine;
+ EngineID engine = ni->string_id;
+ SetDParam(0, GetEngineCategoryName(engine));
+ SetDParam(1, GetCustomEngineName(engine));
+ return STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE;
+}
+void DrawNewsNewVehicleAvail(Window *w)
+{
DrawNewsBorder(w);
- engine = WP(w,news_d).ni->string_id;
+ EngineID engine = WP(w, news_d).ni->string_id;
+ const DrawEngineInfo *dei = &_draw_engine_list[GetEngine(engine)->type];
+
+ SetDParam(0, GetEngineCategoryName(engine));
+ DrawStringMultiCenter(w->width >> 1, 20, STR_NEW_VEHICLE_NOW_AVAILABLE, w->width - 2);
- DrawStringMultiCenter(w->width >> 1, 20, STR_982C_NEW_SHIP_NOW_AVAILABLE, w->width - 2);
GfxFillRect(25, 56, w->width - 25, w->height - 2, 10);
SetDParam(0, GetCustomEngineName(engine));
- DrawStringMultiCenter(w->width >> 1, 57, STR_982D, w->width - 2);
-
- DrawShipEngine(w->width >> 1, 93, engine, 0);
- GfxFillRect(25, 56, w->width - 56, 110, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
- DrawShipEngineInfo(engine, w->width >> 1, 131, w->width - 52);
-}
+ DrawStringMultiCenter(w->width >> 1, 57, STR_NEW_VEHICLE_TYPE, w->width - 2);
-StringID GetNewsStringNewShipAvail(const NewsItem *ni)
-{
- EngineID engine = ni->string_id;
- SetDParam(0, STR_982C_NEW_SHIP_NOW_AVAILABLE);
- SetDParam(2, GetCustomEngineName(engine));
- return STR_02B6;
+ dei->engine_proc(w->width >> 1, 88, engine, 0);
+ GfxFillRect(25, 56, w->width - 56, 112, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE));
+ dei->info_proc(engine, w->width >> 1, 129, w->width - 52);
}