mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
Merge branch 'master' into save_ext
This commit is contained in:
commit
9914ba7e63
@ -229,6 +229,7 @@ struct DepotWindow : Window {
|
||||
VehicleID vehicle_over; ///< Rail vehicle over which another one is dragged, \c INVALID_VEHICLE if none.
|
||||
VehicleType type;
|
||||
bool generate_list;
|
||||
bool sell_hovered; ///< A vehicle is being dragged/hovered over the sell button.
|
||||
VehicleList vehicle_list;
|
||||
VehicleList wagon_list;
|
||||
uint unitnumber_digits;
|
||||
@ -243,6 +244,7 @@ struct DepotWindow : Window {
|
||||
this->sel = INVALID_VEHICLE;
|
||||
this->vehicle_over = INVALID_VEHICLE;
|
||||
this->generate_list = true;
|
||||
this->sell_hovered = false;
|
||||
this->type = type;
|
||||
this->num_columns = 1; // for non-trains this gets set in FinishInitNested()
|
||||
this->unitnumber_digits = 2;
|
||||
@ -867,11 +869,24 @@ struct DepotWindow : Window {
|
||||
this->sel = INVALID_VEHICLE;
|
||||
this->vehicle_over = INVALID_VEHICLE;
|
||||
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)
|
||||
{
|
||||
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.. */
|
||||
if (widget != WID_D_MATRIX) { // ..outside of the depot matrix.
|
||||
@ -958,7 +973,9 @@ struct DepotWindow : Window {
|
||||
default:
|
||||
this->sel = INVALID_VEHICLE;
|
||||
this->SetDirty();
|
||||
break;
|
||||
}
|
||||
this->sell_hovered = 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_MUSIC_VOLUME :{TINY_FONT}{BLACK}Volumen música
|
||||
STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLACK}Volumen efectos
|
||||
STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MIN
|
||||
STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MAX
|
||||
STR_MUSIC_RULER_MIN :{TINY_FONT}{BLACK}MÍN
|
||||
STR_MUSIC_RULER_MAX :{TINY_FONT}{BLACK}MÁX
|
||||
STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLACK}'
|
||||
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
|
||||
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
|
||||
@ -759,7 +759,7 @@ STR_SMALLMAP_ENABLE_ALL :{BLACK}Activar
|
||||
STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Mostrar altura
|
||||
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}No mostrar industrias en el mapa
|
||||
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Mostrar todas las industrias en el mapa
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Mostrar / ocultar mapa de alturas
|
||||
STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Mostrar/ocultar mapa de alturas
|
||||
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}No mostrar propiedades de empresas en el mapa
|
||||
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Mostrar todas las propiedades de empresas en el mapa
|
||||
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}No muestra ninguna carga en el mapa
|
||||
@ -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_ADDITIONAL_ENGLISH :Inglés (Adicional)
|
||||
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_DUTCH :Holandé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_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_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_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_FUNDING_ONLY :Solo fundadas
|
||||
@ -1087,7 +1087,7 @@ STR_CITY_APPROVAL_PERMISSIVE :Permisiva
|
||||
STR_CITY_APPROVAL_TOLERANT :Tolerante
|
||||
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
|
||||
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_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_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_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_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_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_HELPTEXT :Permite fijar a cuanto se pagan las conexiones con subsidio
|
||||
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_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_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_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_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_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_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_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_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
|
||||
@ -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_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_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_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_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_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
|
||||
@ -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_RIGHT :A la derecha
|
||||
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_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
|
||||
@ -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_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_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_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}
|
||||
@ -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_REDUCED :Reducida
|
||||
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_HELPTEXT :Permite construir estaciones de carretera de paso en carreteras que sean propiedad de municipios
|
||||
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 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_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
|
||||
@ -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_MOVEDOWN :{BLACK}Mover Abajo
|
||||
STR_NEWGRF_SETTINGS_MOVEDOWN_TOOLTIP :{BLACK}Mueve el NewGRF seleccionado abajo en la lista
|
||||
STR_NEWGRF_SETTINGS_UPGRADE :{BLACK}Actualiza
|
||||
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 :{BLACK}Actualizar
|
||||
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_SET_PARAMETERS :{BLACK}Establecer parámetros
|
||||
STR_NEWGRF_SETTINGS_SHOW_PARAMETERS :{BLACK}Mostrar parámetros
|
||||
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_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_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_DISABLED :{RED}Desactivado
|
||||
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_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_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_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})
|
||||
@ -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_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_DISABLED_WARNING :{WHITE}Archivo(s) GRF no encontrados han sido desactivados
|
||||
@ -2928,9 +2928,9 @@ STR_NEWGRF_UNPAUSE_WARNING :{WHITE}Quitar l
|
||||
|
||||
# NewGRF status
|
||||
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_MISSING :{RED}Ficheros que faltan
|
||||
STR_NEWGRF_LIST_MISSING :{RED}Archivos que faltan
|
||||
|
||||
# NewGRF 'it's broken' warnings
|
||||
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_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_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 :{WHITE}El NewGRF '{0:STRING}' da información incorrecta
|
||||
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_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_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_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_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 */
|
||||
class NetworkContentListWindow : public Window, ContentCallback {
|
||||
/** 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.
|
||||
|
||||
@ -295,7 +307,7 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
||||
static GUIContentList::FilterFunction * const filter_funcs[]; ///< Filter functions.
|
||||
GUIContentList content; ///< List with content
|
||||
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;
|
||||
Dimension checkbox_size; ///< Size of checkbox/"blot" sprite
|
||||
|
||||
@ -431,20 +443,38 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
||||
}
|
||||
|
||||
/** 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++) {
|
||||
filter.AddLine((*a)->tags[i]);
|
||||
filter.string_filter.AddLine((*a)->tags[i]);
|
||||
}
|
||||
filter.AddLine((*a)->name);
|
||||
return filter.GetState();
|
||||
filter.string_filter.AddLine((*a)->name);
|
||||
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 */
|
||||
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 */
|
||||
for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) {
|
||||
@ -459,6 +489,20 @@ class NetworkContentListWindow : public Window, ContentCallback {
|
||||
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 */
|
||||
void ScrollToSelected()
|
||||
{
|
||||
@ -473,8 +517,12 @@ public:
|
||||
* Create the content list window.
|
||||
* @param desc the window description to pass to Window's constructor.
|
||||
* @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),
|
||||
auto_select(select_all),
|
||||
filter_editbox(EDITBOX_MAX_SIZE),
|
||||
@ -493,12 +541,14 @@ public:
|
||||
this->filter_editbox.cancel_button = QueryString::ACTION_CLEAR;
|
||||
this->SetFocusedWidget(WID_NCL_FILTER);
|
||||
this->SetWidgetDisabledState(WID_NCL_SEARCH_EXTERNAL, this->auto_select);
|
||||
this->filter_data.type = type;
|
||||
|
||||
_network_content_client.AddCallback(this);
|
||||
this->content.SetListing(this->last_sorting);
|
||||
this->content.SetFiltering(this->last_filtering);
|
||||
this->content.SetSortFuncs(this->sorter_funcs);
|
||||
this->content.SetFilterFuncs(this->filter_funcs);
|
||||
this->UpdateFilterState();
|
||||
this->content.ForceRebuild();
|
||||
this->FilterContentList();
|
||||
this->SortContentList();
|
||||
@ -751,6 +801,10 @@ public:
|
||||
this->content.ForceResort();
|
||||
}
|
||||
|
||||
if (this->filter_data.type != CONTENT_TYPE_END) {
|
||||
this->content.ForceRebuild();
|
||||
}
|
||||
|
||||
this->InvalidateData();
|
||||
break;
|
||||
}
|
||||
@ -846,9 +900,13 @@ public:
|
||||
this->content.ForceResort();
|
||||
this->InvalidateData();
|
||||
}
|
||||
if (this->filter_data.type != CONTENT_TYPE_END) {
|
||||
this->content.ForceRebuild();
|
||||
this->InvalidateData();
|
||||
}
|
||||
return ES_HANDLED;
|
||||
}
|
||||
/* FALL THROUGH, space is pressed and filter isn't focused. */
|
||||
/* FALL THROUGH, space is pressed and filter is focused. */
|
||||
|
||||
default:
|
||||
return ES_NOT_HANDLED;
|
||||
@ -856,13 +914,21 @@ public:
|
||||
|
||||
if (this->content.Length() == 0) {
|
||||
this->list_pos = 0; // above stuff may result in "-1".
|
||||
if (this->UpdateFilterState()) {
|
||||
this->content.ForceRebuild();
|
||||
this->InvalidateData();
|
||||
}
|
||||
return ES_HANDLED;
|
||||
}
|
||||
|
||||
this->selected = *this->content.Get(this->list_pos);
|
||||
|
||||
/* scroll to the new server if it is outside the current range */
|
||||
this->ScrollToSelected();
|
||||
if (this->UpdateFilterState()) {
|
||||
this->content.ForceRebuild();
|
||||
} else {
|
||||
/* Scroll to the new content if it is outside the current range. */
|
||||
this->ScrollToSelected();
|
||||
}
|
||||
|
||||
/* redraw window */
|
||||
this->InvalidateData();
|
||||
@ -872,8 +938,8 @@ public:
|
||||
virtual void OnEditboxChanged(int wid)
|
||||
{
|
||||
if (wid == WID_NCL_FILTER) {
|
||||
this->string_filter.SetFilterTerm(this->filter_editbox.text.buf);
|
||||
this->content.SetFilterState(!this->string_filter.IsEmpty());
|
||||
this->filter_data.string_filter.SetFilterTerm(this->filter_editbox.text.buf);
|
||||
this->UpdateFilterState();
|
||||
this->content.ForceRebuild();
|
||||
this->InvalidateData();
|
||||
}
|
||||
@ -965,6 +1031,7 @@ NetworkContentListWindow::GUIContentList::SortFunction * const NetworkContentLis
|
||||
|
||||
NetworkContentListWindow::GUIContentList::FilterFunction * const NetworkContentListWindow::filter_funcs[] = {
|
||||
&TagNameFilter,
|
||||
&TypeOrSelectedFilter,
|
||||
};
|
||||
|
||||
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);
|
||||
new NetworkContentListWindow(&_network_content_list_desc, cv != NULL);
|
||||
new NetworkContentListWindow(&_network_content_list_desc, cv != NULL, type);
|
||||
#else
|
||||
ShowErrorMessage(STR_CONTENT_NO_ZLIB, STR_CONTENT_NO_ZLIB_SUB, WL_ERROR);
|
||||
/* Connection failed... clean up the mess */
|
||||
|
@ -526,7 +526,10 @@ static WindowDesc _build_object_desc(
|
||||
*/
|
||||
void ShowBuildObjectPicker()
|
||||
{
|
||||
AllocateWindowDescFront<BuildObjectWindow>(&_build_object_desc, 0);
|
||||
/* Don't show the place object button when there are no objects to place. */
|
||||
if (ObjectClass::GetUIClassCount() > 0) {
|
||||
AllocateWindowDescFront<BuildObjectWindow>(&_build_object_desc, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/** Reset all data of the object GUI. */
|
||||
|
Loading…
Reference in New Issue
Block a user