mirror of https://github.com/OpenTTD/OpenTTD
Codechange: replace InjectDParam/ShiftParameters by setting the right parameter values in the first place
parent
1d9912134d
commit
979783f90e
|
@ -83,16 +83,6 @@ int64 StringParameters::GetInt64(WChar type)
|
||||||
return this->data[this->offset++];
|
return this->data[this->offset++];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Shift all data in the data array by the given amount to make
|
|
||||||
* room for some extra parameters.
|
|
||||||
*/
|
|
||||||
void StringParameters::ShiftParameters(uint amount)
|
|
||||||
{
|
|
||||||
assert(amount <= this->num_param);
|
|
||||||
MemMoveT(this->data + amount, this->data, this->num_param - amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set DParam n to some number that is suitable for string size computations.
|
* Set DParam n to some number that is suitable for string size computations.
|
||||||
* @param n Index of the string parameter.
|
* @param n Index of the string parameter.
|
||||||
|
@ -319,15 +309,6 @@ void SetDParamStr(uint n, const std::string &str)
|
||||||
SetDParamStr(n, str.c_str());
|
SetDParamStr(n, str.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Shift the string parameters in the global string parameter array by \a amount positions, making room at the beginning.
|
|
||||||
* @param amount Number of positions to shift.
|
|
||||||
*/
|
|
||||||
void InjectDParam(uint amount)
|
|
||||||
{
|
|
||||||
_global_string_params.ShiftParameters(amount);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Format a number into a string.
|
* Format a number into a string.
|
||||||
* @param buff the buffer to write to
|
* @param buff the buffer to write to
|
||||||
|
|
|
@ -122,8 +122,6 @@ public:
|
||||||
return (int32)this->GetInt64(type);
|
return (int32)this->GetInt64(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShiftParameters(uint amount);
|
|
||||||
|
|
||||||
/** Get a pointer to the current element in the data array. */
|
/** Get a pointer to the current element in the data array. */
|
||||||
uint64 *GetDataPointer() const
|
uint64 *GetDataPointer() const
|
||||||
{
|
{
|
||||||
|
@ -179,8 +177,6 @@ const char *GetStringPtr(StringID string);
|
||||||
uint ConvertKmhishSpeedToDisplaySpeed(uint speed);
|
uint ConvertKmhishSpeedToDisplaySpeed(uint speed);
|
||||||
uint ConvertDisplaySpeedToKmhishSpeed(uint speed);
|
uint ConvertDisplaySpeedToKmhishSpeed(uint speed);
|
||||||
|
|
||||||
void InjectDParam(uint amount);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a string parameter \a v at index \a n in a given array \a s.
|
* Set a string parameter \a v at index \a n in a given array \a s.
|
||||||
* @param s Array of string parameters.
|
* @param s Array of string parameters.
|
||||||
|
|
|
@ -47,8 +47,7 @@ void Subsidy::AwardTo(CompanyID company)
|
||||||
NewsStringData *company_name = new NewsStringData(GetString(STR_COMPANY_NAME));
|
NewsStringData *company_name = new NewsStringData(GetString(STR_COMPANY_NAME));
|
||||||
|
|
||||||
/* Add a news item */
|
/* Add a news item */
|
||||||
std::pair<NewsReferenceType, NewsReferenceType> reftype = SetupSubsidyDecodeParam(this, SubsidyDecodeParamType::NewsAwarded);
|
std::pair<NewsReferenceType, NewsReferenceType> reftype = SetupSubsidyDecodeParam(this, SubsidyDecodeParamType::NewsAwarded, 1);
|
||||||
InjectDParam(1);
|
|
||||||
|
|
||||||
SetDParamStr(0, company_name->string);
|
SetDParamStr(0, company_name->string);
|
||||||
AddNewsItem(
|
AddNewsItem(
|
||||||
|
@ -67,9 +66,10 @@ void Subsidy::AwardTo(CompanyID company)
|
||||||
* Setup the string parameters for printing the subsidy at the screen, and compute the news reference for the subsidy.
|
* Setup the string parameters for printing the subsidy at the screen, and compute the news reference for the subsidy.
|
||||||
* @param s %Subsidy being printed.
|
* @param s %Subsidy being printed.
|
||||||
* @param mode Type of subsidy news message to decide on parameter format.
|
* @param mode Type of subsidy news message to decide on parameter format.
|
||||||
|
* @param parameter_offset The location/index in the String DParams to start decoding the subsidy's parameters. Defaults to 0.
|
||||||
* @return Reference of the subsidy in the news system.
|
* @return Reference of the subsidy in the news system.
|
||||||
*/
|
*/
|
||||||
std::pair<NewsReferenceType, NewsReferenceType> SetupSubsidyDecodeParam(const Subsidy *s, SubsidyDecodeParamType mode)
|
std::pair<NewsReferenceType, NewsReferenceType> SetupSubsidyDecodeParam(const Subsidy *s, SubsidyDecodeParamType mode, uint parameter_offset)
|
||||||
{
|
{
|
||||||
NewsReferenceType reftype1 = NR_NONE;
|
NewsReferenceType reftype1 = NR_NONE;
|
||||||
NewsReferenceType reftype2 = NR_NONE;
|
NewsReferenceType reftype2 = NR_NONE;
|
||||||
|
@ -77,40 +77,40 @@ std::pair<NewsReferenceType, NewsReferenceType> SetupSubsidyDecodeParam(const Su
|
||||||
/* Choose whether to use the singular or plural form of the cargo name based on how we're printing the subsidy */
|
/* Choose whether to use the singular or plural form of the cargo name based on how we're printing the subsidy */
|
||||||
const CargoSpec *cs = CargoSpec::Get(s->cargo_type);
|
const CargoSpec *cs = CargoSpec::Get(s->cargo_type);
|
||||||
if (mode == SubsidyDecodeParamType::Gui || mode == SubsidyDecodeParamType::NewsWithdrawn) {
|
if (mode == SubsidyDecodeParamType::Gui || mode == SubsidyDecodeParamType::NewsWithdrawn) {
|
||||||
SetDParam(0, cs->name);
|
SetDParam(parameter_offset, cs->name);
|
||||||
} else {
|
} else {
|
||||||
SetDParam(0, cs->name_single);
|
SetDParam(parameter_offset, cs->name_single);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (s->src_type) {
|
switch (s->src_type) {
|
||||||
case ST_INDUSTRY:
|
case ST_INDUSTRY:
|
||||||
reftype1 = NR_INDUSTRY;
|
reftype1 = NR_INDUSTRY;
|
||||||
SetDParam(1, STR_INDUSTRY_NAME);
|
SetDParam(parameter_offset + 1, STR_INDUSTRY_NAME);
|
||||||
break;
|
break;
|
||||||
case ST_TOWN:
|
case ST_TOWN:
|
||||||
reftype1 = NR_TOWN;
|
reftype1 = NR_TOWN;
|
||||||
SetDParam(1, STR_TOWN_NAME);
|
SetDParam(parameter_offset + 1, STR_TOWN_NAME);
|
||||||
break;
|
break;
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
SetDParam(2, s->src);
|
SetDParam(parameter_offset + 2, s->src);
|
||||||
|
|
||||||
switch (s->dst_type) {
|
switch (s->dst_type) {
|
||||||
case ST_INDUSTRY:
|
case ST_INDUSTRY:
|
||||||
reftype2 = NR_INDUSTRY;
|
reftype2 = NR_INDUSTRY;
|
||||||
SetDParam(4, STR_INDUSTRY_NAME);
|
SetDParam(parameter_offset + 4, STR_INDUSTRY_NAME);
|
||||||
break;
|
break;
|
||||||
case ST_TOWN:
|
case ST_TOWN:
|
||||||
reftype2 = NR_TOWN;
|
reftype2 = NR_TOWN;
|
||||||
SetDParam(4, STR_TOWN_NAME);
|
SetDParam(parameter_offset + 4, STR_TOWN_NAME);
|
||||||
break;
|
break;
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
}
|
}
|
||||||
SetDParam(5, s->dst);
|
SetDParam(parameter_offset + 5, s->dst);
|
||||||
|
|
||||||
/* If the subsidy is being offered or awarded, the news item mentions the subsidy duration. */
|
/* If the subsidy is being offered or awarded, the news item mentions the subsidy duration. */
|
||||||
if (mode == SubsidyDecodeParamType::NewsOffered || mode == SubsidyDecodeParamType::NewsAwarded) {
|
if (mode == SubsidyDecodeParamType::NewsOffered || mode == SubsidyDecodeParamType::NewsAwarded) {
|
||||||
SetDParam(7, _settings_game.difficulty.subsidy_duration);
|
SetDParam(parameter_offset + 7, _settings_game.difficulty.subsidy_duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
return std::pair<NewsReferenceType, NewsReferenceType>(reftype1, reftype2);
|
return std::pair<NewsReferenceType, NewsReferenceType>(reftype1, reftype2);
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
#include "news_type.h"
|
#include "news_type.h"
|
||||||
#include "subsidy_base.h"
|
#include "subsidy_base.h"
|
||||||
|
|
||||||
std::pair<NewsReferenceType, NewsReferenceType> SetupSubsidyDecodeParam(const struct Subsidy *s, SubsidyDecodeParamType mode);
|
std::pair<NewsReferenceType, NewsReferenceType> SetupSubsidyDecodeParam(const struct Subsidy *s, SubsidyDecodeParamType mode, uint parameter_offset = 0);
|
||||||
void DeleteSubsidyWith(SourceType type, SourceID index);
|
void DeleteSubsidyWith(SourceType type, SourceID index);
|
||||||
bool CheckSubsidised(CargoID cargo_type, CompanyID company, SourceType src_type, SourceID src, const Station *st);
|
bool CheckSubsidised(CargoID cargo_type, CompanyID company, SourceType src_type, SourceID src, const Station *st);
|
||||||
void RebuildSubsidisedSourceAndDestinationCache();
|
void RebuildSubsidisedSourceAndDestinationCache();
|
||||||
|
|
Loading…
Reference in New Issue