De-duplicate string IDs used for viewport town labels

pull/579/head
Jonathan G Rennison 10 months ago
parent 5f385a5573
commit 4c88256183

@ -30,21 +30,6 @@ STR_ORDER_CONDITIONAL_DISPATCH_SLOT :Výpravní slot
STR_ORDER_STOP_LOCATION_THROUGH :[postupná nakládka]
STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING :{WHITE}{TOWN} {RED}({COMMA})
STR_VIEWPORT_TOWN_POP_MEDIOCRE_RATING :{WHITE}{TOWN} {ORANGE}({COMMA})
STR_VIEWPORT_TOWN_POP_GOOD_RATING :{WHITE}{TOWN} {YELLOW}({COMMA})
STR_VIEWPORT_TOWN_POP_EXCELLENT_RATING :{WHITE}{TOWN} {GREEN}({COMMA})
STR_VIEWPORT_TOWN_VERY_POOR_RATING :{RED}{TOWN}
STR_VIEWPORT_TOWN_MEDIOCRE_RATING :{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_GOOD_RATING :{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_EXCELLENT_RATING :{GREEN}{TOWN}
STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING :{TINY_FONT}{RED}{TOWN}
STR_VIEWPORT_TOWN_TINY_MEDIOCRE_RATING :{TINY_FONT}{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_TINY_GOOD_RATING :{TINY_FONT}{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GREEN}{TOWN}
STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW :extrémně pomalá
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_SLOW :velmi pomalá
@ -2127,3 +2112,6 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :Nastaví, zda a
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :vypnutá
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_SIMPLE :stručná
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :podrobná
STR_VIEWPORT_TOWN_COLOUR :{1:SET_COLOUR}{0:TOWN}
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {SET_COLOUR}({COMMA})

@ -20,6 +20,9 @@ STR_JUST_TT_TICKS :{TT_TICKS}
STR_JUST_TT_TICKS_LONG :{TT_TICKS_LONG}
STR_RED_INT :{RED}{NUM}
STR_VIEWPORT_TOWN_LABEL :{VP_TOWN_LABEL1}
STR_VIEWPORT_TOWN_LABEL_TINY :{TINY_FONT}{VP_TOWN_LABEL2}
##no-translate off
##after STR_CONFIG_SETTING_TREE_PLACER_IMPROVED
@ -62,27 +65,6 @@ STR_ORDER_CONDITIONAL_DISPATCH_SLOT :Dispatch slot
##after STR_ORDER_STOP_LOCATION_FAR_END
STR_ORDER_STOP_LOCATION_THROUGH :[through load]
##before STR_VIEWPORT_TOWN_POP
STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING :{WHITE}{TOWN} {RED}({COMMA})
STR_VIEWPORT_TOWN_POP_MEDIOCRE_RATING :{WHITE}{TOWN} {ORANGE}({COMMA})
STR_VIEWPORT_TOWN_POP_GOOD_RATING :{WHITE}{TOWN} {YELLOW}({COMMA})
##after STR_VIEWPORT_TOWN_POP
STR_VIEWPORT_TOWN_POP_EXCELLENT_RATING :{WHITE}{TOWN} {GREEN}({COMMA})
##before STR_VIEWPORT_TOWN
STR_VIEWPORT_TOWN_VERY_POOR_RATING :{RED}{TOWN}
STR_VIEWPORT_TOWN_MEDIOCRE_RATING :{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_GOOD_RATING :{YELLOW}{TOWN}
##after STR_VIEWPORT_TOWN
STR_VIEWPORT_TOWN_EXCELLENT_RATING :{GREEN}{TOWN}
##before STR_VIEWPORT_TOWN_TINY_WHITE
STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING :{TINY_FONT}{RED}{TOWN}
STR_VIEWPORT_TOWN_TINY_MEDIOCRE_RATING :{TINY_FONT}{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_TINY_GOOD_RATING :{TINY_FONT}{YELLOW}{TOWN}
##after STR_VIEWPORT_TOWN_TINY_WHITE
STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GREEN}{TOWN}
##before STR_CONFIG_SETTING_TOWN_GROWTH_NONE
STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW :Extremely slow
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_SLOW :Very slow
@ -2184,3 +2166,6 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :Set whether sta
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :Off
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_SIMPLE :Simple
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :Detailed
STR_VIEWPORT_TOWN_COLOUR :{1:SET_COLOUR}{0:TOWN}
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {SET_COLOUR}({COMMA})

@ -30,21 +30,6 @@ STR_ORDER_CONDITIONAL_DISPATCH_SLOT :Slot de despach
STR_ORDER_STOP_LOCATION_THROUGH :[a través da carga]
STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING :{WHITE}{TOWN} {RED}({COMMA})
STR_VIEWPORT_TOWN_POP_MEDIOCRE_RATING :{WHITE}{TOWN} {ORANGE}({COMMA})
STR_VIEWPORT_TOWN_POP_GOOD_RATING :{WHITE}{TOWN} {YELLOW}({COMMA})
STR_VIEWPORT_TOWN_POP_EXCELLENT_RATING :{WHITE}{TOWN} {GREEN}({COMMA})
STR_VIEWPORT_TOWN_VERY_POOR_RATING :{RED}{TOWN}
STR_VIEWPORT_TOWN_MEDIOCRE_RATING :{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_GOOD_RATING :{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_EXCELLENT_RATING :{GREEN}{TOWN}
STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING :{TINY_FONT}{RED}{TOWN}
STR_VIEWPORT_TOWN_TINY_MEDIOCRE_RATING :{TINY_FONT}{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_TINY_GOOD_RATING :{TINY_FONT}{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GREEN}{TOWN}
STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW :Extremadamente lento
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_SLOW :Moi lento
@ -2132,3 +2117,6 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :Escolle se se a
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :Desactivado
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_SIMPLE :Simple
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :Detallado
STR_VIEWPORT_TOWN_COLOUR :{1:SET_COLOUR}{0:TOWN}
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {SET_COLOUR}({COMMA})

@ -28,21 +28,6 @@ STR_ORDER_CONDITIONAL_DISPATCH_SLOT :Abfahrztszeitfe
STR_ORDER_STOP_LOCATION_THROUGH :[durchgehendes Laden]
STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING :{WHITE}{TOWN} {RED}({COMMA})
STR_VIEWPORT_TOWN_POP_MEDIOCRE_RATING :{WHITE}{TOWN} {ORANGE}({COMMA})
STR_VIEWPORT_TOWN_POP_GOOD_RATING :{WHITE}{TOWN} {YELLOW}({COMMA})
STR_VIEWPORT_TOWN_POP_EXCELLENT_RATING :{WHITE}{TOWN} {GREEN}({COMMA})
STR_VIEWPORT_TOWN_VERY_POOR_RATING :{RED}{TOWN}
STR_VIEWPORT_TOWN_MEDIOCRE_RATING :{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_GOOD_RATING :{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_EXCELLENT_RATING :{GREEN}{TOWN}
STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING :{TINY_FONT}{RED}{TOWN}
STR_VIEWPORT_TOWN_TINY_MEDIOCRE_RATING :{TINY_FONT}{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_TINY_GOOD_RATING :{TINY_FONT}{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GREEN}{TOWN}
STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW :Extrem langsam
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_SLOW :Sehr langsam
@ -1807,3 +1792,6 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :Legt die Anzeig
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :Aus
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_SIMPLE :Einfach
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :Detailliert
STR_VIEWPORT_TOWN_COLOUR :{1:SET_COLOUR}{0:TOWN}
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {SET_COLOUR}({COMMA})

@ -30,21 +30,6 @@ STR_ORDER_CONDITIONAL_DISPATCH_SLOT :{G=m}배차일
STR_ORDER_STOP_LOCATION_THROUGH :[차례로 나눠 싣기]
STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING :{WHITE}{TOWN} {RED}({COMMA})
STR_VIEWPORT_TOWN_POP_MEDIOCRE_RATING :{WHITE}{TOWN} {ORANGE}({COMMA})
STR_VIEWPORT_TOWN_POP_GOOD_RATING :{WHITE}{TOWN} {YELLOW}({COMMA})
STR_VIEWPORT_TOWN_POP_EXCELLENT_RATING :{WHITE}{TOWN} {GREEN}({COMMA})
STR_VIEWPORT_TOWN_VERY_POOR_RATING :{RED}{TOWN}
STR_VIEWPORT_TOWN_MEDIOCRE_RATING :{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_GOOD_RATING :{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_EXCELLENT_RATING :{GREEN}{TOWN}
STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING :{TINY_FONT}{RED}{TOWN}
STR_VIEWPORT_TOWN_TINY_MEDIOCRE_RATING :{TINY_FONT}{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_TINY_GOOD_RATING :{TINY_FONT}{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GREEN}{TOWN}
STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW :매우 느림
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_SLOW :더 느림
@ -2134,3 +2119,6 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :역 등급 도
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :끄기
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_SIMPLE :간단히
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :자세히
STR_VIEWPORT_TOWN_COLOUR :{1:SET_COLOUR}{0:TOWN}
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {SET_COLOUR}({COMMA})

@ -28,21 +28,6 @@ STR_ORDER_CONDITIONAL_DISPATCH_SLOT :调度条目
STR_ORDER_STOP_LOCATION_THROUGH :[通过式装载]
STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING :{WHITE}{TOWN} {RED}{COMMA}
STR_VIEWPORT_TOWN_POP_MEDIOCRE_RATING :{WHITE}{TOWN} {ORANGE}{COMMA}
STR_VIEWPORT_TOWN_POP_GOOD_RATING :{WHITE}{TOWN} {YELLOW}{COMMA}
STR_VIEWPORT_TOWN_POP_EXCELLENT_RATING :{WHITE}{TOWN} {GREEN}{COMMA}
STR_VIEWPORT_TOWN_VERY_POOR_RATING :{RED}{TOWN}
STR_VIEWPORT_TOWN_MEDIOCRE_RATING :{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_GOOD_RATING :{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_EXCELLENT_RATING :{GREEN}{TOWN}
STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING :{TINY_FONT}{RED}{TOWN}
STR_VIEWPORT_TOWN_TINY_MEDIOCRE_RATING :{TINY_FONT}{ORANGE}{TOWN}
STR_VIEWPORT_TOWN_TINY_GOOD_RATING :{TINY_FONT}{YELLOW}{TOWN}
STR_VIEWPORT_TOWN_TINY_EXCELLENT_RATING :{TINY_FONT}{GREEN}{TOWN}
STR_CONFIG_SETTING_TOWN_GROWTH_EXTREME_SLOW :极其慢
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_SLOW :非常慢
@ -1942,3 +1927,6 @@ STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_HELPTEXT :设定车站等
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_OFF :关闭
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_SIMPLE :简单
STR_CONFIG_SETTING_STATION_RATING_TOOLTIP_MODE_DETAILED :详细
STR_VIEWPORT_TOWN_COLOUR :{1:SET_COLOUR}{0:TOWN}
STR_VIEWPORT_TOWN_COLOUR_POP :{WHITE}{TOWN} {SET_COLOUR}{COMMA}

@ -1931,6 +1931,22 @@ static char *FormatString(char *buff, const char *str_arg, StringParameters *arg
break;
}
case SCC_VIEWPORT_TOWN_LABEL1:
case SCC_VIEWPORT_TOWN_LABEL2: { // {VIEWPORT_TOWN_LABEL1..2}
int32 t = args->GetInt32(b);
uint64 data = (uint64)args->GetInt64(b);
bool tiny = (b == SCC_VIEWPORT_TOWN_LABEL2);
StringID string_id = STR_VIEWPORT_TOWN_COLOUR;
if (!tiny && HasBit(data, 40)) {
string_id = STR_VIEWPORT_TOWN_COLOUR_POP;
}
int64 args_array[] = {t, GB(data, 32, 8), GB(data, 0, 32)};
StringParameters tmp_params(args_array);
buff = GetStringWithArgs(buff, string_id, &tmp_params, last);
break;
}
case SCC_WAYPOINT_NAME: { // {WAYPOINT}
Waypoint *wp = Waypoint::GetIfValid(args->GetInt32(SCC_WAYPOINT_NAME));
if (wp == nullptr) break;

@ -50,6 +50,9 @@ enum StringControlCode {
SCC_TR_SLOT_NAME,
SCC_TR_COUNTER_NAME,
SCC_VIEWPORT_TOWN_LABEL1,
SCC_VIEWPORT_TOWN_LABEL2,
SCC_CURRENCY_SHORT,
SCC_CURRENCY_LONG,

@ -137,6 +137,9 @@ static const CmdStruct _cmd_structs[] = {
{"TRSLOT", EmitSingleChar, SCC_TR_SLOT_NAME, 1, -1, C_NONE | C_GENDER},
{"TRCOUNTER", EmitSingleChar, SCC_TR_COUNTER_NAME, 1, -1, C_NONE | C_GENDER},
{"VP_TOWN_LABEL1", EmitSingleChar, SCC_VIEWPORT_TOWN_LABEL1, 2, -1, C_NONE},
{"VP_TOWN_LABEL2", EmitSingleChar, SCC_VIEWPORT_TOWN_LABEL2, 2, -1, C_NONE},
{"", EmitSingleChar, '\n', 0, -1, C_DONTCOUNT},
{"{", EmitSingleChar, '{', 0, -1, C_DONTCOUNT},
{"UP_ARROW", EmitSingleChar, SCC_UP_ARROW, 0, -1, C_DONTCOUNT},

@ -102,7 +102,7 @@ struct Town : TownPool::PoolItem<&_town_pool> {
CompanyID exclusivity; ///< which company has exclusivity
uint8 exclusive_counter; ///< months till the exclusivity expires
int16 ratings[MAX_COMPANIES]; ///< ratings of each company for this town
StringID town_label; ///< Label dependent on _local_company rating.
uint8 town_label_rating; ///< Label dependent on _local_company rating.
TransportedCargoStat<uint32> supplied[NUM_CARGO]; ///< Cargo statistics about supplied cargo.
TransportedCargoStat<uint16> received[NUM_TE]; ///< Cargo statistics about received cargotypes.
@ -141,28 +141,7 @@ struct Town : TownPool::PoolItem<&_town_pool> {
void InitializeLayout(TownLayout layout);
void UpdateLabel();
/**
* Returns the correct town label, based on rating.
*/
inline StringID Label() const{
if (!(_game_mode == GM_EDITOR) && (_local_company < MAX_COMPANIES)) {
return (_settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP_VERY_POOR_RATING : STR_VIEWPORT_TOWN_VERY_POOR_RATING) + this->town_label;
} else {
return _settings_client.gui.population_in_label ? STR_VIEWPORT_TOWN_POP : STR_VIEWPORT_TOWN;
}
}
/**
* Returns the correct town small label, based on rating.
*/
inline StringID SmallLabel() const{
if (!(_game_mode == GM_EDITOR) && (_local_company < MAX_COMPANIES)) {
return STR_VIEWPORT_TOWN_TINY_VERY_POOR_RATING + this->town_label;
} else {
return STR_VIEWPORT_TOWN_TINY_WHITE;
}
}
uint64 LabelParam2() const;
/**
* Calculate the max town noise.

@ -221,12 +221,30 @@ void Town::UpdateLabel()
{
if (!(_game_mode == GM_EDITOR) && (_local_company < MAX_COMPANIES)) {
int r = this->ratings[_local_company];
this->town_label = 0; // Appalling and Very Poor
if (r > RATING_VERYPOOR) this->town_label++; // Poor and Mediocre
if (r > RATING_MEDIOCRE) this->town_label++; // Good
if (r > RATING_GOOD) this->town_label++; // Very Good
if (r > RATING_VERYGOOD) this->town_label++; // Excellent and Outstanding
int town_rating = 0; // Appalling and Very Poor
if (r > RATING_VERYPOOR) town_rating++; // Poor and Mediocre
if (r > RATING_MEDIOCRE) town_rating++; // Good
if (r > RATING_GOOD) town_rating++; // Very Good
if (r > RATING_VERYGOOD) town_rating++; // Excellent and Outstanding
static const uint8 tcs[] = { TC_RED, TC_ORANGE, TC_YELLOW, TC_WHITE, TC_GREEN };
this->town_label_rating = tcs[town_rating];
}
}
/**
* Get the second dparam value for town viewport labels
*/
uint64 Town::LabelParam2() const
{
uint64 value = this->cache.population;
if (!(_game_mode == GM_EDITOR) && (_local_company < MAX_COMPANIES)) {
SB(value, 32, 8, this->town_label_rating);
} else {
SB(value, 32, 8, TC_WHITE);
}
if (_settings_client.gui.population_in_label) SetBit(value, 40);
return value;
}
void Town::FillCachedName() const
@ -520,8 +538,8 @@ void Town::UpdateVirtCoord()
if (_viewport_sign_kdtree_valid && this->cache.sign.kdtree_valid) _viewport_sign_kdtree.Remove(ViewportSignKdtreeItem::MakeTown(this->index));
SetDParam(0, this->index);
SetDParam(1, this->cache.population);
this->cache.sign.UpdatePosition(HasBit(_display_opt, DO_SHOW_TOWN_NAMES) ? ZOOM_LVL_OUT_128X : ZOOM_LVL_END, pt.x, pt.y - 24 * ZOOM_LVL_BASE, this->Label(), STR_VIEWPORT_TOWN_TINY_WHITE);
SetDParam(1, this->LabelParam2());
this->cache.sign.UpdatePosition(HasBit(_display_opt, DO_SHOW_TOWN_NAMES) ? ZOOM_LVL_OUT_128X : ZOOM_LVL_END, pt.x, pt.y - 24 * ZOOM_LVL_BASE, STR_VIEWPORT_TOWN_LABEL, STR_VIEWPORT_TOWN_TINY_WHITE);
if (_viewport_sign_kdtree_valid) _viewport_sign_kdtree.Insert(ViewportSignKdtreeItem::MakeTown(this->index));

@ -1909,8 +1909,8 @@ static void ViewportAddKdtreeSigns(ViewportDrawerDynamic *vdd, DrawPixelInfo *dp
for (const auto *t : towns) {
ViewportAddString(vdd, dpi, ZOOM_LVL_OUT_16X, &t->cache.sign,
t->Label(), t->SmallLabel(), STR_VIEWPORT_TOWN_TINY_BLACK,
t->index, t->cache.population);
STR_VIEWPORT_TOWN_LABEL, STR_VIEWPORT_TOWN_LABEL_TINY, STR_VIEWPORT_TOWN_TINY_BLACK,
t->index, t->LabelParam2());
}
for (const auto *si : signs) {

Loading…
Cancel
Save