station_gui.cpp File Reference

#include "stdafx.h"
#include "openttd.h"
#include "debug.h"
#include "gui.h"
#include "window_gui.h"
#include "textbuf_gui.h"
#include "station.h"
#include "player_func.h"
#include "economy_func.h"
#include "town.h"
#include "command_func.h"
#include "variables.h"
#include "vehicle_gui.h"
#include "cargotype.h"
#include "station_gui.h"
#include "strings_func.h"
#include "core/alloc_func.hpp"
#include "window_func.h"
#include "viewport_func.h"
#include "gfx_func.h"
#include "widgets/dropdown_func.h"
#include "table/strings.h"
#include "table/sprites.h"

Go to the source code of this file.

Data Structures

struct  plstations_d
 Information about station list. More...
struct  CargoData

Typedefs

typedef int CDECL StationSortListingTypeFunction (const void *, const void *)
typedef std::list< CargoData > CargoDataList

Enumerations

enum  StationListFlags { SL_ORDER = 1 << 0, SL_RESORT = 1 << 1, SL_REBUILD = 1 << 2 }
 Flags for station list. More...

Functions

static void StationsWndShowStationRating (int x, int y, CargoID type, uint amount, byte rating)
 Draw small boxes of cargo amount and ratings data at the given coordinates.
static int CDECL StationNameSorter (const void *a, const void *b)
static int CDECL StationTypeSorter (const void *a, const void *b)
static int CDECL StationWaitingSorter (const void *a, const void *b)
static int CDECL StationRatingMaxSorter (const void *a, const void *b)
 qsort-compatible version of sorting two stations by maximum rating
 DECLARE_ENUM_AS_BIT_SET (StationListFlags)
 assert_compile (WINDOW_CUSTOM_SIZE >=sizeof(plstations_d))
void RebuildStationLists ()
 Set the 'SL_REBUILD' flag for all station lists.
void ResortStationLists ()
 Set the 'SL_RESORT' flag for all station lists.
static void BuildStationsList (plstations_d *sl, PlayerID owner, byte facilities, uint32 cargo_filter, bool include_empty)
 Rebuild station list if the SL_REBUILD flag is set.
static void SortStationsList (plstations_d *sl)
 Sort station list if the SL_RESORT flag is set.
static void PlayerStationsWndProc (Window *w, WindowEvent *e)
 Fuction called when any WindowEvent occurs for PlayerStations window.
void ShowPlayerStations (PlayerID player)
 Opens window with list of player's stations.
static void DrawCargoIcons (CargoID i, uint waiting, int x, int y, uint width)
 Draws icons of wainting cargo in the StationView window.
static void DrawStationViewWindow (Window *w)
 Redraws whole StationView window.
static void StationViewWndProc (Window *w, WindowEvent *e)
 Fuction called when any WindowEvent occurs for any StationView window.
void ShowStationViewWindow (StationID station)
 Opens StationViewWindow for given station.

Variables

static
StationSortListingTypeFunction 
StationNameSorter
static
StationSortListingTypeFunction 
StationTypeSorter
static
StationSortListingTypeFunction 
StationWaitingSorter
static
StationSortListingTypeFunction 
StationRatingMaxSorter
bool _station_show_coverage
const StringID _station_sort_listing []
static char _bufcache [64]
static const Station * _last_station
static int _internal_sort_order
static const uint32 _cargo_filter_max = ~0
static uint32 _cargo_filter = _cargo_filter_max
static const Widget _player_stations_widgets []
static const WindowDesc _player_stations_desc
static const Widget _station_view_widgets []
static const WindowDesc _station_view_desc


Detailed Description

Definition in file station_gui.cpp.


Enumeration Type Documentation

Flags for station list.

Enumerator:
SL_ORDER  Order - ascending (=0), descending (=1).
SL_RESORT  Resort the list.
SL_REBUILD  Rebuild the list.

Definition at line 168 of file station_gui.cpp.


Function Documentation

static void BuildStationsList ( plstations_d sl,
PlayerID  owner,
byte  facilities,
uint32  cargo_filter,
bool  include_empty 
) [static]

Rebuild station list if the SL_REBUILD flag is set.

Parameters:
sl pointer to plstations_d (station list and flags)
owner player whose stations are to be in list
facilities types of stations of interest
cargo_filter bitmap of cargo types to include
include_empty whether we should include stations without waiting cargo

Definition at line 227 of file station_gui.cpp.

References plstations_d::flags, HasBit(), HasStationInUse(), plstations_d::list_length, OWNER_NONE, SL_REBUILD, SL_RESORT, and plstations_d::sort_list.

static void DrawCargoIcons ( CargoID  i,
uint  waiting,
int  x,
int  y,
uint  width 
) [static]

Draws icons of wainting cargo in the StationView window.

Parameters:
i type of cargo
waiting number of wainting units
x x on-screen coordinate where to start with drawing icons
y y coordinate

Definition at line 693 of file station_gui.cpp.

References min().

Referenced by DrawStationViewWindow().

static void DrawStationViewWindow ( Window *  w  )  [static]

Redraws whole StationView window.

Parameters:
w pointer to window

< coordinates used for printing waiting/accepted/rating of cargo

< = w->vscroll.pos

Definition at line 735 of file station_gui.cpp.

References CargoPacket::count, DrawCargoIcons(), HasBit(), CargoPacket::source, SVW_ACCEPTLIST, SVW_ACCEPTS, SVW_PLANES, SVW_RATINGLIST, SVW_RENAME, SVW_ROADVEHS, SVW_SHIPS, SVW_TRAINS, and SVW_WAITING.

Referenced by StationViewWndProc().

static void PlayerStationsWndProc ( Window *  w,
WindowEvent *  e 
) [static]

Fuction called when any WindowEvent occurs for PlayerStations window.

Parameters:
w pointer to the PlayerStations window
e pointer to window event

< offset from left of widget

Definition at line 302 of file station_gui.cpp.

void ShowPlayerStations ( PlayerID  player  ) 

Opens window with list of player's stations.

Parameters:
player player whose stations' list show

Definition at line 613 of file station_gui.cpp.

References AllocateWindowDescFront(), HasBit(), ReallocT(), RESIZE_NONE, ResizeWindow(), SLW_CARGOALL, SLW_CARGOSTART, SLW_NOCARGOWAITING, SLW_PAN_RIGHT, WWT_LAST, and WWT_PANEL.

void ShowStationViewWindow ( StationID  station  ) 

Opens StationViewWindow for given station.

Parameters:
station station which window should be opened

Definition at line 986 of file station_gui.cpp.

References AllocateWindowDescFront(), and OWNER_NONE.

static void SortStationsList ( plstations_d sl  )  [static]

Sort station list if the SL_RESORT flag is set.

Parameters:
sl pointer to plstations_d (station list and flags)

Definition at line 277 of file station_gui.cpp.

References DAY_TICKS, plstations_d::flags, plstations_d::list_length, plstations_d::resort_timer, SL_ORDER, SL_RESORT, plstations_d::sort_list, plstations_d::sort_type, and StationRatingMaxSorter().

static int CDECL StationRatingMaxSorter ( const void *  a,
const void *  b 
) [static]

qsort-compatible version of sorting two stations by maximum rating

Parameters:
a First object to be sorted, must be of type (const Station *)
b Second object to be sorted, must be of type (const Station *)
Returns:
The sort order
Return values:
>0 a should come before b in the list
<0 b should come before a in the list

Definition at line 152 of file station_gui.cpp.

References HasBit(), and max().

Referenced by SortStationsList().

static void StationsWndShowStationRating ( int  x,
int  y,
CargoID  type,
uint  amount,
byte  rating 
) [static]

Draw small boxes of cargo amount and ratings data at the given coordinates.

If amount exceeds 576 units, it is shown 'full', same goes for the rating: at above 90% orso (224) it is also 'full'

Parameters:
x coordinate to draw the box at
y coordinate to draw the box at
type Cargo type
amount Cargo amount
rating ratings data for that particular cargo
Note:
Each cargo-bar is 16 pixels wide and 6 pixels high

Each rating 14 pixels wide and 1 pixel high and is 1 pixel below the cargo-bar

< number of units to show station as 'full'

< rating needed so it is shown as 'full'

Definition at line 54 of file station_gui.cpp.

References minu().

static void StationViewWndProc ( Window *  w,
WindowEvent *  e 
) [static]

Fuction called when any WindowEvent occurs for any StationView window.

Parameters:
w pointer to the StationView window
e pointer to window event

Definition at line 880 of file station_gui.cpp.

References _cmd_text, CMD_MSG, CMD_RENAME_STATION, CS_ALPHANUMERAL, DoCommandP(), DrawStationViewWindow(), OWNER_NONE, ResizeButtons(), ResizeWindowForWidget(), SetWindowDirty(), ShowQueryString(), SVW_ACCEPTLIST, SVW_LOCATION, SVW_PLANES, SVW_RATINGS, SVW_RENAME, SVW_ROADVEHS, SVW_SHIPS, and SVW_TRAINS.


Variable Documentation

const WindowDesc _player_stations_desc [static]

Initial value:

 {
  WDP_AUTO, WDP_AUTO, 358, 162, 358, 162,
  WC_STATION_LIST, WC_NONE,
  WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE,
  _player_stations_widgets,
  PlayerStationsWndProc
}

Definition at line 600 of file station_gui.cpp.

const Widget _player_stations_widgets[] [static]

Initial value:

 {
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,          STR_018B_CLOSE_WINDOW},            
{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   345,     0,    13, STR_3048_STATIONS, STR_018C_WINDOW_TITLE_DRAG_THIS},
{  WWT_STICKYBOX,     RESIZE_LR,    14,   346,   357,     0,    13, 0x0,               STR_STICKY_BUTTON},
{      WWT_PANEL,     RESIZE_RB,    14,     0,   345,    37,   161, 0x0,               STR_3057_STATION_NAMES_CLICK_ON},  
{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   346,   357,    37,   149, 0x0,               STR_0190_SCROLL_BAR_SCROLLS_LIST},
{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   346,   357,   150,   161, 0x0,               STR_RESIZE_BUTTON},

{    WWT_TEXTBTN,   RESIZE_NONE,    14,     0,    13,    14,    24, STR_TRAIN,         STR_USE_CTRL_TO_SELECT_MORE},      
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    14,    27,    14,    24, STR_LORRY,         STR_USE_CTRL_TO_SELECT_MORE},      
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    28,    41,    14,    24, STR_BUS,           STR_USE_CTRL_TO_SELECT_MORE},      
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    42,    55,    14,    24, STR_PLANE,         STR_USE_CTRL_TO_SELECT_MORE},      
{    WWT_TEXTBTN,   RESIZE_NONE,    14,    56,    69,    14,    24, STR_SHIP,          STR_USE_CTRL_TO_SELECT_MORE},      
{      WWT_PANEL,   RESIZE_NONE,    14,    70,    83,    14,    24, 0x0,               STR_SELECT_ALL_FACILITIES},        

{      WWT_PANEL,   RESIZE_NONE,    14,    83,    88,    14,    24, 0x0,               STR_NULL},                         
{      WWT_PANEL,   RESIZE_NONE,    14,    89,   102,    14,    24, 0x0,               STR_NO_WAITING_CARGO},             
{      WWT_PANEL,   RESIZE_NONE,    14,   103,   116,    14,    24, 0x0,               STR_SELECT_ALL_TYPES},             
{      WWT_PANEL,  RESIZE_RIGHT,    14,   117,   357,    14,    24, 0x0,               STR_NULL},                         

{    WWT_TEXTBTN,   RESIZE_NONE,    14,     0,    80,    25,    36, STR_SORT_BY,       STR_SORT_ORDER_TIP},               
{   WWT_DROPDOWN,   RESIZE_NONE,    14,    81,   243,    25,    36, 0x0,               STR_SORT_CRITERIA_TIP},            
{      WWT_PANEL,  RESIZE_RIGHT,    14,   244,   357,    25,    36, 0x0,               STR_NULL},                         
{   WIDGETS_END},
}

Definition at line 574 of file station_gui.cpp.

const StringID _station_sort_listing[]

Initial value:

 {
  STR_SORT_BY_DROPDOWN_NAME,
  STR_SORT_BY_FACILITY,
  STR_SORT_BY_WAITING,
  STR_SORT_BY_RATING_MAX,
  INVALID_STRING_ID
}

Definition at line 87 of file station_gui.cpp.

const WindowDesc _station_view_desc [static]

Initial value:

 {
  WDP_AUTO, WDP_AUTO, 249, 110, 249, 110,
  WC_STATION_VIEW, WC_NONE,
  WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
  _station_view_widgets,
  StationViewWndProc
}

Definition at line 973 of file station_gui.cpp.

const Widget _station_view_widgets[] [static]

Initial value:

 {
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,     0,    13, STR_00C5,          STR_018B_CLOSE_WINDOW},                
{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   236,     0,    13, STR_300A_0,        STR_018C_WINDOW_TITLE_DRAG_THIS},
{  WWT_STICKYBOX,     RESIZE_LR,    14,   237,   248,     0,    13, 0x0,               STR_STICKY_BUTTON},
{      WWT_PANEL,     RESIZE_RB,    14,     0,   236,    14,    65, 0x0,               STR_NULL},                             
{  WWT_SCROLLBAR,    RESIZE_LRB,    14,   237,   248,    14,    65, 0x0,               STR_0190_SCROLL_BAR_SCROLLS_LIST},
{      WWT_PANEL,    RESIZE_RTB,    14,     0,   248,    66,    97, 0x0,               STR_NULL},                             
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,     0,    59,    98,   109, STR_00E4_LOCATION, STR_3053_CENTER_MAIN_VIEW_ON_STATION}, 
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,    60,   120,    98,   109, STR_3032_RATINGS,  STR_3054_SHOW_STATION_RATINGS},        
{ WWT_PUSHTXTBTN,    RESIZE_RTB,    14,   121,   180,    98,   109, STR_0130_RENAME,   STR_3055_CHANGE_NAME_OF_STATION},      
{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   181,   194,    98,   109, STR_TRAIN,         STR_SCHEDULED_TRAINS_TIP },            
{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   195,   208,    98,   109, STR_LORRY,         STR_SCHEDULED_ROAD_VEHICLES_TIP },     
{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   209,   222,    98,   109, STR_PLANE,         STR_SCHEDULED_AIRCRAFT_TIP },          
{ WWT_PUSHTXTBTN,   RESIZE_LRTB,    14,   223,   236,    98,   109, STR_SHIP,          STR_SCHEDULED_SHIPS_TIP },             
{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   237,   248,    98,   109, 0x0,               STR_RESIZE_BUTTON},
{   WIDGETS_END},
}

Definition at line 667 of file station_gui.cpp.


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