mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-12 02:19:41 +00:00
(svn r24022) -Add: CARGO_LIST control code for strings
This commit is contained in:
parent
b65c2def5c
commit
19923e81f9
@ -1106,6 +1106,38 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case SCC_CARGO_LIST: { // {CARGO_LIST}
|
||||||
|
uint32 cmask = args->GetInt32(SCC_CARGO_LIST);
|
||||||
|
bool first = true;
|
||||||
|
|
||||||
|
const CargoSpec *cs;
|
||||||
|
FOR_ALL_SORTED_CARGOSPECS(cs) {
|
||||||
|
if (!HasBit(cmask, cs->Index())) continue;
|
||||||
|
|
||||||
|
if (buff >= last - 2) break; // ',' and ' '
|
||||||
|
|
||||||
|
if (first) {
|
||||||
|
first = false;
|
||||||
|
} else {
|
||||||
|
/* Add a comma if this is not the first item */
|
||||||
|
*buff++ = ',';
|
||||||
|
*buff++ = ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
buff = GetStringWithArgs(buff, cs->name, args, last, next_substr_case_index, game_script);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If first is still true then no cargo is accepted */
|
||||||
|
if (first) buff = GetStringWithArgs(buff, STR_JUST_NOTHING, args, last, next_substr_case_index, game_script);
|
||||||
|
|
||||||
|
*buff = '\0';
|
||||||
|
next_substr_case_index = 0;
|
||||||
|
|
||||||
|
/* Make sure we detect any buffer overflow */
|
||||||
|
assert(buff < last);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case SCC_CURRENCY_SHORT: // {CURRENCY_SHORT}
|
case SCC_CURRENCY_SHORT: // {CURRENCY_SHORT}
|
||||||
buff = FormatGenericCurrency(buff, _currency, args->GetInt64(), true, last);
|
buff = FormatGenericCurrency(buff, _currency, args->GetInt64(), true, last);
|
||||||
break;
|
break;
|
||||||
|
@ -54,6 +54,7 @@ enum StringControlCode {
|
|||||||
SCC_CARGO_LONG,
|
SCC_CARGO_LONG,
|
||||||
SCC_CARGO_SHORT,
|
SCC_CARGO_SHORT,
|
||||||
SCC_CARGO_TINY,
|
SCC_CARGO_TINY,
|
||||||
|
SCC_CARGO_LIST,
|
||||||
SCC_POWER,
|
SCC_POWER,
|
||||||
SCC_VOLUME_LONG,
|
SCC_VOLUME_LONG,
|
||||||
SCC_VOLUME_SHORT,
|
SCC_VOLUME_SHORT,
|
||||||
|
@ -73,6 +73,7 @@ static const CmdStruct _cmd_structs[] = {
|
|||||||
{"CARGO_LONG", EmitSingleChar, SCC_CARGO_LONG, 2, C_NONE | C_GENDER},
|
{"CARGO_LONG", EmitSingleChar, SCC_CARGO_LONG, 2, C_NONE | C_GENDER},
|
||||||
{"CARGO_SHORT", EmitSingleChar, SCC_CARGO_SHORT, 2, C_NONE}, // short cargo description, only ### tons, or ### litres
|
{"CARGO_SHORT", EmitSingleChar, SCC_CARGO_SHORT, 2, C_NONE}, // short cargo description, only ### tons, or ### litres
|
||||||
{"CARGO_TINY", EmitSingleChar, SCC_CARGO_TINY, 2, C_NONE}, // tiny cargo description with only the amount, not a specifier for the amount or the actual cargo name
|
{"CARGO_TINY", EmitSingleChar, SCC_CARGO_TINY, 2, C_NONE}, // tiny cargo description with only the amount, not a specifier for the amount or the actual cargo name
|
||||||
|
{"CARGO_LIST", EmitSingleChar, SCC_CARGO_LIST, 1, C_CASE},
|
||||||
{"POWER", EmitSingleChar, SCC_POWER, 1, C_NONE},
|
{"POWER", EmitSingleChar, SCC_POWER, 1, C_NONE},
|
||||||
{"VOLUME_LONG", EmitSingleChar, SCC_VOLUME_LONG, 1, C_NONE},
|
{"VOLUME_LONG", EmitSingleChar, SCC_VOLUME_LONG, 1, C_NONE},
|
||||||
{"VOLUME_SHORT", EmitSingleChar, SCC_VOLUME_SHORT, 1, C_NONE},
|
{"VOLUME_SHORT", EmitSingleChar, SCC_VOLUME_SHORT, 1, C_NONE},
|
||||||
|
Loading…
Reference in New Issue
Block a user