mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r12862) -Codechange: reduce code duplication for VehicleType -> WindowClass lookup
This commit is contained in:
parent
48eda2b6ef
commit
9fc355fca5
|
@ -117,7 +117,6 @@ struct Aircraft : public Vehicle {
|
|||
void MarkDirty();
|
||||
void UpdateDeltaXY(Direction direction);
|
||||
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; }
|
||||
WindowClass GetVehicleListWindowClass() const { return WC_AIRCRAFT_LIST; }
|
||||
bool IsPrimaryVehicle() const { return IsNormalAircraft(this); }
|
||||
SpriteID GetImage(Direction direction) const;
|
||||
int GetDisplaySpeed() const { return this->cur_speed * 10 / 16; }
|
||||
|
|
|
@ -1781,7 +1781,7 @@ static void LoadUnloadVehicle(Vehicle *v, int *cargo_left)
|
|||
}
|
||||
|
||||
if (result != 0) {
|
||||
InvalidateWindow(v->GetVehicleListWindowClass(), v->owner);
|
||||
InvalidateWindow(GetWindowClassForVehicleType(v->type), v->owner);
|
||||
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
|
||||
|
||||
st->MarkTilesDirty(true);
|
||||
|
|
|
@ -70,18 +70,6 @@ void InitializeGroup(void)
|
|||
}
|
||||
|
||||
|
||||
static WindowClass GetWCForVT(VehicleType vt)
|
||||
{
|
||||
switch (vt) {
|
||||
default:
|
||||
case VEH_TRAIN: return WC_TRAINS_LIST;
|
||||
case VEH_ROAD: return WC_ROADVEH_LIST;
|
||||
case VEH_SHIP: return WC_SHIPS_LIST;
|
||||
case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create a new vehicle group.
|
||||
* @param tile unused
|
||||
|
@ -100,7 +88,7 @@ CommandCost CmdCreateGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
g->replace_protection = false;
|
||||
g->vehicle_type = vt;
|
||||
|
||||
InvalidateWindowData(GetWCForVT(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
@ -149,7 +137,7 @@ CommandCost CmdDeleteGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
DeleteWindowById(WC_REPLACE_VEHICLE, g->vehicle_type);
|
||||
delete g;
|
||||
|
||||
InvalidateWindowData(GetWCForVT(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
@ -191,7 +179,7 @@ CommandCost CmdRenameGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
|||
/* Assign the new one */
|
||||
g->name = strdup(_cmd_text);
|
||||
|
||||
InvalidateWindowData(GetWCForVT(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
@ -240,7 +228,7 @@ CommandCost CmdAddVehicleGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p
|
|||
|
||||
/* Update the Replace Vehicle Windows */
|
||||
InvalidateWindow(WC_REPLACE_VEHICLE, v->type);
|
||||
InvalidateWindowData(GetWCForVT(v->type), (v->type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(v->type), (v->type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
@ -276,7 +264,7 @@ CommandCost CmdAddSharedVehicleGroup(TileIndex tile, uint32 flags, uint32 p1, ui
|
|||
}
|
||||
}
|
||||
|
||||
InvalidateWindowData(GetWCForVT(type), (type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
@ -312,7 +300,7 @@ CommandCost CmdRemoveAllVehiclesGroup(TileIndex tile, uint32 flags, uint32 p1, u
|
|||
}
|
||||
}
|
||||
|
||||
InvalidateWindowData(GetWCForVT(type), (type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
@ -337,7 +325,7 @@ CommandCost CmdSetGroupReplaceProtection(TileIndex tile, uint32 flags, uint32 p1
|
|||
if (flags & DC_EXEC) {
|
||||
g->replace_protection = HasBit(p2, 0);
|
||||
|
||||
InvalidateWindowData(GetWCForVT(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
|
|
@ -1663,7 +1663,7 @@ bool ProcessOrders(Vehicle *v)
|
|||
|
||||
case VEH_AIRCRAFT:
|
||||
case VEH_SHIP:
|
||||
InvalidateWindowClasses(v->GetVehicleListWindowClass());
|
||||
InvalidateWindowClasses(GetWindowClassForVehicleType(v->type));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,6 @@ struct RoadVehicle : public Vehicle {
|
|||
void MarkDirty();
|
||||
void UpdateDeltaXY(Direction direction);
|
||||
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_ROADVEH_INC : EXPENSES_ROADVEH_RUN; }
|
||||
WindowClass GetVehicleListWindowClass() const { return WC_ROADVEH_LIST; }
|
||||
bool IsPrimaryVehicle() const { return IsRoadVehFront(this); }
|
||||
SpriteID GetImage(Direction direction) const;
|
||||
int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
|
||||
|
|
|
@ -32,7 +32,6 @@ struct Ship: public Vehicle {
|
|||
void MarkDirty();
|
||||
void UpdateDeltaXY(Direction direction);
|
||||
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_SHIP_INC : EXPENSES_SHIP_RUN; }
|
||||
WindowClass GetVehicleListWindowClass() const { return WC_SHIPS_LIST; }
|
||||
void PlayLeaveStationSound() const;
|
||||
bool IsPrimaryVehicle() const { return true; }
|
||||
SpriteID GetImage(Direction direction) const;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "yapf/yapf.h"
|
||||
#include "cargotype.h"
|
||||
#include "roadveh.h"
|
||||
#include "window_type.h"
|
||||
#include "station_gui.h"
|
||||
#include "zoom_func.h"
|
||||
#include "functions.h"
|
||||
|
|
|
@ -293,7 +293,6 @@ struct Train : public Vehicle {
|
|||
void MarkDirty();
|
||||
void UpdateDeltaXY(Direction direction);
|
||||
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_TRAIN_INC : EXPENSES_TRAIN_RUN; }
|
||||
WindowClass GetVehicleListWindowClass() const { return WC_TRAINS_LIST; }
|
||||
void PlayLeaveStationSound() const;
|
||||
bool IsPrimaryVehicle() const { return IsFrontEngine(this); }
|
||||
SpriteID GetImage(Direction direction) const;
|
||||
|
|
|
@ -2546,7 +2546,7 @@ void Vehicle::BeginLoading()
|
|||
|
||||
VehiclePayment(this);
|
||||
|
||||
InvalidateWindow(this->GetVehicleListWindowClass(), this->owner);
|
||||
InvalidateWindow(GetWindowClassForVehicleType(this->type), this->owner);
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, this->index, VVW_WIDGET_START_STOP_VEH);
|
||||
InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
|
||||
InvalidateWindow(WC_STATION_VIEW, this->last_station_visited);
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include "road_type.h"
|
||||
#include "cargo_type.h"
|
||||
#include "direction_type.h"
|
||||
#include "window_type.h"
|
||||
#include "gfx_type.h"
|
||||
#include "command_type.h"
|
||||
#include "date_type.h"
|
||||
|
@ -370,11 +369,6 @@ public:
|
|||
*/
|
||||
virtual ExpensesType GetExpenseType(bool income) const { return EXPENSES_OTHER; }
|
||||
|
||||
/**
|
||||
* Invalidates the vehicle list window of this type of vehicle
|
||||
*/
|
||||
virtual WindowClass GetVehicleListWindowClass() const { return WC_NONE; }
|
||||
|
||||
/**
|
||||
* Play the sound associated with leaving the station
|
||||
*/
|
||||
|
|
|
@ -99,6 +99,22 @@ static inline uint GetVehicleListHeight(VehicleType type)
|
|||
return (type == VEH_TRAIN || type == VEH_ROAD) ? 14 : 24;
|
||||
}
|
||||
|
||||
/** Get WindowClass for vehicle list of given vehicle type
|
||||
* @param vt vehicle type to check
|
||||
* @return corresponding window class
|
||||
* @note works only for player buildable vehicle types
|
||||
*/
|
||||
static inline WindowClass GetWindowClassForVehicleType(VehicleType vt)
|
||||
{
|
||||
switch (vt) {
|
||||
default: NOT_REACHED();
|
||||
case VEH_TRAIN: return WC_TRAINS_LIST;
|
||||
case VEH_ROAD: return WC_ROADVEH_LIST;
|
||||
case VEH_SHIP: return WC_SHIPS_LIST;
|
||||
case VEH_AIRCRAFT: return WC_AIRCRAFT_LIST;
|
||||
}
|
||||
}
|
||||
|
||||
/* Unified window procedure */
|
||||
void ShowVehicleViewWindow(const Vehicle *v);
|
||||
|
||||
|
|
Loading…
Reference in New Issue