OpenTTD
Public Member Functions | Data Fields | Static Public Attributes | Static Private Member Functions
CargoesField Struct Reference

Data about a single field in the IndustryCargoesWindow panel. More...

Public Member Functions

void MakeEmpty (CargoesFieldType type)
 Make one of the empty fields (CFT_EMPTY or CFT_SMALL_EMPTY). More...
 
void MakeIndustry (IndustryType ind_type)
 Make an industry type field. More...
 
int ConnectCargo (CargoID cargo, bool producer)
 Connect a cargo from an industry to the CFT_CARGO column. More...
 
bool HasConnection ()
 Does this CFT_CARGO field have a horizontal connection? More...
 
void MakeCargo (const CargoID *cargoes, uint length, int count=-1, bool top_end=false, bool bottom_end=false)
 Make a piece of cargo column. More...
 
void MakeCargoLabel (const CargoID *cargoes, uint length, bool left_align)
 Make a field displaying cargo type names. More...
 
void MakeHeader (StringID textid)
 Make a header above an industry column. More...
 
int GetCargoBase (int xpos) const
 For a CFT_CARGO, compute the left position of the left-most vertical cargo connection. More...
 
void Draw (int xpos, int ypos) const
 Draw the field. More...
 
CargoID CargoClickedAt (const CargoesField *left, const CargoesField *right, Point pt) const
 Decide which cargo was clicked at in a CFT_CARGO field. More...
 
CargoID CargoLabelClickedAt (Point pt) const
 Decide what cargo the user clicked in the cargo label field. More...
 

Data Fields

CargoesFieldType type
 Type of field.
 
union {
   struct {
      IndustryType   ind_type
 Industry type (NUM_INDUSTRYTYPES means 'houses').
 
      CargoID   other_produced [MAX_CARGOES]
 Cargoes produced but not used in this figure.
 
      CargoID   other_accepted [MAX_CARGOES]
 Cargoes accepted but not used in this figure.
 
   }   industry
 Industry data (for CFT_INDUSTRY).
 
   struct {
      CargoID   vertical_cargoes [MAX_CARGOES]
 Cargoes running from top to bottom (cargo ID or INVALID_CARGO).
 
      byte   num_cargoes
 Number of cargoes.
 
      CargoID   supp_cargoes [MAX_CARGOES]
 Cargoes entering from the left (index in vertical_cargoes, or INVALID_CARGO).
 
      byte   top_end
 Stop at the top of the vertical cargoes.
 
      CargoID   cust_cargoes [MAX_CARGOES]
 Cargoes leaving to the right (index in vertical_cargoes, or INVALID_CARGO).
 
      byte   bottom_end
 Stop at the bottom of the vertical cargoes.
 
   }   cargo
 Cargo data (for CFT_CARGO).
 
   struct {
      CargoID   cargoes [MAX_CARGOES]
 Cargoes to display (or INVALID_CARGO).
 
      bool   left_align
 Align all cargo texts to the left (else align to the right).
 
   }   cargo_label
 Label data (for CFT_CARGO_LABEL).
 
   StringID   header
 Header text (for CFT_HEADER).
 
u
 

Static Public Attributes

static const int VERT_INTER_INDUSTRY_SPACE = 6
 Amount of space between two industries in a column.
 
static const int HOR_CARGO_BORDER_SPACE = 15
 Amount of space between the left/right edge of a CFT_CARGO field, and the left/right most vertical cargo.
 
static const int CARGO_STUB_WIDTH = 10
 Width of a cargo not carried in the column (should be less than HOR_CARGO_BORDER_SPACE).
 
static const int HOR_CARGO_WIDTH = 15
 Width of a vertical cargo column (inclusive the border line).
 
static const int HOR_CARGO_SPACE = 5
 Amount of horizontal space between two vertical cargoes.
 
static const int CARGO_FIELD_WIDTH = HOR_CARGO_BORDER_SPACE * 2 + HOR_CARGO_WIDTH * MAX_CARGOES + HOR_CARGO_SPACE * (MAX_CARGOES - 1)
 Width of a CFT_CARGO field. More...
 
static const int VERT_CARGO_SPACE = 4
 Amount of vertical space between two connected cargoes at an industry.
 
static const int VERT_CARGO_EDGE = 4
 Amount of vertical space between top/bottom and the top/bottom connected cargo at an industry.
 
static const int BLOB_DISTANCE = 5
 Distance of the industry legend colour from the edge of the industry box.
 
static const int BLOB_WIDTH = 12
 Width of the industry legend colour, including border.
 
static const int BLOB_HEIGHT = 9
 Height of the industry legend colour, including border.
 
static const int INDUSTRY_LINE_COLOUR = PC_YELLOW
 Line colour of the industry type box.
 
static const int CARGO_LINE_COLOUR = PC_YELLOW
 Line colour around the cargo.
 
static int small_height
 Height of the header row.
 
static int normal_height
 Height of the non-header rows.
 
static int industry_width
 Width of an industry field.
 

Static Private Member Functions

static void DrawHorConnection (int left, int right, int top, const CargoSpec *csp)
 Draw a horizontal cargo connection. More...
 

Detailed Description

Data about a single field in the IndustryCargoesWindow panel.

Definition at line 1521 of file industry_gui.cpp.

Member Function Documentation

◆ CargoClickedAt()

CargoID CargoesField::CargoClickedAt ( const CargoesField left,
const CargoesField right,
Point  pt 
) const
inline

Decide which cargo was clicked at in a CFT_CARGO field.

Parameters
leftLeft industry neighbour if available (else NULL should be supplied).
rightRight industry neighbour if available (else NULL should be supplied).
ptClick position in the cargo field.
Returns
Cargo clicked at, or INVALID_CARGO if none.

Definition at line 1848 of file industry_gui.cpp.

Referenced by IndustryCargoesWindow::OnClick(), and IndustryCargoesWindow::OnHover().

◆ CargoLabelClickedAt()

CargoID CargoesField::CargoLabelClickedAt ( Point  pt) const
inline

Decide what cargo the user clicked in the cargo label field.

Parameters
ptClick position in the cargo label field.
Returns
Cargo clicked at, or INVALID_CARGO if none.

Definition at line 1905 of file industry_gui.cpp.

Referenced by IndustryCargoesWindow::OnClick(), and IndustryCargoesWindow::OnHover().

◆ ConnectCargo()

int CargoesField::ConnectCargo ( CargoID  cargo,
bool  producer 
)
inline

Connect a cargo from an industry to the CFT_CARGO column.

Parameters
cargoCargo to connect.
producedCargo is produced (if false, cargo is assumed to be accepted).
Returns
Horizontal connection index, or -1 if not accepted at all.

Definition at line 1586 of file industry_gui.cpp.

◆ Draw()

void CargoesField::Draw ( int  xpos,
int  ypos 
) const
inline

Draw the field.

Parameters
xposPosition of the left edge.
vposPosition of the top edge.

Definition at line 1702 of file industry_gui.cpp.

References CFT_EMPTY, CFT_HEADER, CFT_SMALL_EMPTY, DrawString(), and FONT_HEIGHT_NORMAL.

◆ DrawHorConnection()

static void CargoesField::DrawHorConnection ( int  left,
int  right,
int  top,
const CargoSpec csp 
)
inlinestaticprivate

Draw a horizontal cargo connection.

Parameters
leftLeft-most coordinate to draw.
rightRight-most coordinate to draw.
topTop coordinate of the cargo connection.
cspCargo to draw.

Definition at line 1928 of file industry_gui.cpp.

◆ GetCargoBase()

int CargoesField::GetCargoBase ( int  xpos) const
inline

For a CFT_CARGO, compute the left position of the left-most vertical cargo connection.

Parameters
xposLeft position of the field.
Returns
Left position of the left-most vertical cargo column.

Definition at line 1684 of file industry_gui.cpp.

◆ HasConnection()

bool CargoesField::HasConnection ( )
inline

Does this CFT_CARGO field have a horizontal connection?

Returns
true if a horizontal connection exists, false otherwise.

Definition at line 1615 of file industry_gui.cpp.

◆ MakeCargo()

void CargoesField::MakeCargo ( const CargoID cargoes,
uint  length,
int  count = -1,
bool  top_end = false,
bool  bottom_end = false 
)
inline

Make a piece of cargo column.

Parameters
cargoesArray of CargoID (may contain INVALID_CARGO).
lengthNumber of cargoes in cargoes.
countNumber of cargoes to display (should be at least the number of valid cargoes, or -1 to let the method compute it).
top_endThis is the first cargo field of this column.
bottom_endThis is the last cargo field of this column.
Note
supp_cargoes and cust_cargoes should be filled in later.

Definition at line 1635 of file industry_gui.cpp.

References CFT_CARGO, INVALID_CARGO, MAX_CARGOES, and MemSetT().

Referenced by IndustryCargoesWindow::ComputeCargoDisplay(), and IndustryCargoesWindow::ComputeIndustryDisplay().

◆ MakeCargoLabel()

void CargoesField::MakeCargoLabel ( const CargoID cargoes,
uint  length,
bool  left_align 
)
inline

Make a field displaying cargo type names.

Parameters
cargoesArray of CargoID (may contain INVALID_CARGO).
lengthNumber of cargoes in cargoes.
left_alignALign texts to the left (else to the right).

Definition at line 1660 of file industry_gui.cpp.

References CFT_CARGO_LABEL, INVALID_CARGO, and MAX_CARGOES.

◆ MakeEmpty()

void CargoesField::MakeEmpty ( CargoesFieldType  type)
inline

Make one of the empty fields (CFT_EMPTY or CFT_SMALL_EMPTY).

Parameters
typeType of empty field.

Definition at line 1562 of file industry_gui.cpp.

Referenced by IndustryCargoesWindow::ComputeCargoDisplay(), and IndustryCargoesWindow::ComputeIndustryDisplay().

◆ MakeHeader()

void CargoesField::MakeHeader ( StringID  textid)
inline

Make a header above an industry column.

Parameters
textidText to display.

Definition at line 1673 of file industry_gui.cpp.

References CFT_HEADER.

Referenced by IndustryCargoesWindow::ComputeCargoDisplay(), and IndustryCargoesWindow::ComputeIndustryDisplay().

◆ MakeIndustry()

void CargoesField::MakeIndustry ( IndustryType  ind_type)
inline

Make an industry type field.

Parameters
ind_typeIndustry type (NUM_INDUSTRYTYPES means 'houses').
Note
other_accepted and other_produced should be filled later.

Definition at line 1572 of file industry_gui.cpp.

References CFT_INDUSTRY, INVALID_CARGO, MAX_CARGOES, and MemSetT().

Field Documentation

◆ CARGO_FIELD_WIDTH

const int CargoesField::CARGO_FIELD_WIDTH = HOR_CARGO_BORDER_SPACE * 2 + HOR_CARGO_WIDTH * MAX_CARGOES + HOR_CARGO_SPACE * (MAX_CARGOES - 1)
static

The documentation for this struct was generated from the following file: