Merge branch 'master' into jgrpp

# Conflicts:
#	CMakeLists.txt
#	src/bootstrap_gui.cpp
pull/207/head
Jonathan G Rennison 4 years ago
commit 4da3cfcf56

@ -137,6 +137,9 @@ if(WIN32)
list(APPEND GENERATED_SOURCE_FILES "${CMAKE_BINARY_DIR}/generated/ottdres.rc")
endif()
# An empty target for the tools
add_custom_target(tools)
include(SourceList)
include(Endian)
add_endian_definition()
@ -226,7 +229,7 @@ include(LinkPackage)
link_package(PNG TARGET PNG::PNG ENCOURAGED)
link_package(ZLIB TARGET ZLIB::ZLIB ENCOURAGED)
link_package(LIBLZMA TARGET LibLZMA::LibLZMA ENCOURAGED)
link_package(LZO ENCOURAGED)
link_package(LZO)
link_package(XDG_basedir)
if(NOT OPTION_DEDICATED)

@ -35,6 +35,8 @@ function(set_directory_options)
set(GLOBAL_DIR "${DEFAULT_GLOBAL_DIR}" CACHE STRING "Global directory")
message(STATUS "Detecting Global Data directory - ${GLOBAL_DIR}")
endif()
set(HOST_BINARY_DIR "" CACHE PATH "Full path to native cmake build directory")
endfunction()
# Set some generic options that influence what is being build.

@ -829,7 +829,7 @@
<tr>
<td align=left><tt>4</tt>&nbsp; </td>
<td>on snow with rough land underneed</td>
<td>on snow with rough land underneath</td>
</tr>
</table>
</li>

@ -922,7 +922,11 @@ static bool AircraftController(Aircraft *v)
v->cur_speed = 0;
if (--u->cur_speed == 32) {
if (!PlayVehicleSound(v, VSE_START)) {
SndPlayVehicleFx(SND_18_HELICOPTER, v);
SoundID sfx = AircraftVehInfo(v->engine_type)->sfx;
/* For compatibility with old NewGRF we ignore the sfx property, unless a NewGRF-defined sound is used.
* The baseset has only one helicopter sound, so this only limits using plane or cow sounds. */
if (sfx < ORIGINAL_SAMPLE_COUNT) sfx = SND_18_HELICOPTER;
SndPlayVehicleFx(sfx, v);
}
}
} else {

@ -253,7 +253,7 @@ bool HandleBootstrap()
if (_exit_game) return false;
/* Try to probe the graphics. Should work this time. */
if (!BaseGraphics::SetSet("")) goto failure;
if (!BaseGraphics::SetSet({})) goto failure;
/* Finally we can continue heading for the menu. */
_game_mode = GM_MENU;

@ -1903,10 +1903,10 @@ DEF_CONSOLE_CMD(ConContent)
}
if (argc <= 1) {
IConsoleHelp("Query, select and download content. Usage: 'content update|upgrade|select [all|id]|unselect [all|id]|state [filter]|download'");
IConsoleHelp("Query, select and download content. Usage: 'content update|upgrade|select [id]|unselect [all|id]|state [filter]|download'");
IConsoleHelp(" update: get a new list of downloadable content; must be run first");
IConsoleHelp(" upgrade: select all items that are upgrades");
IConsoleHelp(" select: select a specific item given by its id or 'all' to select all. If no parameter is given, all selected content will be listed");
IConsoleHelp(" select: select a specific item given by its id. If no parameter is given, all selected content will be listed");
IConsoleHelp(" unselect: unselect a specific item given by its id or 'all' to unselect all");
IConsoleHelp(" state: show the download/select state of all downloadable content. Optionally give a filter string");
IConsoleHelp(" download: download all content you've selected");
@ -1932,7 +1932,13 @@ DEF_CONSOLE_CMD(ConContent)
OutputContentState(*iter);
}
} else if (strcasecmp(argv[2], "all") == 0) {
_network_content_client.SelectAll();
/* The intention of this function was that you could download
* everything after a filter was applied; but this never really
* took off. Instead, a select few people used this functionality
* to download every available package on BaNaNaS. This is not in
* the spirit of this service. Additionally, these few people were
* good for 70% of the consumed bandwidth of BaNaNaS. */
IConsolePrintF(CC_ERROR, "'select all' is no longer supported since 1.11");
} else {
_network_content_client.Select((ContentID)atoi(argv[2]));
}

@ -117,6 +117,7 @@ static void LoadGrfFileIndexed(const char *filename, const SpriteID *index_tbl,
do {
bool b = LoadNextSprite(start, file_index, sprite_id, container_ver);
(void)b; // Unused without asserts
assert(b);
sprite_id++;
} while (++start <= end);

@ -59,6 +59,10 @@ set(LANG_SOURCE_FILES
set(LANG_BINARY_DIR ${CMAKE_BINARY_DIR}/lang)
if (HOST_BINARY_DIR)
include(${HOST_BINARY_DIR}/strgen.cmake)
endif()
# Walk over all the (finished) language files, and generate a command to compile them
foreach(LANG_SOURCE_FILE IN LISTS LANG_SOURCE_FILES)
get_filename_component(LANG_SOURCE_FILE_NAME_WE ${LANG_SOURCE_FILE} NAME_WE)

@ -837,6 +837,7 @@ STR_MUSIC_EFFECTS_VOLUME :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Nėra muzikos
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}„{STRING}“
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Takelis
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Pavadinimas
@ -2790,6 +2791,7 @@ STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Krovinys
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Geležinkelių greičio limitas: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Kelio greičio limitas: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Tramvajaus greičio limitas: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Akmenys
@ -2917,6 +2919,7 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Žaidimo
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nėra informacijos
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Plėtiniai: {WHITE}{STRING}
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Perrašyti bylą
STR_SAVELOAD_OSKTITLE :{BLACK}Įveskite išsaugomo žaidimo vardą
@ -3238,6 +3241,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Paperka
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} Tikslai
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globalūs tikslai
STR_GOALS_SPECTATOR :Visuotiniai tikslai
STR_GOALS_GLOBAL_TITLE :{BLACK}Visuotiniai tikslai:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Nieko -
@ -3553,6 +3557,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Iškelti visas
STR_GROUP_RENAME_CAPTION :{BLACK}Pervadinti grupę
STR_GROUP_PROFIT_THIS_YEAR :Šio mėnesio pelnas:
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nauji lokomotyvai

@ -1553,11 +1553,13 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Året der avisa
STR_CONFIG_SETTING_STARTING_YEAR :Start spillet i år: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR :Poengsum ved slutten av året: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Året spillet slutter med tanke på poeng. På slutten av dette året, vil firmaets poengsum bli lagret og tavlen med høyeste poengsummer vil vises. Spilleren kan fortsette å spille etter dette.{}Hvis dette er før start året, vil tavlen med høyeste poengsummer aldri vises.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldri
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Jevn økonomi (flere, mindre endringer): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Når denne er aktivert, endrer industriproduksjonen seg oftere, og i mindre trinn. Denne innstillingen har vanligvis ingen effekt hvis industriene er fra en NewGRF
STR_CONFIG_SETTING_ALLOW_SHARES :Tillat aksjekjøp i andre firmaer: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Når aktivert, tillates kjøp og salg av selskapers aksjer. Aksjer vil kun være tilgjengelig selskaper som når en viss alder
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Sett minimum levetid for et selskap, før andre kan kjøpe og selge aksjer fra dem.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prosentandel av etappe-overskudd som skal betales i innmatingssystem: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Andel av inntekten gitt til de mellomliggende etapper i et overføringssystem, noe som gir mer kontroll over inntektene
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Når du drar en linje, plasser signaler hver: {STRING}
@ -2166,6 +2168,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Feil pas
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Tjeneren er full
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Du er bannlyst fra denne tjeneren
STR_NETWORK_ERROR_KICKED :{WHITE}Du ble kastet ut av spillet
STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Grunn: {STRING}
STR_NETWORK_ERROR_CHEATER :{WHITE}Juksing er ikke tillatt på denne tjeneren
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Du sendte for mange kommandoer til serveren
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Du brukte for lang tid på å skrive inn passordet
@ -3123,6 +3126,7 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :Endre bynavnet
# Town local authority window
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN}s bystyre
STR_LOCAL_AUTHORITY_ZONE :{BLACK}Område
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Vis zonene innenfor de lokale myndigheters grenser
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Vurdering av transportfirma:
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Handlinger tilgjengelig:
@ -3395,6 +3399,8 @@ STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industri
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Ingen -
STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transportert){BLACK}
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} og {NUM} flere...
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrinavn - klikk på navn for å gå til industri. Ctrl+klikk åpner et nytt tilleggsvindu over industrien
@ -4180,8 +4186,10 @@ STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Ikke end
STR_SCREENSHOT_CAPTION :WHITE}Ta skjermbilde
STR_SCREENSHOT_SCREENSHOT :{BLACK}Normalt skjermbilde
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Skjermbilde med maksimal zoom
STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Standard zoomet skjermbilde
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Skjermbilde av hele kartat
STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Høydekart skjermbilde
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Oversiktskart skjermbilde
# AI Parameters
STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametre

@ -446,7 +446,7 @@ static bool FixTTOEngines()
e->preview_company = INVALID_COMPANY;
e->preview_asked = (CompanyMask)-1;
e->preview_wait = 0;
e->name = nullptr;
e->name = std::string{};
}
return true;

@ -1941,7 +1941,7 @@ void SlObject(void *object, const SaveLoad *sld)
}
for (; sld->cmd != SL_END; sld++) {
void *ptr = sld->global ? sld->address : GetVariableAddress(object, sld);
void *ptr = GetVariableAddress(object, sld);
SlObjectMember(ptr, sld);
}
}

@ -1038,7 +1038,18 @@ static inline bool IsNumericType(VarType conv)
*/
static inline void *GetVariableAddress(const void *object, const SaveLoad *sld)
{
return const_cast<byte *>((const byte*)(sld->global ? nullptr : object) + (ptrdiff_t)sld->address);
/* Entry is a global address. */
if (sld->global) return sld->address;
/* Entry is a null-variable, mostly used to read old savegames etc. */
if (GetVarMemType(sld->conv) == SLE_VAR_NULL) {
assert(sld->address == nullptr);
return nullptr;
}
/* Everything else should be a non-null pointer. */
assert(object != nullptr);
return const_cast<byte *>((const byte *)object + (ptrdiff_t)sld->address);
}
int64 ReadValue(const void *ptr, VarType conv);

@ -485,7 +485,7 @@ void Squirrel::Initialize()
/* Handle compile-errors ourself, so we can display it nicely */
sq_setcompilererrorhandler(this->vm, &Squirrel::CompileError);
sq_notifyallexceptions(this->vm, SQTrue);
sq_notifyallexceptions(this->vm, _debug_script_level > 5);
/* Set a good print-function */
sq_setprintfunc(this->vm, &Squirrel::PrintFunc);
/* Handle runtime-errors ourself, so we can display it nicely */

@ -2340,6 +2340,7 @@ uint GetCompanySettingIndex(const char *name)
{
uint i;
const SettingDesc *sd = GetSettingFromName(name, &i);
(void)sd; // Unused without asserts
assert(sd != nullptr && (sd->desc.flags & SGF_PER_COMPANY) != 0);
return i;
}
@ -2450,6 +2451,7 @@ void IConsoleSetSetting(const char *name, int value)
{
uint index;
const SettingDesc *sd = GetSettingFromName(name, &index);
(void)sd; // Unused without asserts
assert(sd != nullptr);
SetSettingValue(index, value);
}

@ -1,13 +1,18 @@
cmake_minimum_required(VERSION 3.5)
project(settingsgen)
if (NOT HOST_BINARY_DIR)
project(settingsgen)
set(sourcefiles
settingsgen.cpp
../core/alloc_func.cpp
../misc/getoptdata.cpp
../ini_load.cpp
../string.cpp
)
add_definitions(-DSETTINGSGEN)
add_executable(settingsgen ${sourcefiles})
set(sourcefiles
settingsgen.cpp
../core/alloc_func.cpp
../misc/getoptdata.cpp
../ini_load.cpp
../string.cpp
)
add_definitions(-DSETTINGSGEN)
add_executable(settingsgen ${sourcefiles})
export(TARGETS settingsgen FILE ${CMAKE_BINARY_DIR}/settingsgen.cmake)
add_dependencies(tools settingsgen)
endif()

@ -1,22 +1,26 @@
cmake_minimum_required(VERSION 3.5)
project(strgen)
if (NOT HOST_BINARY_DIR)
project(strgen)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake")
set(sourcefiles
strgen.cpp
strgen_base.cpp
../core/alloc_func.cpp
../misc/getoptdata.cpp
../string.cpp
)
add_definitions(-DSTRGEN)
add_executable(strgen ${sourcefiles})
set(sourcefiles
strgen.cpp
strgen_base.cpp
../core/alloc_func.cpp
../misc/getoptdata.cpp
../string.cpp
)
add_definitions(-DSTRGEN)
add_executable(strgen ${sourcefiles})
include(Endian)
add_endian_definition()
include(Endian)
add_endian_definition()
export(TARGETS strgen FILE ${CMAKE_BINARY_DIR}/strgen.cmake)
add_dependencies(tools strgen)
endif()
# Source Files
add_files(strgen_base.cpp)

@ -11,6 +11,10 @@ set(TABLE_INI_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/window_settings.ini
)
if (HOST_BINARY_DIR)
include(${HOST_BINARY_DIR}/settingsgen.cmake)
endif()
# Generate a command and target to create the settings table
add_custom_command_timestamp(OUTPUT ${TABLE_BINARY_DIR}/settings.h
COMMAND ${CMAKE_COMMAND} -E make_directory ${TABLE_BINARY_DIR}

@ -1407,6 +1407,7 @@ static void AddWindowToZOrdering(Window *w)
/* Search down the z-ordering for its location. */
WindowBase *v = _z_front_window;
uint last_z_priority = UINT_MAX;
(void)last_z_priority; // Unused without asserts
while (v != nullptr && (v->window_class == WC_INVALID || GetWindowZPriority(v->window_class) > GetWindowZPriority(w->window_class))) {
if (v->window_class != WC_INVALID) {
/* Sanity check z-ordering, while we're at it. */

Loading…
Cancel
Save