Functions | Variables

subsidy.cpp File Reference

Handling of subsidies. More...

#include "stdafx.h"
#include "company_func.h"
#include "industry.h"
#include "town.h"
#include "news_func.h"
#include "ai/ai.hpp"
#include "station_base.h"
#include "cargotype.h"
#include "strings_func.h"
#include "window_func.h"
#include "subsidy_base.h"
#include "subsidy_func.h"
#include "core/pool_func.hpp"
#include "core/random_func.hpp"
#include "table/strings.h"

Go to the source code of this file.

Functions

Pair SetupSubsidyDecodeParam (const Subsidy *s, bool mode)
static void SetPartOfSubsidyFlag (SourceType type, SourceID index, PartOfSubsidy flag)
 Sets a flag indicating that given town/industry is part of subsidised route.
void RebuildSubsidisedSourceAndDestinationCache ()
void DeleteSubsidyWith (SourceType type, SourceID index)
static bool CheckSubsidyDuplicate (CargoID cargo, SourceType src_type, SourceID src, SourceType dst_type, SourceID dst)
static bool CheckSubsidyDistance (SourceType src_type, SourceID src, SourceType dst_type, SourceID dst)
 Checks if the source and destination of a subsidy are inside the distance limit.
void CreateSubsidy (CargoID cid, SourceType src_type, SourceID src, SourceType dst_type, SourceID dst)
 Creates a subsidy with the given parameters.
bool FindSubsidyPassengerRoute ()
 Tries to create a passenger subsidy between two towns.
bool FindSubsidyCargoDestination (CargoID cid, SourceType src_type, SourceID src)
 Tries to find a suitable destination for the given source and cargo.
bool FindSubsidyTownCargoRoute ()
 Tries to create a cargo subsidy with a town as source.
bool FindSubsidyIndustryCargoRoute ()
 Tries to create a cargo subsidy with an industry as source.
void SubsidyMonthlyLoop ()
bool CheckSubsidised (CargoID cargo_type, CompanyID company, SourceType src_type, SourceID src, const Station *st)
 Tests whether given delivery is subsidised and possibly awards the subsidy to delivering company.

Variables

SubsidyPool _subsidy_pool ("Subsidy")

Detailed Description

Handling of subsidies.

Definition in file subsidy.cpp.


Function Documentation

bool CheckSubsidised ( CargoID  cargo_type,
CompanyID  company,
SourceType  src_type,
SourceID  src,
const Station st 
)
static bool CheckSubsidyDistance ( SourceType  src_type,
SourceID  src,
SourceType  dst_type,
SourceID  dst 
) [static]

Checks if the source and destination of a subsidy are inside the distance limit.

Parameters:
src_type Type of src.
src Index of source.
dst_type Type of dst.
dst Index of destination.
Returns:
True if they are inside the distance limit.

Definition at line 174 of file subsidy.cpp.

References DistanceManhattan(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), and SUBSIDY_MAX_DISTANCE.

Referenced by FindSubsidyCargoDestination().

void CreateSubsidy ( CargoID  cid,
SourceType  src_type,
SourceID  src,
SourceType  dst_type,
SourceID  dst 
)

Creates a subsidy with the given parameters.

Parameters:
cid Subsidised cargo.
src_type Type of src.
src Index of source.
dst_type Type of dst.
dst Index of destination.

Definition at line 189 of file subsidy.cpp.

References AddNewsItem(), Subsidy::awarded, AI::BroadcastNewEvent(), Subsidy::cargo_type, Subsidy::dst, Subsidy::dst_type, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, NS_SUBSIDIES, POS_DST, POS_SRC, Subsidy::remaining, SetPartOfSubsidyFlag(), Subsidy::src, Subsidy::src_type, and SUBSIDY_OFFER_MONTHS.

Referenced by FindSubsidyCargoDestination(), and FindSubsidyPassengerRoute().

bool FindSubsidyCargoDestination ( CargoID  cid,
SourceType  src_type,
SourceID  src 
)

Tries to find a suitable destination for the given source and cargo.

Parameters:
cid Subsidized cargo.
src_type Type of src.
src Index of source.
Returns:
True iff the subsidy was created.

Definition at line 316 of file subsidy.cpp.

References _town_cargos_accepted, Industry::accepts_cargo, Town::cargo_accepted_total, Chance16(), CheckSubsidyDistance(), CreateSubsidy(), Industry::GetRandom(), Town::GetRandom(), HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, ST_INDUSTRY, and ST_TOWN.

Referenced by FindSubsidyIndustryCargoRoute(), and FindSubsidyTownCargoRoute().

bool FindSubsidyIndustryCargoRoute (  ) 
bool FindSubsidyPassengerRoute (  ) 
bool FindSubsidyTownCargoRoute (  ) 
static void SetPartOfSubsidyFlag ( SourceType  type,
SourceID  index,
PartOfSubsidy  flag 
) [inline, static]

Sets a flag indicating that given town/industry is part of subsidised route.

Parameters:
type is it a town or an industry?
index index of town/industry
flag flag to set

Definition at line 112 of file subsidy.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_town_pool >::Get(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_industry_pool >::Get(), ST_INDUSTRY, and ST_TOWN.

Referenced by CreateSubsidy().