Merge branch 'enhanced_viewport_overlay-sx' into jgrpp
This commit is contained in:
@@ -231,6 +231,7 @@ struct DepotWindow : Window {
|
|||||||
VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none.
|
VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none.
|
||||||
VehicleType type;
|
VehicleType type;
|
||||||
bool generate_list;
|
bool generate_list;
|
||||||
|
bool sell_hovered; ///< A vehicle is being dragged/hovered over the sell button.
|
||||||
VehicleList vehicle_list;
|
VehicleList vehicle_list;
|
||||||
VehicleList wagon_list;
|
VehicleList wagon_list;
|
||||||
uint unitnumber_digits;
|
uint unitnumber_digits;
|
||||||
@@ -245,6 +246,7 @@ struct DepotWindow : Window {
|
|||||||
this->sel = INVALID_VEHICLE;
|
this->sel = INVALID_VEHICLE;
|
||||||
this->vehicle_over = INVALID_VEHICLE;
|
this->vehicle_over = INVALID_VEHICLE;
|
||||||
this->generate_list = true;
|
this->generate_list = true;
|
||||||
|
this->sell_hovered = false;
|
||||||
this->type = type;
|
this->type = type;
|
||||||
this->num_columns = 1; // for non-trains this gets set in FinishInitNested()
|
this->num_columns = 1; // for non-trains this gets set in FinishInitNested()
|
||||||
this->unitnumber_digits = 2;
|
this->unitnumber_digits = 2;
|
||||||
@@ -869,11 +871,24 @@ struct DepotWindow : Window {
|
|||||||
this->sel = INVALID_VEHICLE;
|
this->sel = INVALID_VEHICLE;
|
||||||
this->vehicle_over = INVALID_VEHICLE;
|
this->vehicle_over = INVALID_VEHICLE;
|
||||||
this->SetWidgetDirty(WID_D_MATRIX);
|
this->SetWidgetDirty(WID_D_MATRIX);
|
||||||
|
|
||||||
|
if (this->sell_hovered) {
|
||||||
|
this->SetWidgetLoweredState(WID_D_SELL, false);
|
||||||
|
this->SetWidgetDirty(WID_D_SELL);
|
||||||
|
this->sell_hovered = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void OnMouseDrag(Point pt, int widget)
|
virtual void OnMouseDrag(Point pt, int widget)
|
||||||
{
|
{
|
||||||
if (this->type != VEH_TRAIN || this->sel == INVALID_VEHICLE) return;
|
if (this->sel == INVALID_VEHICLE) return;
|
||||||
|
bool is_sell_widget = widget == WID_D_SELL;
|
||||||
|
if (is_sell_widget != this->sell_hovered) {
|
||||||
|
this->sell_hovered = is_sell_widget;
|
||||||
|
this->SetWidgetLoweredState(WID_D_SELL, is_sell_widget);
|
||||||
|
this->SetWidgetDirty(WID_D_SELL);
|
||||||
|
}
|
||||||
|
if (this->type != VEH_TRAIN) return;
|
||||||
|
|
||||||
/* A rail vehicle is dragged.. */
|
/* A rail vehicle is dragged.. */
|
||||||
if (widget != WID_D_MATRIX) { // ..outside of the depot matrix.
|
if (widget != WID_D_MATRIX) { // ..outside of the depot matrix.
|
||||||
@@ -960,7 +975,9 @@ struct DepotWindow : Window {
|
|||||||
default:
|
default:
|
||||||
this->sel = INVALID_VEHICLE;
|
this->sel = INVALID_VEHICLE;
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
this->sell_hovered = false;
|
||||||
_cursor.vehchain = false;
|
_cursor.vehchain = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -645,8 +645,8 @@ STR_MUSIC_PLAYLIST_CUSTOM_1 :{TINY_FONT}{BLA
|
|||||||
STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Personal 2
|
STR_MUSIC_PLAYLIST_CUSTOM_2 :{TINY_FONT}{BLACK}Personal 2
|
||||||
STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volumen música
|
STR_MUSIC_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volumen música
|
||||||
STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volumen efectos
|
STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volumen efectos
|
||||||
STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN
|
STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MÍN
|
||||||
STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX
|
STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MÁX
|
||||||
STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}'
|
STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}'
|
||||||
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
||||||
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
|
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
|
||||||
@@ -942,7 +942,7 @@ STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Francés
|
|||||||
STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Alemán
|
STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Alemán
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Inglés (Adicional)
|
STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Inglés (Adicional)
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinoamericano
|
STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Latinoamericano
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_SILLY :Absurdos
|
STR_GAME_OPTIONS_TOWN_NAME_SILLY :Tontos - Absurdos
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sueco
|
STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Sueco
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holandés
|
STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Holandés
|
||||||
STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finlandés
|
STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finlandés
|
||||||
@@ -990,7 +990,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Tamaño cuádru
|
|||||||
|
|
||||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base
|
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base
|
||||||
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar
|
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecciona el conjunto de gráficos base a usar
|
||||||
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} fichero{P "" s} perdido{P "" s} o corrupto{P "" s}
|
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} archivo{P "" s} perdido{P "" s} o corrupto{P "" s}
|
||||||
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre el set de gráficos base
|
STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Información adicional sobre el set de gráficos base
|
||||||
|
|
||||||
STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sonidos base
|
STR_GAME_OPTIONS_BASE_SFX :{BLACK}Conjunto de sonidos base
|
||||||
@@ -1031,7 +1031,7 @@ STR_CURRENCY_PREVIEW :{LTBLUE}Previa:
|
|||||||
STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Libras(£) en tu moneda
|
STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 Libras(£) en tu moneda
|
||||||
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Cambiar parámetro de moneda personalizada
|
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Cambiar parámetro de moneda personalizada
|
||||||
|
|
||||||
STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Num. Máximo de jugadores: {ORANGE}{COMMA}
|
STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Núm. máximo de jugadores: {ORANGE}{COMMA}
|
||||||
|
|
||||||
STR_NONE :Ninguno
|
STR_NONE :Ninguno
|
||||||
STR_FUNDING_ONLY :Solo fundadas
|
STR_FUNDING_ONLY :Solo fundadas
|
||||||
@@ -1087,7 +1087,7 @@ STR_CITY_APPROVAL_PERMISSIVE :Permisiva
|
|||||||
STR_CITY_APPROVAL_TOLERANT :Tolerante
|
STR_CITY_APPROVAL_TOLERANT :Tolerante
|
||||||
STR_CITY_APPROVAL_HOSTILE :Hostil
|
STR_CITY_APPROVAL_HOSTILE :Hostil
|
||||||
|
|
||||||
STR_WARNING_NO_SUITABLE_AI :{WHITE}No se encontraron IA apropiadas...{}Puedes descargar IA a través del sistema de 'Contenido Online'
|
STR_WARNING_NO_SUITABLE_AI :{WHITE}No se encontraron IAs apropiadas...{}Puedes descargar IAs a través del sistema de 'Contenido Online'
|
||||||
|
|
||||||
# Settings tree window
|
# Settings tree window
|
||||||
STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Configuración
|
STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}Configuración
|
||||||
@@ -1141,15 +1141,15 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_CENTER :Centro
|
|||||||
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Derecha
|
STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :Derecha
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Máximo préstamo inicial: {STRING}
|
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN :Máximo préstamo inicial: {STRING}
|
||||||
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Máxima cantidad que una compañía puede tomar en un préstamo (sin tener en cuenta la inflación)
|
STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Máxima cantidad que una compañía puede recibir en un préstamo (sin tener en cuenta la inflación)
|
||||||
STR_CONFIG_SETTING_INTEREST_RATE :Porcentaje de interés: {STRING}
|
STR_CONFIG_SETTING_INTEREST_RATE :Porcentaje de interés: {STRING}
|
||||||
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Porcentaje de interés de los préstamos; también controla la inflación en el caso de que esté activada
|
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Porcentaje de interés de los préstamos; también controla la inflación, en caso de que esté activada
|
||||||
STR_CONFIG_SETTING_RUNNING_COSTS :Costes de operación: {STRING}
|
STR_CONFIG_SETTING_RUNNING_COSTS :Costes de operación: {STRING}
|
||||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Permite fijar el nivel de los costes de mantenimiento y operación de vehículos e infraestructuras
|
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Permite fijar el nivel de los costes de mantenimiento y operación de vehículos e infraestructuras
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidad de construcción: {STRING}
|
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Velocidad de construcción: {STRING}
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la velocidad de las acciones de construcción para las IA
|
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la velocidad de las acciones de construcción para las IA
|
||||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Averías de vehículos: {STRING}
|
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Averías de vehículos: {STRING}
|
||||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla la frecuencia con la que los vehículos que no hayan tenido un mantenimiento adecuado se rompen
|
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controla la frecuencia con la que los vehículos, con mantenimiento inadecuado, se rompen
|
||||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador por subsidio: {STRING}
|
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Multiplicador por subsidio: {STRING}
|
||||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Permite fijar a cuanto se pagan las conexiones con subsidio
|
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Permite fijar a cuanto se pagan las conexiones con subsidio
|
||||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costes de construcción: {STRING}
|
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costes de construcción: {STRING}
|
||||||
@@ -1157,11 +1157,11 @@ STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fija el nivel d
|
|||||||
STR_CONFIG_SETTING_RECESSIONS :Recesiones: {STRING}
|
STR_CONFIG_SETTING_RECESSIONS :Recesiones: {STRING}
|
||||||
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si se activa, ocurrirán recesiones cada pocos años. Durante una recesión, toda la producción es significativamente menor (volverá a su nivel anterior una vez acabe la recesión)
|
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si se activa, ocurrirán recesiones cada pocos años. Durante una recesión, toda la producción es significativamente menor (volverá a su nivel anterior una vez acabe la recesión)
|
||||||
STR_CONFIG_SETTING_TRAIN_REVERSING :Prohibir cambio de dirección de trenes en estaciones: {STRING}
|
STR_CONFIG_SETTING_TRAIN_REVERSING :Prohibir cambio de dirección de trenes en estaciones: {STRING}
|
||||||
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si se activa, los trenes no se darán la vuelta en estaciones no finales en el caso de que haya un camino más cercano si se dan la vuelta
|
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si se activa, los trenes no se darán la vuelta en estaciones no finales, ni aún existiendo un camino más corto a su próximo destino si se dan la vuelta
|
||||||
STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING}
|
STR_CONFIG_SETTING_DISASTERS :Desastres: {STRING}
|
||||||
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa desastres que ocasionalmente pueden bloquear o destruir vehículos o infraestructuras
|
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa desastres que ocasionalmente pueden bloquear o destruir vehículos o infraestructuras
|
||||||
STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de los municipios frente a reestructuraciones en su zona: {STRING}
|
STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de los municipios frente a reestructuraciones en su zona: {STRING}
|
||||||
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Permite elegir la medida en la que el ruido y el daño ambiental causado por las compañías afecta a su calificación local en los municipios
|
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Permite elegir en que medida el ruido y el daño ambiental causado por las compañías afecta a su calificación y nuevas acciones de construcción en los municipios
|
||||||
|
|
||||||
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima del mapa: {STRING}
|
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima del mapa: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Establece la altura máxima permitida para las montañas en el mapa
|
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Establece la altura máxima permitida para las montañas en el mapa
|
||||||
@@ -1173,7 +1173,7 @@ STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permite tener d
|
|||||||
STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir eliminar más propiedades de los municipios: {STRING}
|
STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir eliminar más propiedades de los municipios: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Hace que sea más fácil eliminar infraestructuras y edificios de los municipios
|
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Hace que sea más fácil eliminar infraestructuras y edificios de los municipios
|
||||||
STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud máxima de trenes: {STRING}
|
STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud máxima de trenes: {STRING}
|
||||||
STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Permite cambiar la longitud máxima de trenes
|
STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Permite cambiar la longitud máxima de los trenes
|
||||||
STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} casilla{P 0 "" s}
|
STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} casilla{P 0 "" s}
|
||||||
STR_CONFIG_SETTING_SMOKE_AMOUNT :Cantidad de humo/chispas: {STRING}
|
STR_CONFIG_SETTING_SMOKE_AMOUNT :Cantidad de humo/chispas: {STRING}
|
||||||
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Permite indicar la cantidad de humo o chispas que son emitidos por vehículos
|
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Permite indicar la cantidad de humo o chispas que son emitidos por vehículos
|
||||||
@@ -1193,11 +1193,11 @@ STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite añadir
|
|||||||
STR_CONFIG_SETTING_INFLATION :Inflación: {STRING}
|
STR_CONFIG_SETTING_INFLATION :Inflación: {STRING}
|
||||||
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activa la inflación económica, lo cual hace que los costes aumenten ligeramente más rápido que los beneficios
|
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Activa la inflación económica, lo cual hace que los costes aumenten ligeramente más rápido que los beneficios
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Longitud máxima de puentes: {STRING}
|
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Longitud máxima de puentes: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Máxima longitud permitida para puentes
|
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Longitud máxima permitida para los puentes
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de puentes: {STRING}
|
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Altura máxima de puentes: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima permitida al construir puentes
|
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Altura máxima permitida al construir puentes
|
||||||
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Longitud máxima de túneles: {STRING}
|
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Longitud máxima de túneles: {STRING}
|
||||||
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Máxima longitud permitida para túneles
|
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Longitud máxima permitida para los túneles
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de construcción de industria primaria: {STRING}
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Método de construcción de industria primaria: {STRING}
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Forma de fundar industrias primarias. 'ninguno' significa que no se puede crear ninguna, 'prospeccón' significa que es posible crear nuevas industrias, pero que éstas aparecen en un lugar aleatorio del mapa y pueden fallar. 'como las otras industrias' significa que las industrias primarias pueden construirse como el resto de industrias en cualquier lugar que se quiera
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Forma de fundar industrias primarias. 'ninguno' significa que no se puede crear ninguna, 'prospeccón' significa que es posible crear nuevas industrias, pero que éstas aparecen en un lugar aleatorio del mapa y pueden fallar. 'como las otras industrias' significa que las industrias primarias pueden construirse como el resto de industrias en cualquier lugar que se quiera
|
||||||
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ninguno
|
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ninguno
|
||||||
@@ -1213,7 +1213,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_LEFT :A la izquierda
|
|||||||
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :En el lado de conducción
|
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :En el lado de conducción
|
||||||
STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :A la derecha
|
STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :A la derecha
|
||||||
STR_CONFIG_SETTING_SHOWFINANCES :Mostrar ventana de finanzas al final del año: {STRING}
|
STR_CONFIG_SETTING_SHOWFINANCES :Mostrar ventana de finanzas al final del año: {STRING}
|
||||||
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Si se activa, la ventana de finanzas aparecerá al final de cada año para permitir inspeccionar de forma fácil el estado financiero de la compañía
|
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Si se activa, la ventana de finanzas aparecerá al final de cada año para permitir inspeccionar fácilmente el estado financiero de la compañía
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nuevas órdenes son 'sin parada' por defecto: {STRING}
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nuevas órdenes son 'sin parada' por defecto: {STRING}
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, un vehículo se detendrá en todas las estaciones por las que pase. Si se activa esta opción, pasará sin detenerse a través de todas las estaciones hasta llegar a su destino. Esta opción solamente cambia el comportamiento por defecto de las órdenes nuevas. Es posible especificar para cada orden el comportamiento que se desea
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, un vehículo se detendrá en todas las estaciones por las que pase. Si se activa esta opción, pasará sin detenerse a través de todas las estaciones hasta llegar a su destino. Esta opción solamente cambia el comportamiento por defecto de las órdenes nuevas. Es posible especificar para cada orden el comportamiento que se desea
|
||||||
STR_CONFIG_SETTING_STOP_LOCATION :Nuevos trenes paran por defecto en el {STRING} de la plataforma
|
STR_CONFIG_SETTING_STOP_LOCATION :Nuevos trenes paran por defecto en el {STRING} de la plataforma
|
||||||
@@ -1236,7 +1236,7 @@ STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite a las c
|
|||||||
STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permitir pagar la reconstrucción de las carreteras locales: {STRING}
|
STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permitir pagar la reconstrucción de las carreteras locales: {STRING}
|
||||||
STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite a las compañías dar dinero a los municipios para que reconstruyan sus carreteras, saboteando los servicios de carretera en la zona
|
STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite a las compañías dar dinero a los municipios para que reconstruyan sus carreteras, saboteando los servicios de carretera en la zona
|
||||||
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinero a otras empresas: {STRING}
|
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinero a otras empresas: {STRING}
|
||||||
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite la transferencia de dinero entre compañías en modo multijugador
|
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite la transferencia de dinero entre compañías en el modo multijugador
|
||||||
STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para simular trenes pesados: {STRING}
|
STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para simular trenes pesados: {STRING}
|
||||||
STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Permite fijar el impacto de llevar mercancías en los trenes. Un valor alto hace que a los trenes les cueste más llevar carga, especialmente en colinas
|
STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Permite fijar el impacto de llevar mercancías en los trenes. Un valor alto hace que a los trenes les cueste más llevar carga, especialmente en colinas
|
||||||
STR_CONFIG_SETTING_PLANE_SPEED :Factor de velocidad de aeronaves: {STRING}
|
STR_CONFIG_SETTING_PLANE_SPEED :Factor de velocidad de aeronaves: {STRING}
|
||||||
@@ -1247,8 +1247,8 @@ STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Fija la probabi
|
|||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ninguno
|
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Ninguno
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reducida
|
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reducida
|
||||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal
|
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite construir paradas sobre carreteras de los municipios: {STRING}
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir construir paradas sobre carreteras de los municipios: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de municipios
|
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construir estaciones de paso en carreteras que sean propiedad de los municipios
|
||||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir pasar a través de las paradas de carretera de los competidores: {STRING}
|
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir pasar a través de las paradas de carretera de los competidores: {STRING}
|
||||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de otras compañías
|
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de otras compañías
|
||||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cambiar esta opción no es posible cuando ya existen vehículos
|
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Cambiar esta opción no es posible cuando ya existen vehículos
|
||||||
@@ -2810,14 +2810,14 @@ STR_NEWGRF_SETTINGS_MOVEUP :{BLACK}Mover Ar
|
|||||||
STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado arriba en la lista
|
STR_NEWGRF_SETTINGS_MOVEUP_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado arriba en la lista
|
||||||
STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mover Abajo
|
STR_NEWGRF_SETTINGS_MOVEDOWN :{BLACK}Mover Abajo
|
||||||
STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado abajo en la lista
|
STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado abajo en la lista
|
||||||
STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualiza
|
STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualizar
|
||||||
STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Utiliza las versiones más nuevas de los archivos NewGRF que dispongan de diversas versiones instaladas
|
STR_NEWGRF_SETTINGS_UPGRADE_TOOLTIP :{BLACK}Actualizar a la versión más reciente de los archivos NewGRF que tengan varias instaladas
|
||||||
STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Una lista de los archivos NewGRF instalados
|
STR_NEWGRF_SETTINGS_FILE_TOOLTIP :{BLACK}Una lista de los archivos NewGRF instalados
|
||||||
|
|
||||||
STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Establecer parámetros
|
STR_NEWGRF_SETTINGS_SET_PARAMETERS :{BLACK}Establecer parámetros
|
||||||
STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parámetros
|
STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parámetros
|
||||||
STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Seleccionar paleta
|
STR_NEWGRF_SETTINGS_TOGGLE_PALETTE :{BLACK}Seleccionar paleta
|
||||||
STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Seleccionar la paleta del NewGRF seleccionado.{}Esto es necesario cuando los gráficos de este NewGRF se vean de color rosa
|
STR_NEWGRF_SETTINGS_TOGGLE_PALETTE_TOOLTIP :{BLACK}Cambiar la paleta del NewGRF seleccionado.{}Esto es necesario cuando los gráficos de un NewGRF se ven de color rosa durante el juego
|
||||||
STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplicar cambios
|
STR_NEWGRF_SETTINGS_APPLY_CHANGES :{BLACK}Aplicar cambios
|
||||||
|
|
||||||
STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Encontrar contenido que falta en línea
|
STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON :{BLACK}Encontrar contenido que falta en línea
|
||||||
@@ -2831,7 +2831,7 @@ STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5sum:
|
|||||||
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
|
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
|
||||||
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parámetros: {SILVER}{STRING}
|
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parámetros: {SILVER}{STRING}
|
||||||
|
|
||||||
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}No tiene información disponible
|
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}No hay información disponible
|
||||||
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Archivo no encontrado
|
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Archivo no encontrado
|
||||||
STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivado
|
STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivado
|
||||||
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible con esta versión de OpenTTD
|
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Incompatible con esta versión de OpenTTD
|
||||||
@@ -2898,7 +2898,7 @@ STR_NEWGRF_ERROR_INVALID_PARAMETER :Parámetro inco
|
|||||||
STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} debe ser cargado antes de {STRING}
|
STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING} debe ser cargado antes de {STRING}
|
||||||
STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} debe ser cargado después de {STRING}
|
STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING} debe ser cargado después de {STRING}
|
||||||
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} requiere OpenTTD versión {STRING} o superior
|
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING} requiere OpenTTD versión {STRING} o superior
|
||||||
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :El fichero GRF ha sido diseñado para ser traducido
|
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :El archivo GRF ha sido diseñado para ser traducido
|
||||||
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Demasiados NewGRFs han sido cargados
|
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Demasiados NewGRFs han sido cargados
|
||||||
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Cargar {1:STRING} como NewGRF estático con {STRING} puede causar desincronizaciones
|
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Cargar {1:STRING} como NewGRF estático con {STRING} puede causar desincronizaciones
|
||||||
STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite inesperado (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Sprite inesperado (sprite {3:NUM})
|
||||||
@@ -2919,7 +2919,7 @@ STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Se van
|
|||||||
|
|
||||||
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}No se puede añadir: GRF ID duplicado
|
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}No se puede añadir: GRF ID duplicado
|
||||||
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Archivo no encontrado (GRF compatible cargado)
|
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}Archivo no encontrado (GRF compatible cargado)
|
||||||
STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}No se puede añadir fichero: Límite de ficheros NewGRF alcanzado
|
STR_NEWGRF_TOO_MANY_NEWGRFS :{WHITE}No se puede añadir archivo: Alcanzado el máximo de NewGRFs permitidos
|
||||||
|
|
||||||
STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatibles cargados para archivos que faltan
|
STR_NEWGRF_COMPATIBLE_LOAD_WARNING :{WHITE}GRF(s) compatibles cargados para archivos que faltan
|
||||||
STR_NEWGRF_DISABLED_WARNING :{WHITE}Archivo(s) GRF no encontrados han sido desactivados
|
STR_NEWGRF_DISABLED_WARNING :{WHITE}Archivo(s) GRF no encontrados han sido desactivados
|
||||||
@@ -2928,9 +2928,9 @@ STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Quitar l
|
|||||||
|
|
||||||
# NewGRF status
|
# NewGRF status
|
||||||
STR_NEWGRF_LIST_NONE :Ninguno
|
STR_NEWGRF_LIST_NONE :Ninguno
|
||||||
STR_NEWGRF_LIST_ALL_FOUND :Todos los ficheros presentes
|
STR_NEWGRF_LIST_ALL_FOUND :Todos los archivos presentes
|
||||||
STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Archivos compatibles encontrados
|
STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}Archivos compatibles encontrados
|
||||||
STR_NEWGRF_LIST_MISSING :{RED}Ficheros que faltan
|
STR_NEWGRF_LIST_MISSING :{RED}Archivos que faltan
|
||||||
|
|
||||||
# NewGRF 'it's broken' warnings
|
# NewGRF 'it's broken' warnings
|
||||||
STR_NEWGRF_BROKEN :{WHITE}Es probable que el funcionamiento del NewGRF '{0:STRING}' cause desincronizaciones o fallos
|
STR_NEWGRF_BROKEN :{WHITE}Es probable que el funcionamiento del NewGRF '{0:STRING}' cause desincronizaciones o fallos
|
||||||
@@ -2939,8 +2939,8 @@ STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Ha cambi
|
|||||||
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ha cambiado la capacidad del vehículo para '{1:ENGINE}' fuera de un depósito o mientras no se estaba remodelando
|
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Ha cambiado la capacidad del vehículo para '{1:ENGINE}' fuera de un depósito o mientras no se estaba remodelando
|
||||||
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tren '{VEHICLE}' perteneciente a '{COMPANY}' tiene una longitud incorrecta. Puede ser debido a problemas con los NewGRF. El juego puede fallar
|
STR_BROKEN_VEHICLE_LENGTH :{WHITE}Tren '{VEHICLE}' perteneciente a '{COMPANY}' tiene una longitud incorrecta. Puede ser debido a problemas con los NewGRF. El juego puede fallar
|
||||||
|
|
||||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{STRING}' da información incorrecta
|
STR_NEWGRF_BUGGY :{WHITE}El NewGRF '{0:STRING}' da información incorrecta
|
||||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Información de carga/reforma para '{1:ENGINE}' difiere tras la de la lista de compra después de la construcción. Esto puede causar que la renovación/reemplazo automáticos no reformen correctamente
|
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La información de carga/reforma para '{1:ENGINE}' difiere de la de lista de compra después de la construcción. Esto puede causar que la renovación/reemplazo automático no haga la reforma correcta
|
||||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha causado un bucle sin fin en la 'callback' de producción
|
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' ha causado un bucle sin fin en la 'callback' de producción
|
||||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Callback' {1:HEX} devolvió el resultado desconocido o inválido {2:HEX}
|
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}'Callback' {1:HEX} devolvió el resultado desconocido o inválido {2:HEX}
|
||||||
|
|
||||||
@@ -3023,7 +3023,7 @@ STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Pagar la recons
|
|||||||
STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Poner una estatua al dueño de la empresa
|
STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Poner una estatua al dueño de la empresa
|
||||||
STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Pagar la construcción de nuevos edificios
|
STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Pagar la construcción de nuevos edificios
|
||||||
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Comprar la exclusiva de los servicios de transporte
|
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Comprar la exclusiva de los servicios de transporte
|
||||||
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Sobornar la autoridad local
|
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Sobornar a la autoridad local
|
||||||
|
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar una pequeña campaña publicitaria local para atraer más pasajeros y carga a sus servicios de transporte.{}Coste: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar una pequeña campaña publicitaria local para atraer más pasajeros y carga a sus servicios de transporte.{}Coste: {CURRENCY_LONG}
|
||||||
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local mediana para atraer más pasajeros y carga a sus servicios de transporte.{}Coste: {CURRENCY_LONG}
|
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local mediana para atraer más pasajeros y carga a sus servicios de transporte.{}Coste: {CURRENCY_LONG}
|
||||||
|
@@ -282,10 +282,22 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Filter data for NetworkContentListWindow. */
|
||||||
|
struct ContentListFilterData {
|
||||||
|
StringFilter string_filter; ///< Text filter of content list
|
||||||
|
ContentType type; ///< Content type displayed
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Filter criterias for NetworkContentListWindow. */
|
||||||
|
enum ContentListFilterCriteria {
|
||||||
|
CONTENT_FILTER_TEXT = 0, ///< Filter by query sting
|
||||||
|
CONTENT_FILTER_TYPE_OR_SELECTED,///< Filter by being of displayed type or selected for download
|
||||||
|
};
|
||||||
|
|
||||||
/** Window that lists the content that's at the content server */
|
/** Window that lists the content that's at the content server */
|
||||||
class NetworkContentListWindow : public Window, ContentCallback {
|
class NetworkContentListWindow : public Window, ContentCallback {
|
||||||
/** List with content infos. */
|
/** List with content infos. */
|
||||||
typedef GUIList<const ContentInfo *, StringFilter &> GUIContentList;
|
typedef GUIList<const ContentInfo *, ContentListFilterData &> GUIContentList;
|
||||||
|
|
||||||
static const uint EDITBOX_MAX_SIZE = 50; ///< Maximum size of the editbox in characters.
|
static const uint EDITBOX_MAX_SIZE = 50; ///< Maximum size of the editbox in characters.
|
||||||
|
|
||||||
@@ -295,7 +307,7 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
|||||||
static GUIContentList::FilterFunction * const filter_funcs[]; ///< Filter functions.
|
static GUIContentList::FilterFunction * const filter_funcs[]; ///< Filter functions.
|
||||||
GUIContentList content; ///< List with content
|
GUIContentList content; ///< List with content
|
||||||
bool auto_select; ///< Automatically select all content when the meta-data becomes available
|
bool auto_select; ///< Automatically select all content when the meta-data becomes available
|
||||||
StringFilter string_filter; ///< Filter for content list
|
ContentListFilterData filter_data; ///< Filter for content list
|
||||||
QueryString filter_editbox; ///< Filter editbox;
|
QueryString filter_editbox; ///< Filter editbox;
|
||||||
Dimension checkbox_size; ///< Size of checkbox/"blot" sprite
|
Dimension checkbox_size; ///< Size of checkbox/"blot" sprite
|
||||||
|
|
||||||
@@ -431,20 +443,38 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Filter content by tags/name */
|
/** Filter content by tags/name */
|
||||||
static bool CDECL TagNameFilter(const ContentInfo * const *a, StringFilter &filter)
|
static bool CDECL TagNameFilter(const ContentInfo * const *a, ContentListFilterData &filter)
|
||||||
{
|
{
|
||||||
filter.ResetState();
|
filter.string_filter.ResetState();
|
||||||
for (int i = 0; i < (*a)->tag_count; i++) {
|
for (int i = 0; i < (*a)->tag_count; i++) {
|
||||||
filter.AddLine((*a)->tags[i]);
|
filter.string_filter.AddLine((*a)->tags[i]);
|
||||||
}
|
}
|
||||||
filter.AddLine((*a)->name);
|
filter.string_filter.AddLine((*a)->name);
|
||||||
return filter.GetState();
|
return filter.string_filter.GetState();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Filter content by type, but still show content selected for download. */
|
||||||
|
static bool CDECL TypeOrSelectedFilter(const ContentInfo * const *a, ContentListFilterData &filter)
|
||||||
|
{
|
||||||
|
if (filter.type == CONTENT_TYPE_END) return true;
|
||||||
|
if ((*a)->type == filter.type) return true;
|
||||||
|
return ((*a)->state == ContentInfo::SELECTED || (*a)->state == ContentInfo::AUTOSELECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Filter the content list */
|
/** Filter the content list */
|
||||||
void FilterContentList()
|
void FilterContentList()
|
||||||
{
|
{
|
||||||
if (!this->content.Filter(this->string_filter)) return;
|
/* Apply filters. */
|
||||||
|
bool changed = false;
|
||||||
|
if (!this->filter_data.string_filter.IsEmpty()) {
|
||||||
|
this->content.SetFilterType(CONTENT_FILTER_TEXT);
|
||||||
|
changed |= this->content.Filter(this->filter_data);
|
||||||
|
}
|
||||||
|
if (this->filter_data.type != CONTENT_TYPE_END) {
|
||||||
|
this->content.SetFilterType(CONTENT_FILTER_TYPE_OR_SELECTED);
|
||||||
|
changed |= this->content.Filter(this->filter_data);
|
||||||
|
}
|
||||||
|
if (!changed) return;
|
||||||
|
|
||||||
/* update list position */
|
/* update list position */
|
||||||
for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) {
|
for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) {
|
||||||
@@ -459,6 +489,20 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
|||||||
this->list_pos = 0;
|
this->list_pos = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update filter state based on current window state.
|
||||||
|
* @return true if filter state was changed, otherwise false.
|
||||||
|
*/
|
||||||
|
bool UpdateFilterState()
|
||||||
|
{
|
||||||
|
Filtering old_params = this->content.GetFiltering();
|
||||||
|
bool new_state = !this->filter_data.string_filter.IsEmpty() || this->filter_data.type != CONTENT_TYPE_END;
|
||||||
|
if (new_state != old_params.state) {
|
||||||
|
this->content.SetFilterState(new_state);
|
||||||
|
}
|
||||||
|
return new_state != old_params.state;
|
||||||
|
}
|
||||||
|
|
||||||
/** Make sure that the currently selected content info is within the visible part of the matrix */
|
/** Make sure that the currently selected content info is within the visible part of the matrix */
|
||||||
void ScrollToSelected()
|
void ScrollToSelected()
|
||||||
{
|
{
|
||||||
@@ -473,8 +517,12 @@ public:
|
|||||||
* Create the content list window.
|
* Create the content list window.
|
||||||
* @param desc the window description to pass to Window's constructor.
|
* @param desc the window description to pass to Window's constructor.
|
||||||
* @param select_all Whether the select all button is allowed or not.
|
* @param select_all Whether the select all button is allowed or not.
|
||||||
|
* @param type the main type of content to display or #CONTENT_TYPE_END.
|
||||||
|
* When a type other than #CONTENT_TYPE_END is given, dependencies of
|
||||||
|
* other types are only shown when content that depend on them are
|
||||||
|
* selected.
|
||||||
*/
|
*/
|
||||||
NetworkContentListWindow(WindowDesc *desc, bool select_all) :
|
NetworkContentListWindow(WindowDesc *desc, bool select_all, ContentType type) :
|
||||||
Window(desc),
|
Window(desc),
|
||||||
auto_select(select_all),
|
auto_select(select_all),
|
||||||
filter_editbox(EDITBOX_MAX_SIZE),
|
filter_editbox(EDITBOX_MAX_SIZE),
|
||||||
@@ -493,12 +541,14 @@ public:
|
|||||||
this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR;
|
this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR;
|
||||||
this->SetFocusedWidget(WID_NCL_FILTER);
|
this->SetFocusedWidget(WID_NCL_FILTER);
|
||||||
this->SetWidgetDisabledState(WID_NCL_SEARCH_EXTERNAL, this->auto_select);
|
this->SetWidgetDisabledState(WID_NCL_SEARCH_EXTERNAL, this->auto_select);
|
||||||
|
this->filter_data.type = type;
|
||||||
|
|
||||||
_network_content_client.AddCallback(this);
|
_network_content_client.AddCallback(this);
|
||||||
this->content.SetListing(this->last_sorting);
|
this->content.SetListing(this->last_sorting);
|
||||||
this->content.SetFiltering(this->last_filtering);
|
this->content.SetFiltering(this->last_filtering);
|
||||||
this->content.SetSortFuncs(this->sorter_funcs);
|
this->content.SetSortFuncs(this->sorter_funcs);
|
||||||
this->content.SetFilterFuncs(this->filter_funcs);
|
this->content.SetFilterFuncs(this->filter_funcs);
|
||||||
|
this->UpdateFilterState();
|
||||||
this->content.ForceRebuild();
|
this->content.ForceRebuild();
|
||||||
this->FilterContentList();
|
this->FilterContentList();
|
||||||
this->SortContentList();
|
this->SortContentList();
|
||||||
@@ -751,6 +801,10 @@ public:
|
|||||||
this->content.ForceResort();
|
this->content.ForceResort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this->filter_data.type != CONTENT_TYPE_END) {
|
||||||
|
this->content.ForceRebuild();
|
||||||
|
}
|
||||||
|
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -846,9 +900,13 @@ public:
|
|||||||
this->content.ForceResort();
|
this->content.ForceResort();
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
}
|
}
|
||||||
|
if (this->filter_data.type != CONTENT_TYPE_END) {
|
||||||
|
this->content.ForceRebuild();
|
||||||
|
this->InvalidateData();
|
||||||
|
}
|
||||||
return ES_HANDLED;
|
return ES_HANDLED;
|
||||||
}
|
}
|
||||||
/* FALL THROUGH, space is pressed and filter isn't focused. */
|
/* FALL THROUGH, space is pressed and filter is focused. */
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return ES_NOT_HANDLED;
|
return ES_NOT_HANDLED;
|
||||||
@@ -856,13 +914,21 @@ public:
|
|||||||
|
|
||||||
if (this->content.Length() == 0) {
|
if (this->content.Length() == 0) {
|
||||||
this->list_pos = 0; // above stuff may result in "-1".
|
this->list_pos = 0; // above stuff may result in "-1".
|
||||||
|
if (this->UpdateFilterState()) {
|
||||||
|
this->content.ForceRebuild();
|
||||||
|
this->InvalidateData();
|
||||||
|
}
|
||||||
return ES_HANDLED;
|
return ES_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->selected = *this->content.Get(this->list_pos);
|
this->selected = *this->content.Get(this->list_pos);
|
||||||
|
|
||||||
/* scroll to the new server if it is outside the current range */
|
if (this->UpdateFilterState()) {
|
||||||
|
this->content.ForceRebuild();
|
||||||
|
} else {
|
||||||
|
/* Scroll to the new content if it is outside the current range. */
|
||||||
this->ScrollToSelected();
|
this->ScrollToSelected();
|
||||||
|
}
|
||||||
|
|
||||||
/* redraw window */
|
/* redraw window */
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
@@ -872,8 +938,8 @@ public:
|
|||||||
virtual void OnEditboxChanged(int wid)
|
virtual void OnEditboxChanged(int wid)
|
||||||
{
|
{
|
||||||
if (wid == WID_NCL_FILTER) {
|
if (wid == WID_NCL_FILTER) {
|
||||||
this->string_filter.SetFilterTerm(this->filter_editbox.text.buf);
|
this->filter_data.string_filter.SetFilterTerm(this->filter_editbox.text.buf);
|
||||||
this->content.SetFilterState(!this->string_filter.IsEmpty());
|
this->UpdateFilterState();
|
||||||
this->content.ForceRebuild();
|
this->content.ForceRebuild();
|
||||||
this->InvalidateData();
|
this->InvalidateData();
|
||||||
}
|
}
|
||||||
@@ -965,6 +1031,7 @@ NetworkContentListWindow::GUIContentList::SortFunction * const NetworkContentLis
|
|||||||
|
|
||||||
NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentListWindow::filter_funcs[] = {
|
NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentListWindow::filter_funcs[] = {
|
||||||
&TagNameFilter,
|
&TagNameFilter,
|
||||||
|
&TypeOrSelectedFilter,
|
||||||
};
|
};
|
||||||
|
|
||||||
char NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END][64];
|
char NetworkContentListWindow::content_type_strs[CONTENT_TYPE_END][64];
|
||||||
@@ -1080,7 +1147,7 @@ void ShowNetworkContentListWindow(ContentVector *cv, ContentType type)
|
|||||||
}
|
}
|
||||||
|
|
||||||
DeleteWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_CONTENT_LIST);
|
DeleteWindowById(WC_NETWORK_WINDOW, WN_NETWORK_WINDOW_CONTENT_LIST);
|
||||||
new NetworkContentListWindow(&_network_content_list_desc, cv != NULL);
|
new NetworkContentListWindow(&_network_content_list_desc, cv != NULL, type);
|
||||||
#else
|
#else
|
||||||
ShowErrorMessage(STR_CONTENT_NO_ZLIB, STR_CONTENT_NO_ZLIB_SUB, WL_ERROR);
|
ShowErrorMessage(STR_CONTENT_NO_ZLIB, STR_CONTENT_NO_ZLIB_SUB, WL_ERROR);
|
||||||
/* Connection failed... clean up the mess */
|
/* Connection failed... clean up the mess */
|
||||||
|
@@ -526,8 +526,11 @@ static WindowDesc _build_object_desc(
|
|||||||
*/
|
*/
|
||||||
void ShowBuildObjectPicker()
|
void ShowBuildObjectPicker()
|
||||||
{
|
{
|
||||||
|
/* Don't show the place object button when there are no objects to place. */
|
||||||
|
if (ObjectClass::GetUIClassCount() > 0) {
|
||||||
AllocateWindowDescFront<BuildObjectWindow>(&_build_object_desc, 0);
|
AllocateWindowDescFront<BuildObjectWindow>(&_build_object_desc, 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** Reset all data of the object GUI. */
|
/** Reset all data of the object GUI. */
|
||||||
void InitializeObjectGui()
|
void InitializeObjectGui()
|
||||||
|
Reference in New Issue
Block a user