# AISubsidy Class Reference

Class that handles all subsidy related functions. More...

`#include <ai_subsidy.hpp>`

Inheritance diagram for AISubsidy:

## Public Types
enum | SubsidyParticipantType { SPT_INDUSTRY = 0, SPT_TOWN = 1, SPT_INVALID = 0xFF }
| Enumeration for source and destination of a subsidy. More...
## Static Public Member Functions
static const char * | GetClassName ()
static bool | IsValidSubsidy (SubsidyID subsidy_id)
| Check whether this is a valid SubsidyID.
static bool | IsAwarded (SubsidyID subsidy_id)
| Checks whether this subsidy is already awarded to some company.
static AICompany::CompanyID | GetAwardedTo (SubsidyID subsidy_id)
| Get the company index of the company this subsidy is awarded to.
static int32 | GetExpireDate (SubsidyID subsidy_id)
| Get the date this subsidy expires.
static CargoID | GetCargoType (SubsidyID subsidy_id)
| Get the cargo type that has to be transported in order to be awarded this subsidy.
static SubsidyParticipantType | GetSourceType (SubsidyID subsidy_id)
| Returns the type of source of subsidy.
static int32 | GetSourceIndex (SubsidyID subsidy_id)
| Return the source IndustryID/TownID the subsidy is for.
static SubsidyParticipantType | GetDestinationType (SubsidyID subsidy_id)
| Returns the type of destination of subsidy.
static int32 | GetDestinationIndex (SubsidyID subsidy_id)
| Return the destination IndustryID/TownID the subsidy is for.

## Detailed Description

Class that handles all subsidy related functions.

Definition at line 21 of file ai_subsidy.hpp.

## Member Enumeration Documentation

enum AISubsidy::SubsidyParticipantType

Enumeration for source and destination of a subsidy.

Note:
  The list of values may grow in future.

Enumerator:

  SPT_INDUSTRY | Subsidy participant is an industry.
  SPT_TOWN | Subsidy participant is a town.
  SPT_INVALID | Invalid/unknown participant type.

Definition at line 29 of file ai_subsidy.hpp.

## Member Function Documentation

bool AISubsidy::IsValidSubsidy | ( | SubsidyID | subsidy_id | ) | `[static]`

Check whether this is a valid SubsidyID.

Parameters:

  | subsidy_id | The SubsidyID to check.

Returns:
  True if and only if this subsidy is still valid.

Definition at line 17 of file ai_subsidy.cpp.

Referenced by GetCargoType(), GetDestinationIndex(), GetDestinationType(), GetExpireDate(), GetSourceIndex(), GetSourceType(), and IsAwarded().

bool AISubsidy::IsAwarded | ( | SubsidyID | subsidy_id | ) | `[static]`

Checks whether this subsidy is already awarded to some company.

Parameters:

  | subsidy_id | The SubsidyID to check.

Precondition:
  IsValidSubsidy(subsidy).

Returns:
  True if and only if this subsidy is already awarded.

Definition at line 22 of file ai_subsidy.cpp.

References IsValidSubsidy().

Referenced by GetAwardedTo().

AICompany::CompanyID AISubsidy::GetAwardedTo | ( | SubsidyID | subsidy_id | ) | `[static]`

Get the company index of the company this subsidy is awarded to.

Parameters:

  | subsidy_id | The SubsidyID to check.

Precondition:
  IsAwarded(subsidy_id).

Returns:
  The companyindex of the company this subsidy is awarded to.

Definition at line 29 of file ai_subsidy.cpp.

References AICompany::COMPANY_INVALID, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::Get(), and IsAwarded().

int32 AISubsidy::GetExpireDate | ( | SubsidyID | subsidy_id | ) | `[static]`

Get the date this subsidy expires.

In case the subsidy is already awarded, return the date the subsidy expires, else, return the date the offer expires.

Parameters:

  | subsidy_id | The SubsidyID to check.

Precondition:
  IsValidSubsidy(subsidy_id).

Returns:
  The last valid date of this subsidy.

Note:
  The return value of this function will change if the subsidy is awarded.

Definition at line 36 of file ai_subsidy.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::Get(), AIDate::GetCurrentDate(), AIDate::GetDate(), AIDate::GetMonth(), AIDate::GetYear(), and IsValidSubsidy().

CargoID AISubsidy::GetCargoType | ( | SubsidyID | subsidy_id | ) | `[static]`

Get the cargo type that has to be transported in order to be awarded this subsidy.

Parameters:

  | subsidy_id | The SubsidyID to check.

Precondition:
  IsValidSubsidy(subsidy_id).

Returns:
  The cargo type to transport.

Definition at line 51 of file ai_subsidy.cpp.

References CT_INVALID, and IsValidSubsidy().

AISubsidy::SubsidyParticipantType AISubsidy::GetSourceType | ( | SubsidyID | subsidy_id | ) | `[static]`

Returns the type of source of subsidy.

Parameters:

  | subsidy_id | The SubsidyID to check.

Precondition:
  IsValidSubsidy(subsidy_id).

Returns:
  Type of source of subsidy.

Definition at line 58 of file ai_subsidy.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::Get(), IsValidSubsidy(), and SPT_INVALID.

int32 AISubsidy::GetSourceIndex | ( | SubsidyID | subsidy_id | ) | `[static]`

Return the source IndustryID/TownID the subsidy is for.

- GetSourceType(subsidy_id) == SPT_INDUSTRY -> return the IndustryID.
- GetSourceType(subsidy_id) == SPT_TOWN -> return the TownID.
  Parameters:

    | subsidy_id | The SubsidyID to check.

  Precondition:
    IsValidSubsidy(subsidy_id).
  Returns:
    One of TownID/IndustryID.

Definition at line 65 of file ai_subsidy.cpp.

References IsValidSubsidy().

AISubsidy::SubsidyParticipantType AISubsidy::GetDestinationType | ( | SubsidyID | subsidy_id | ) | `[static]`

Returns the type of destination of subsidy.

Parameters:

  | subsidy_id | The SubsidyID to check.

Precondition:
  IsValidSubsidy(subsidy_id).

Returns:
  Type of destination of subsidy.

Definition at line 72 of file ai_subsidy.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tcache, Tzero >::PoolItem< Tpool >::Get(), IsValidSubsidy(), and SPT_INVALID.

int32 AISubsidy::GetDestinationIndex | ( | SubsidyID | subsidy_id | ) | `[static]`

Return the destination IndustryID/TownID the subsidy is for.

- GetDestinationType(subsidy_id) == SPT_INDUSTRY -> return the IndustryID.
- GetDestinationType(subsidy_id) == SPT_TOWN -> return the TownID.
  Parameters:

    | subsidy_id | the SubsidyID to check.

  Precondition:
    IsValidSubsidy(subsidy_id).
  Returns:
    One of TownID/IndustryID.

Definition at line 79 of file ai_subsidy.cpp.

References IsValidSubsidy().

The documentation for this class was generated from the following files:

- src/ai/api/ai_subsidy.hpp
- src/ai/api/ai_subsidy.cpp