autoreplace_gui.cpp File Reference

#include "stdafx.h"
#include "openttd.h"
#include "debug.h"
#include "gui.h"
#include "command_func.h"
#include "variables.h"
#include "vehicle_gui.h"
#include "newgrf_engine.h"
#include "group.h"
#include "rail.h"
#include "strings_func.h"
#include "window_func.h"
#include "vehicle_func.h"
#include "autoreplace_func.h"
#include "gfx_func.h"
#include "player_func.h"
#include "widgets/dropdown_func.h"
#include "table/sprites.h"
#include "table/strings.h"

Go to the source code of this file.

Enumerations

enum  ReplaceVehicleWindowWidgets {
  RVW_WIDGET_LEFT_DETAILS = 3, RVW_WIDGET_START_REPLACE, RVW_WIDGET_INFO_TAB, RVW_WIDGET_STOP_REPLACE,
  RVW_WIDGET_LEFT_MATRIX, RVW_WIDGET_LEFT_SCROLLBAR, RVW_WIDGET_RIGHT_MATRIX, RVW_WIDGET_RIGHT_SCROLLBAR,
  RVW_WIDGET_RIGHT_DETAILS, RVW_WIDGET_TRAIN_ENGINEWAGON_TOGGLE, RVW_WIDGET_TRAIN_FLUFF_LEFT, RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN,
  RVW_WIDGET_TRAIN_FLUFF_RIGHT, RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE
}

Functions

static int CDECL TrainEngineNumberSorter (const void *a, const void *b)
void InitializeVehiclesGuiList ()
void InvalidateAutoreplaceWindow (EngineID e, GroupID id_g)
 Rebuild the left autoreplace list if an engine is removed or added.
void AddRemoveEngineFromAutoreplaceAndBuildWindows (VehicleType type)
 When an engine is made buildable or is removed from being buildable, add/remove it from the build/autoreplace lists.
static CargoID EngineCargo (EngineID engine)
 Get the default cargo type for an engine.
static bool GenerateReplaceRailList (EngineID e, bool draw_left, bool show_engines)
 Figure out if an engine should be added to a list.
static bool EnginesGotCargoInCommon (EngineID engine_a, EngineID engine_b)
 Figure out if two engines got at least one type of cargo in common (refitting if needed).
static void GenerateReplaceVehList (Window *w, bool draw_left)
 Generate a list.
static void GenerateLists (Window *w)
 Generate the lists.
void DrawEngineList (VehicleType type, int x, int y, const EngineList eng_list, uint16 min, uint16 max, EngineID selected_id, bool show_count, GroupID selected_group)
 Engine drawing loop.
static void ReplaceVehicleWndProc (Window *w, WindowEvent *e)
void ShowReplaceGroupVehicleWindow (GroupID id_g, VehicleType vehicletype)

Variables

static RailType _railtype_selected_in_replace_gui
static bool _rebuild_left_list
static bool _rebuild_right_list
static const StringID _rail_types_list []
static const Widget _replace_rail_vehicle_widgets []
static const Widget _replace_road_vehicle_widgets []
static const Widget _replace_ship_aircraft_vehicle_widgets []
static const WindowDesc _replace_rail_vehicle_desc
static const WindowDesc _replace_road_vehicle_desc
static const WindowDesc _replace_ship_aircraft_vehicle_desc


Detailed Description

Definition in file autoreplace_gui.cpp.


Function Documentation

void AddRemoveEngineFromAutoreplaceAndBuildWindows ( VehicleType  type  ) 

When an engine is made buildable or is removed from being buildable, add/remove it from the build/autoreplace lists.

Parameters:
type The type of engine

Definition at line 101 of file autoreplace_gui.cpp.

void DrawEngineList ( VehicleType  type,
int  x,
int  y,
const EngineList  eng_list,
uint16  min,
uint16  max,
EngineID  selected_id,
bool  show_count,
GroupID  selected_group 
)

Engine drawing loop.

Parameters:
type Type of vehicle (VEH_*)
x,y Where should the list start
eng_list What engines to draw
min where to start in the list
max where in the list to end
selected_id what engine to highlight as selected, if any
show_count Display the number of vehicles (used by autoreplace)

Definition at line 946 of file build_vehicle_gui.cpp.

References EngList_Count(), GetEnginePalette(), and GetGroupNumEngines().

static CargoID EngineCargo ( EngineID  engine  )  [static]

Get the default cargo type for an engine.

Parameters:
engine the EngineID to get the cargo for
Returns:
the cargo type carried by the engine (CT_INVALID if engine got no cargo capacity)

Definition at line 113 of file autoreplace_gui.cpp.

Referenced by EnginesGotCargoInCommon().

static bool EnginesGotCargoInCommon ( EngineID  engine_a,
EngineID  engine_b 
) [static]

Figure out if two engines got at least one type of cargo in common (refitting if needed).

Parameters:
engine_a one of the EngineIDs
engine_b the other EngineID
Returns:
true if they can both carry the same type of cargo (or at least one of them got no capacity at all)

Definition at line 157 of file autoreplace_gui.cpp.

References CanRefitTo(), and EngineCargo().

Referenced by GenerateReplaceVehList().

static void GenerateLists ( Window *  w  )  [static]

Generate the lists.

Parameters:
w Window containing the lists

Definition at line 213 of file autoreplace_gui.cpp.

References EngList_Count(), EngList_RemoveAll(), and GenerateReplaceVehList().

static bool GenerateReplaceRailList ( EngineID  e,
bool  draw_left,
bool  show_engines 
) [static]

Figure out if an engine should be added to a list.

Parameters:
e The EngineID
draw_left If true, then the left list is drawn (the engines specific to the railtype you selected)
show_engines if truem then locomotives are drawn, else wagons (never both)
Returns:
true if the engine should be in the list (based on this check)

Definition at line 134 of file autoreplace_gui.cpp.

References IsCompatibleRail(), and RAILVEH_WAGON.

Referenced by GenerateReplaceVehList().

static void GenerateReplaceVehList ( Window *  w,
bool  draw_left 
) [static]

Generate a list.

Parameters:
w Window, that contains the list
draw_left true if generating the left list, otherwise false

Definition at line 174 of file autoreplace_gui.cpp.

References EF_ROAD_TRAM, EngineReplacementForPlayer(), EnginesGotCargoInCommon(), EngList_Add(), EngList_RemoveAll(), EngList_Sort(), GenerateReplaceRailList(), GetGroupNumEngines(), HasBit(), and IsEngineBuildable().

Referenced by GenerateLists().

void InvalidateAutoreplaceWindow ( EngineID  e,
GroupID  id_g 
)

Rebuild the left autoreplace list if an engine is removed or added.

Parameters:
e Engine to check if it is removed or added
id_g The group the engine belongs to Note: this function only works if it is called either
  • when a new vehicle is build, but before it's counted in num_engines
  • when a vehicle is deleted and after it's substracted from num_engines
  • when not changing the count (used when changing replace orders)

Definition at line 80 of file autoreplace_gui.cpp.

References GetGroupNumEngines().

Referenced by CmdBuildAircraft(), CmdBuildRailVehicle(), CmdBuildRailWagon(), CmdBuildRoadVeh(), CmdBuildShip(), and CmdSetAutoReplace().


Variable Documentation

const StringID _rail_types_list[] [static]

Initial value:

 {
  STR_RAIL_VEHICLES,
  STR_ELRAIL_VEHICLES,
  STR_MONORAIL_VEHICLES,
  STR_MAGLEV_VEHICLES,
  INVALID_STRING_ID
}

Definition at line 31 of file autoreplace_gui.cpp.

const WindowDesc _replace_rail_vehicle_desc [static]

Initial value:

 {
  WDP_AUTO, WDP_AUTO, 456, 252, 456, 252,
  WC_REPLACE_VEHICLE, WC_NONE,
  WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
  _replace_rail_vehicle_widgets,
  ReplaceVehicleWndProc
}

Definition at line 506 of file autoreplace_gui.cpp.

const Widget _replace_rail_vehicle_widgets[] [static]

Initial value:

 {
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,       STR_018B_CLOSE_WINDOW},
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE, STR_018C_WINDOW_TITLE_DRAG_THIS},
{  WWT_STICKYBOX,   RESIZE_NONE,    14,   444,   455,     0,    13, STR_NULL,       STR_STICKY_BUTTON},
{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,   126,   227, 0x0,            STR_NULL},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   240,   251, STR_REPLACE_VEHICLES_START, STR_REPLACE_HELP_START_BUTTON},
{      WWT_PANEL,     RESIZE_TB,    14,   139,   316,   228,   239, 0x0,            STR_REPLACE_HELP_REPLACE_INFO_TAB},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   306,   443,   240,   251, STR_REPLACE_VEHICLES_STOP,  STR_REPLACE_HELP_STOP_BUTTON},
{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,   125, 0x801,          STR_REPLACE_HELP_LEFT_ARRAY},
{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,   125, STR_NULL,       STR_0190_SCROLL_BAR_SCROLLS_LIST},
{     WWT_MATRIX, RESIZE_BOTTOM,    14,   228,   443,    14,   125, 0x801,          STR_REPLACE_HELP_RIGHT_ARRAY},
{ WWT_SCROLL2BAR, RESIZE_BOTTOM,    14,   444,   455,    14,   125, STR_NULL,       STR_0190_SCROLL_BAR_SCROLLS_LIST},
{      WWT_PANEL,     RESIZE_TB,    14,   228,   455,   126,   227, 0x0,            STR_NULL},

{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   228,   239, STR_REPLACE_ENGINE_WAGON_SELECT,       STR_REPLACE_ENGINE_WAGON_SELECT_HELP},  
{      WWT_PANEL,     RESIZE_TB,    14,   139,   153,   240,   251, 0x0,            STR_NULL},
{   WWT_DROPDOWN,     RESIZE_TB,    14,   154,   289,   240,   251, 0x0,            STR_REPLACE_HELP_RAILTYPE},
{      WWT_PANEL,     RESIZE_TB,    14,   290,   305,   240,   251, 0x0,            STR_NULL},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   317,   455,   228,   239, STR_REPLACE_REMOVE_WAGON,       STR_REPLACE_REMOVE_WAGON_HELP},

{  WWT_RESIZEBOX,     RESIZE_TB,    14,   444,   455,   240,   251, STR_NULL,       STR_RESIZE_BUTTON},
{   WIDGETS_END},
}

Definition at line 448 of file autoreplace_gui.cpp.

const WindowDesc _replace_road_vehicle_desc [static]

Initial value:

 {
  WDP_AUTO, WDP_AUTO, 456, 230, 456, 230,
  WC_REPLACE_VEHICLE, WC_NONE,
  WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
  _replace_road_vehicle_widgets,
  ReplaceVehicleWndProc
}

Definition at line 514 of file autoreplace_gui.cpp.

const Widget _replace_road_vehicle_widgets[] [static]

Initial value:

 {
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                    STR_018B_CLOSE_WINDOW},
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE,  STR_018C_WINDOW_TITLE_DRAG_THIS},
{  WWT_STICKYBOX,   RESIZE_NONE,    14,   444,   455,     0,    13, STR_NULL,                    STR_STICKY_BUTTON},
{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,   126,   217, 0x0,                         STR_NULL},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   218,   229, STR_REPLACE_VEHICLES_START,  STR_REPLACE_HELP_START_BUTTON},
{      WWT_PANEL,     RESIZE_TB,    14,   139,   305,   218,   229, 0x0,                         STR_REPLACE_HELP_REPLACE_INFO_TAB},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   306,   443,   218,   229, STR_REPLACE_VEHICLES_STOP,   STR_REPLACE_HELP_STOP_BUTTON},
{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,   125, 0x801,                       STR_REPLACE_HELP_LEFT_ARRAY},
{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,   125, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
{     WWT_MATRIX, RESIZE_BOTTOM,    14,   228,   443,    14,   125, 0x801,                       STR_REPLACE_HELP_RIGHT_ARRAY},
{ WWT_SCROLL2BAR, RESIZE_BOTTOM,    14,   444,   455,    14,   125, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
{      WWT_PANEL,     RESIZE_TB,    14,   228,   455,   126,   217, 0x0,                         STR_NULL},
{  WWT_RESIZEBOX,     RESIZE_TB,    14,   444,   455,   218,   229, STR_NULL,                    STR_RESIZE_BUTTON},
{   WIDGETS_END},
}

Definition at line 472 of file autoreplace_gui.cpp.

const WindowDesc _replace_ship_aircraft_vehicle_desc [static]

Initial value:

 {
  WDP_AUTO, WDP_AUTO, 456, 214, 456, 214,
  WC_REPLACE_VEHICLE, WC_NONE,
  WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
  _replace_ship_aircraft_vehicle_widgets,
  ReplaceVehicleWndProc
}

Definition at line 522 of file autoreplace_gui.cpp.

const Widget _replace_ship_aircraft_vehicle_widgets[] [static]

Initial value:

 {
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,                    STR_018B_CLOSE_WINDOW},
{    WWT_CAPTION,   RESIZE_NONE,    14,    11,   443,     0,    13, STR_REPLACE_VEHICLES_WHITE,  STR_018C_WINDOW_TITLE_DRAG_THIS},
{  WWT_STICKYBOX,   RESIZE_NONE,    14,   444,   455,     0,    13, STR_NULL,                    STR_STICKY_BUTTON},
{      WWT_PANEL,     RESIZE_TB,    14,     0,   227,   110,   201, 0x0,                         STR_NULL},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,   138,   202,   213, STR_REPLACE_VEHICLES_START,  STR_REPLACE_HELP_START_BUTTON},
{      WWT_PANEL,     RESIZE_TB,    14,   139,   305,   202,   213, 0x0,                         STR_REPLACE_HELP_REPLACE_INFO_TAB},
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   306,   443,   202,   213, STR_REPLACE_VEHICLES_STOP,   STR_REPLACE_HELP_STOP_BUTTON},
{     WWT_MATRIX, RESIZE_BOTTOM,    14,     0,   215,    14,   109, 0x401,                       STR_REPLACE_HELP_LEFT_ARRAY},
{  WWT_SCROLLBAR, RESIZE_BOTTOM,    14,   216,   227,    14,   109, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
{     WWT_MATRIX, RESIZE_BOTTOM,    14,   228,   443,    14,   109, 0x401,                       STR_REPLACE_HELP_RIGHT_ARRAY},
{ WWT_SCROLL2BAR, RESIZE_BOTTOM,    14,   444,   455,    14,   109, STR_NULL,                    STR_0190_SCROLL_BAR_SCROLLS_LIST},
{      WWT_PANEL,     RESIZE_TB,    14,   228,   455,   110,   201, 0x0,                         STR_NULL},
{  WWT_RESIZEBOX,     RESIZE_TB,    14,   444,   455,   202,   213, STR_NULL,                    STR_RESIZE_BUTTON},
{   WIDGETS_END},
}

Definition at line 489 of file autoreplace_gui.cpp.


Generated on Wed Oct 1 17:03:26 2008 for openttd by  doxygen 1.5.6