View the full changelog

Animations, Icons and Overlays

- New wheatfield graphics by fraang

- Shorten a soldier's last evade_failure animation if the soldier is about to

die to prevent overlooping.

- The health bar of a soldier now falls gradually during an attack instead of

one-shot.

- New graphics for field selectors and field action tabs

- Special field selector for road building mode

- Added missing call to get_rand_anim when a soldier is dying

- Added missing working animations for barbarians big inn and wood hardener

- Each tribe now has individual resource indicator graphics

- Added util to rename animation files in bulk.

- Fixed bug #1639253: Add missing walkload animation to Atlantean smoker

Sounds and Music

- New music tracks "Scotty the Scout", "Hypathia's Theme", "We Work in the

Vineyards" and "Running out of Coal" by Stuart Marshall

- New music tracks "Silkweaver's Song" and "The beauty of the flatlands" by

Klaus Halfmann

- Added new sound files for Barbarians Inn + Big-Inn, Empire Inn,

Atlantean Mill, Toolsmith, Smelting-Works, all Weaving Mills, Atlantean

Woodcutter, Sawmill, Stonecutter, Goldspinner.

- Modified smithies sounds to dimmer versions; added tree-falling sounds,

substituted Timber shouting with tree-falling.

- Allocate 32 mixing channels instead of the default 8.

- Never play the same song twice in a row

- Improvements to sounds and the sound mix

Tutorials and Campaigns

- 2 new missions for the Empire campaign

- 2 new missions for the new Frisians tribe

- Tweaked timings in tutorials and scenarios

- Updated the Economy tutorial to match the new, enhanced encyclopedia

- Add roads to p2 in warfare tutorial because the AI is empty

- Fixed reveal_campaign in bar_01

- Fixed bug #1639514: Barbarian campaign, scenario 2: yellow brother bails out

- Fixed bug #1656192: Economy tutorial assumes window is open

Scripting

- Updated Eris to version 1.1.2 (Lua 5.3.4)

- Changes and additions to Lua methods and objects:

- New method player: get_produced_ wares_count( )

- New object LuaMap -> LuaEconomy.

- Added option to Lua function player:hide_fields to mark them as unexplored

- New scripting functions for random and concentric revealing/hiding of

fields

- New attribute 'is_stopped' in LuaProductionSite

- New method 'toggle_ start_stop( )' in LuaProductionSite

- Added Lua method to get the type of the current game, i.e., single or

multiplayer.

- Changes to territorial win conditions:

- Pulled out common code for Territorial Lord and Territorial Time.

- Ensure that check_player_ defeated is called before points are calculated.

- New function to check whether a field is buildable.

- Check if a player still exists before making it the winning player.

Player will also win if there are no other players left.

- Fixed desyncs

- Updated documentation not to use some functions for multiplayer games

- More precise calculation of conquerable fields to make territorial win

conditions playable on all maps

- Various fixes for win conditions:

- Unified some functions for wood_gnome and collectors

- Removed duplicated code and moved it to win_condition_ functions

- Notify only every hour, 10 minutes in the last 30 minutes

- Move _game_over function out of the main loop.

- Don't show points when game ended by military defeat

- Main loop ends when time is over or only one faction is left

- Check every second for defeated players

- Refactor initialization of win conditions:

- Shift calculations for territorial functions and Wood Gnome to C++

to improve performance

- Add immovables to the table for territory calculation

- Expose port spaces and max caps to Lua interface

- Fixed bug for Wood Gnome in which a destroyed player would gain infinite

points. Also, no longer calculate score for a defeated player.

- Remove unused parameters of message_ box_objective.

- Removed unused parameter 'req_suitability' from function

place_ building_ in_region in infrastructure.lua

- Added capability to add custom scenario buildings

- Allow writing and loading of campaign data, so that some scenario state can

be transferred from one scenario to the next in campaigns.

- Do not broadcast Lua coroutine error messages to empty player slots.

Also, use richtext_escape on them.

- Orthogonal design for mapobject program names

- Fix unpersisting of LuaImmovableDes cription for tribe immovables.

- Safeguard to avoid desyncs when using send_message() from ui.lua

- Add parameter to send_message() to avoid an error

- Fixed a memory leak in persistence.cc

- Fixed bug #1670065: Random tree growth can block building sites needed to

progress in scenario

- Fixed bug #1688655: lua func "place_ building_ in_region" not work for mines

- Fixed bug #1815283: Nil value in Territorial Lord

- Fixed bug #1790456: The final message in collectors doesn't show the points

of all players anymore

Maps

- Map tags: Added "1v1" to Firegames, Islands at war and The Pass through

the Mountains. Removed "unbalanced" from The Pass through the Mountains.

- Moved hint texts from map descriptions to hints for the Last Bastion and

Rendez-vous maps.

- Increased maximum number of players from 8 to 16, to be used for testing

purposes.

- Minor fixes to Last Bastion map where a player's expansion could become

completely blocked across the sea

- Fixed bug in Crossing the Horizon map where an artifact couldn't be

conquered by a player

- Fixed desyncs in Smugglers scenario

- Allow random player tribes in scenarios

Saveloading

- Old scenario save games will no longer work due to changes to the map

scrolling functions.

- Broke savegame compatibility in version bzr8747

- Savehandler: Avoid reading config more than once per game

- Corrupt zip files now appear as "incompatible" on game loading/saving

screens. This fixes stack-buffer- overflows.

- Fixed bugs with missing files/folders in savegames by creating a temporary

map save on game start

- Improved error checking in filesystem functions

- In Load/Save menu for games/replays:

- All deletion errors are caught, player gets a message.

- When deleting multiplayer replays, also the corresponding syncstream file

is deleted.

- After deleting replays, the table now respects the Show Filenames setting.

- In Save menu for maps:

- Errors when trying to create a directory are now caught, player gets a

message.

- Directory creation now doesn't allow names with map extensions, because

the game would just try to interpret them as maps and not show as

directories. A tooltip is shown.

- Directory creation can now also be triggered by pressing Enter in the name

edit box.

- Other file errors are caught and logged:

- Syncstream deletion in SyncWrapper destructor

- In Map::get_ correct_ loader

- File deletion/renaming in GameClient: :handle_ packet

- Introduced a new class to robustly handle saving of files (incl. dealing

with backups, handling errors, etc.) and using it whenever maps/games are

being saved.

- Remove superfluous "postload" call from replay

- Added validity checks for S2 map headers to avoid crashes when preloading

invalid S2 map files

- Shift calculation of map fields relevant to win conditions from Lua to C++.

This gives us a huge performance boost during saveloading those win

conditions.

- Fixed bug #1678987: Endless autosave cycles when a save takes longer than

the autosave interval, and inefficient statistics saving

- Fixed bug #1746270: Unable to rename rolling autosave

- Fixed bug #1798812: Saving a game from replay does not show up in load game

menu

AI

- The AI now uses a genetic algorithm. The genetic parameters are trained and

then kept in .wai files.

- New command line switch --ai_training: Dumps new AI files in home folder and

uses higher mutation ratios

- New command line switch --auto_speed: Activates auto-speed in multiplayer

games

- Various refactorings of AI hints

- Multiple changes to the logic

- Improvements to training sites

- Add support for productionsites that are also supporting site to the AI.

One productionsite can now support multiple wares/productio nsites.

- Allow resetting of teams via LUA during game

- Improved selection of which fields to build something on

- Improved identification of unconnectable regions based on walking algorithm.

Used to keep AI from wasting attempts to build something there.

- AI now splits and counts mineable fileds per resource/mine type and uses it

for decision making, ignoring inaccessible fields in the process

- When looking for the nearest buildable spot, the AI will accept mineable

fields also. This affects willingness to expand when there are no buildable

spots nearby, but some mines can be conquered by a new militarysite.

- AI now calculates military strength based on the actual init.lua files

rather than hard-coding the values. This also removes the tribe name

restriction for modders.

- When considering a quarry, the AI makes sure there is at least one rock in

the vicinity. Same for fishers and fish.

- Improved ship exploration decisions for AI.

- AI now considers whether possible sea direction leads to unknown territories

- AI also continues exploring when the last port is lost to prevent crashes.

- Since the AI can handle only 1 expedition at a time, any extra expeditions

are canceled

- Prohibit seafaring buildings for AI on non-seafaring maps. AI can still

handle ships and shipyards that already exist when a map does not allow

seafaring at the moment.

- AI now scans entire map for portspaces

- Fixed endless loop in DefaultAI: :dispensable_ road_test

- Added one well to the atlantean basic economy, as water is needed

for crucial spidercloth production

- Replaced logic_rand() with std::rand() in seafaring code of AI to fix

desyncs in network gaming

- Fixed bug #1724073: AI crashes when some AI slots are empty

Gameplay

- New Frisian tribe

- New "Village" starting condition

- New "Barracks" (casern) building for recruiting soldiers. Soldiers are no

longer created by warehouses. Production sites can now have workers as input

to consume.

- Started implementing new "Market" building with a Barbarian prototype.

Not functional yet.

- Balancing: Halved needed experience for Barbarian brewer and blacksmith

- Balancing: Buffed Barbarian and Empire soldiers

- Balancing: Added more trainers to headquarters at game start

- Balancing: Removed meat default target quantity for Barbarians and

Atlanteans

- Balancing: Lowered productivity threshold for lumberjacks to 60%.

- Balancing: Depleted Atlantean crystal (and iron) mines work slightly better

when depleted

- Balancing: Improvements to various production sites' logic

- The worker program "plant" no longer takes "tribe:" as a parameter;

immovables are now identified via their attributes only, and both world and

tribe immovables are searched. As a side effect, tribe immovables can now

have terrain affinity.

- Forester/Ranger now prefers good soil, and is thus more efficient

- Make the scout aware of nearby military sites. The scout now switches

between random walking and doing an excursion to enemy military sites

- When a Fish Breeder's fishing grounds are full, display a special tooltip

instead of sending an "Out of Resources" message

- When a warehouse is destroyed, the maximum number of fleeing units is now

limited to 500 per unit type

- Only cancel expedition if there is a reachable portdock. Show a warning

message to owner.

- Shifted ware hotspot definition from WorkerDescr to CarrierDescr

- Fixed a bug where higher-level workers wouldn't occupy lower-level workers'

working position slots in productionsites

- The port now conquers every location where its military influence is higher

than the influence of other players. This fixes a segfault when all

potential portdock fields are owned by another player, but there is a

portdock location available where the player owning the port has highest

influence.

- Fixed bug in collectors script where a broken message was sent after the

game ended

- Check for visibility of military buildings before permitting attack. This

solves a problem with impregnable castles.

- Improved algorithm for promotion and demotion of roads

- Removed hardcoding for resources

- New return value no_stats for work programs

- Tweaked production programs for shipyards

- Balancing: All Smelting Works, Furnaces, Smokeries, Recycling Center,

Atlantean and Frisian Toolsmithies, Taverns, Inns and Drinking Halls no

longer waste time if a ware is missing and they have to skip a program

- Balancing: Tweaked programs for Weapon/Armor producing buildings

- Balancing: Imperial Armor Smithy produces 1 more Helm per run to balance the

amount of armor types for training

- Balancing: Changed the order of programs in the Atlantean Toolsmithy

- Balancing: Gave the Barbarian Deep Gold Mine the same stats as the Deep Iron

Mine

- Increased the area where the map is recalculated after conquering by 1.

This prevents buildings from sitting between borders.

- Fixed heap-use-after-free in fleet while processing

EditorGameB ase::cleanup_ objects( ) when ship has already been deleted

- Allow return on dismantle values without buildcost

- Fix desyncs caused by floating point arithmetic in terrain affinity

- Reset economy serial in Game constructor. This fixes desyncs in replays.

- Stop ware dropoff when the target building has been destroyed. This fixes a

crash when the enemy conquers a militarysite near a warehouse.

- Cancel Worker: :fetchfromflag when the building is destroyed/ dismantled/

enhanced to prevent crashes

- Fixed bug #963799: shortsighted shipwright (ship in pond)

- Fixed bug #1611323: ships can be built in non-floating spaces (shipyard)

- Fixed bug #1636966: Segfault in battle

- Fixed bug #1637386: Militarysites warn about allies

- Fixed bug #1639444: Workers with wares inside ships can crash the game

- Fixed bug #1643209: No-cost workers are not removed correctly

- Fixed bug #1643284: Ships of a fleet can have the same name

- Fixed bug #1656671: Wares are not always transported to construction site

- Fixed bug #1658456: Imperials: Soldier target quantity not changeable

- Fixed bug #1749586: Fish breeder can't breed fish if the game is loaded

after all fish is caught

User Interface

- Maps can now be zoomed using the mouse wheel or keyboard keys: CTRL+, CTRL-

to in-/decrease, and CTRL+0 to reset. This also removes 0 as a possible

landmark number.

- All map transitions like jumping in messages and in the buildings menu are

now animated. New command line option "animate_ map_panning" .

- Moved smooth animation of cursor and MapView from Lua into C++. This fixes

the transitions in tutorials, which were broken when zoomed.

- Show census information on destroyed building with the former building's

name.

- Added supplementary warning to enhancement message for military sites.

- Fixed statistics label overlap. Ware statistics now update their plot range

correctly.

- Removed quick navigation with '.' and ','.

- The game summary window now restores the original desired speed when it's

closed.

- Productionsites no longer close their window when the stop/start button is

pressed.

- Minimized construction windows no longer get maximized when the construction

is finished.

- Window is no longer closed on enhance or dismantle.

- Let the user select multiple entries in a table using Ctrl/Shift + Click

(multiple/range selection) and Ctrl+A (select all) where appropriate.

- Implemented textual and pictorial dropdown menus. Dropdowns are used for win

condition and multiplayer tribe selection in the launch game screens.

- Fullscreen background images are now tiled rather than stretched.

- Stopped fullscreen toggle from flickering.

- The following menus now relayout themselves when fullscreen mode is toggled:

main, multiplayer, single player, about, map selection, options, load game,

save game.

- For multiplayer game setup, use dropdowns instead of buttons to select

player options

- Improved scrollbar and table header layout.

- Remove buttons from economy options window for spectators

- Improvements to StoryMessageBox, keyboard navigation and UI focusing

- Updating all ware priorities of a building when CTRL is pressed while

clicking

- Sorting IRC users behind the players in the lobby

- Replaced get_key_state with SDL_GetModState() to fix keyboard mappings.

- Actionconfirm now uses Box layout and resizes according to text size.

- Display loading times on the console while loading the tribes.

- Simplified the UI::Align enum and various alignment-related cleanup and

fixes.

- Replaced booleans in UI::Box::add() with enum classes for better readability

- Converted all text to new font renderer. Formatting functions for the new

renderer live in data/scripting/ richtext. lua

- A more principled fix to dangling object pointers in the UI using Optr<>

- Building Statistics now only show relevant buildings

- Building Statistics now show "under construction" navigation for buildings

being enhanced

- Show in-game clock in release builds too

- In multiplayer games, scroll to starting position when a game is loaded

- New Ship Statistics window

- Bugfixes to multiplayer dropdowns

- Use Lua to define background and button styles

- Background images and colors are now defined in data/templates/ default

- Combine common background graphics with color overlays

- Added StyleManager class to load and access backgrounds

- Downscale background images (e.g. campaign maps) on small screens

- New graphics for ui_fsmenu

- Darker background for wui elements

- Fixed keyboard navigation after "remove game" dialog has been displayed

- Modified row selection/display in tables and message list

- Remove focus from editbox in gamechatpanel when it minimizes

- Added tooltip to file save and make directory edit boxes if illegal filename

is being entered

- Added a checkbox to toggle filenames when loading a replay

- Fixed scenario title and tooltip during game setup

- Preselect player names and tribes for non-scenario maps in single player

mode

- Set AI from selection in UI when saveloading

- Missing wares (and workers) are indicated differently in InputQueueDisplays

if the ware is on the way to the building than if it's really missing

- Redesigned and fixed the showing of workarea overlays

- Tweaks for the multiplayer game setup screen: less empty spaces and more

space for important content

- Very large amounts in WaresDisplays are shortened as "10k", "10M", "10G" to

prevent text from flowing over on the left

- When dismantling a building, the building window closes automatically

- Added a dialog for the host when the connection to a client is lost. Allows

the host to select whether to replace the client with an AI or to exit.

- Setting focus to edit box when opening the game save menu

- Don't provide the filename for the standard background image in the progress

window. This fixes image positioning when starting multiplayer games.

- Make dismantle button independent of buildable/enhanced. This fixes missing

Dismantle buttons in Empire scenario 4.

- Improve formatting for user status in the lobby

- Allow hotkey usage while windows are open

- Fixed memory leak in network UI

- Fixed bug #1191295: Seafaring: builder not listed in expedition list in port

- Fixed bug #1635808: Display of worker in training sites is not updated.

- Fixed bug #1653254: Action window of Road stays open under some

circumstance s

- Fixed bug #1653460: UI::Panel: :get_inner_ h() const: Assertion `tborder_ +

bborder_ <= h_' failed

- Fixed bug #1658489: Expedition tab in Port window messed up some times

- Fixed bug #1644553: Crash when buildhelp icon is clicked twice

- Fixed bug #1687043: Memory leak in Multilineeditbox

- Fixed bug #1695701: Crash when a militarysite window is open while the

enemy conquers it by sending a notification.

- Fixed bug #1672059: Selection is not cleared when new message arrives

- Fixed bug #1691336: Building window suddenly appears after construction has

finished

- Fixed bug #1658668: Menu Launch Game: Switching AI player on/off changes AI

setting

- Fixed bug #1656245: Scrolling with mousewheel is slow in some places

- Fixed bug #1769344: High processor load single player launch game screen

- Fixed bug #1785404: Chat does not autoscroll

- Fixed bug #1794063: Extra message arrival sound

- Fixed bug #1801208: Message boxes with long unbreakable strings show empty

Internationaliz ation

- Removed building names from confirmation messages, as they cause grammar

problems in some languages.

- Production program descnames can now be fetched by pgettext as well as plain

gettext.

- Deleted unused networking messages and unified the "Something went wrong"

message.

- Added a Python script to do automated glossary checks for translations. It

enlists the help of Hunspell and 'misuses' the Transifex note field in order

to reduce noise.

- Implemented glossary generation for the Transifex glossary with help from

the Translate Toolkit (http:// toolkit. translatehouse. org/).

- Show translation stats next to the language selection menu and invite

translators if a translation is incomplete, with the help of the Translate

Toolkit. New utils script "update_ translation_ stats.py" that will write

translation statistics to data/i18n/ translation_ stats.conf and is called

on every translation pull.

- Fixed various string issues and added some translators' comments

- Completed the switchover to the new font renderer

- Fixed translation of trainingsite program names

- Fix undefined / unexpected behavior in case LANG environment is empty

- Fix fetching of translations when user locale is set to C. If the desired

Widelands locale does not exist, try to fall back to en_US.utf8 to make

libintl happy.

- Adapted buildcat.py to get translations for resources

- Add an extra key to get a translatable author-value in the developers list

- Fixed bug #1636586: Inconsistent localization of player names in Editor

player menu

Help and Documentation

- Convert editor/game tips to Lua and display them in the in-editor/in-game

help. Added new tips.

- Restructured, enhanced and added to the Lua scripting reference for Tribes.

- Added/Improved documentation for animations, worker programs, worker

helptexts, AI hints, World units and the Richtext system

- Added immovables to in-game help

- Fixed some wrong indentation for the documentation in the website.

- Added toptopple sound documentation in .ods spreadsheet format (LibreCalc)

into 'doc' folder

- Fixed and improved documentation for LuaMapObjectDes cription: :get_type_ name.

- More cross-linking between map object classes and their description objects.

- Fixed some miscellaneous bugs in the LuaMap documentation.

- Use mathjax for latex in docs instead of imgmath

- Enable building documentation with warnings as errors on Travis

- Constructionsites' help button now points to the help for the building being

built

- Documented metaserver command line options

- Added lua_path.cc to the documentation

- Add tribe-specific ware purpose texts to web encyclopedia

- Fixed bug #1792297: Advanced buildings report wrong worker experience in the

encyclopedia

Editor

- Overhauled the selection menu for critters to give them categories

- Added an option "items per row" and rearranged the terrains and immovables

- Display of bobs, immovables and resources can now be toggled individually

- Fixed drag and drop

- Removed dead code for make infrastructure tool that was never finished

- Fixed keyboard navigation with escape and enter for save map and save game

screens. If the editbox is focused, escape will reset the text if changed,

and close the window if unchanged.

- Refactored Editor Player Menu to use Box layout. Show dismissable warning if

more than 8 players are selected.

- Map Editors now can choose "Random" tribe in the player menu

- Converted editor infotool to new font renderer and added some layout tweaks

- Enable OK button in map options when tags have changed.

- Use temporary container in cleanup_port_spaces to prevent invalid iterators

- Limited the editor undo stack to 500 items to prevent boundless growth of

memory use

- Fixed bug #1627537: Release mouse button does not work when placing things

and mouse gets under a window

- Fixed bug #1738641: Resources can be replaced only once in editor

- Fixed bug #1749146: MultilineEditboxes: Entering text not possible

- Fixed bug #1736086: Saving a map with no player set shows up as having one

player:

- Initialize new maps with 0 players

- Disable selection of maps with 0 players

- Automatically add first player to editor player menu

- Fixed bug #1741779: Description is cut in map options multilineeditbox

- Fixed bug #1782593: Segfault in random map generator

- Fixed bug #1783878: Saved random map does segfault on load if no tribe is

explicitly set

- Fixed bug #1815613: Editor crash when setting new 0,0 coordinates

Graphics Engine

- Renamed "sub" tag to "div" in new font renderer.

- The new font renderer now sets the width properly and supports player color

for images. Added width property to img tag

- The new font renderer now creates a set of textures that will be blitted

separately by the new class RenderedText. This avoids issues with texture

sizes exceeding the maximum size supported by graphics drivers when

MultilineTe xtareas get arbitrarily long.

- Fixed incorrect layout of divs with width=fill when the previous div is

wider than 50%

- Fixed superfluous space characters at beginning and end of lines

- Implemented text floating around images

- Messages try to render with the new font renderer first, then fall back to

the old font renderer for layouting messages that haven't been converted yet

(and from savegames).

- All images with player color now receive their color by a common

playercolor _image function. Available player colors are kept in an array.

- Replaced raw pointers in the font renderer with shared_ptr

- Split graphics into multiple Cmake libraries.

- Got rid of EdgeOverlayManager and FieldOverlayManager and shifted their

functionality to local draw() functions in individual classes. Gave the

Interactive* classes their own draw() functions.

- Refactored Tcoords, Fcoords and TriangleIndex

- Force integer precision for overlays. This fixes fuzzy overlay images when

the player hits Ctrl+0 to reset the zoom.

- Show a basic SDL error message box to the user if the shading language

can't be detected or is too old.

- Print the shading language as double to console

- Fix shading language version detection for system locales that don't

use . as a decimal separator

- Fail with SDL messagebox if SDL_BYTESPERPIXEL != 4

- Fixed bug #1674243: Assign owners to neighbors in Player: :rediscover_ node.

The lack of owners was causing crashes with the road

program, which no longer knew which texture to pick.

- Fixed bug #1711816: Black terrains on fullscreen switch.

Networking

- Replaced SDL-Net with Boost.Asio

- Added IPv6 support

- Implemented a relay server. Opening a router port is no longer necessary

for the host of internet games

- Improved the online login code by adding semi-constant user ids that are

valid for 12 hours, allowing to reclaim a username after a disconnect

- Increasing password security by no longer storing and transmitting it in

plaintext

- Improvements to Metaserver protocol

- Fixed memory leak in LanGameFinder

- Fixes on the communication between widelands and the metaserver:

- Permit answering PING requests even while logging in

- Print current time to console when logging in

- Ease finding the corresponding log entry on the metaserver when debugging

- Re-enabled and fixed unused code for whisper message to nonexisting player

- Handle error message when trying to join a non-existing game

- Avoid hanging client even after being notified about the non-existing game

- Removed no longer needed error messages

- Fixed bug #1691335: Multiplayer client crashes when the host hasn't selected

a map yet

- Fixed bug #1794339: Segfault joining game

- Fixed bug #1805325: Crash on late joins of LAN games, and display of map

name in LAN lobby.

Build System

- Windows builds now have a unique app id for every build. This allows

parallel installation of several versions.

- Added support for gcc7 and llvm8.

- Removed "redundant-decls" flag for Windows builds due to conflict between

SDL and MinGW.

- New Macro FALLS_THROUGH; for use in switch statements.

- Let Travis build each commit on MacOS in addition to our Linux builds. Note

that the regression test suite is only run for Linux.

- Allow compiling with AddressSanitizer, and choosing between gcc and clang on

the first compile.

- Deactivated the rich text testing project, as it's currently unmaintained.

- Move website related binaries to base dir in compile.sh

- Do not build website tools on appveyor, this saves 20 minutes on x64 debug

builds

- Check for minor version of CMake

- Only export ICU_ROOT if CMake version is lower than 3.12

- Support for glbinding 3 and new Boost version

- Fix revision detection

- Fixes for handling different Cmake policies

- Use MacOSX.sdk if an appropriate versioned SDK can't be found.

- Add linker flags to please Ubuntu 18.10

- Use more processing units when using the compile script. Defaults to: max.

Processors -1. Can be set with the -j switch.

- Copy the version file instead of moving it, so that the update script can be

run twice in a row.

- Use compile.sh when running update.sh

- Added tags for Flatpak to appdata.xml

- Modernized how Mac OS X releases are done:

- Add CFBundleShortVe rsionString to Mac builds

- The script for building on macOS uses gcc-7 now. Also it checks whether

the SDK10.7 is installed or not and uses the latest installed version if

it cannot find the old one.

- Choose between compiler clang or gcc, specify build type: debug or release

- Set build target to 10.9 if macOS 10.9 or newer is found

- Append macOS target version to dmg filename

- Fixes for Debian-based software centers:

- Add stock icon to appdata.xml

(c.f. https:/ /bugs.debian. org/cgi- bin/bugreport. cgi?bug= 857644)

- Change icon definition in .desktop to be a generic one

- Content ratings are now accepted by the validator, so we've activated them

- Validate .desktop file on translation updates. Removed deprecated category

from .desktop file.

Other Issues

- Moved utils/fix_ lua_tabs. py to utils/fix_ formatting. py and added calls to

clang-format and pyformat.

- Cleaned up Windows utils

- Removed unused images

- Fixed a series of compiler warnings for clang, gcc and Windows.

- The ProductionSiteDescr constructor still contained some checks from the

time when they used to inherit from MilitarysiteDescr. Removed this obsolete

code and made working_positions and programs mandatory.

- Used the Notification system to reduce some code interdependency.

- Various code cleanups to make the code more readable.

- Fixed diverse crashes and memory leaks with the help of AddressSanitizer

- Diverse refactorings to use composition over inheritance and to get rid of

multiple inheritance

- Replaced SyncCallback through a std::function< void()> .

- More widespread use of smart pointers

- Untangled MapView and InteractiveBase.

- Cleaned up map handling in EditorGameBase

- Removed some dead code and reduced dependency cycles

- Options screen now saves immediately so that the changes are persistent even

if Widelands crashes afterwards.

- Added 2 new functions to Lua interface: list_directory and is_directory

- Split new function cleanup_ portspaces( ) from allows_seafaring(), and

refactored port spaces checks.

- Only recalculate whether a map allows seafaring when something has changed

- Economies are now mapped to global serials and kept as unique_ptr in the

Player objects

- Exit gracefully if user specifies a datadir that doesn't exist

- More strict sanitizing of chat messages

- Print a welcome message on joining the metaserver

- Write Windows log output to homedir instead of the program dir

- Widelands is now installed into local appdata on Windows

- Copy translation validation results into maintainers' and translators' views

to make them easier for translators to navigate

- Use std::cout for logging when calling terminate on shutdown, because the

logger might not exist any more

- Remove test logging output from production_ program. cc

- Use internal names rather than descnames for log messages and workarea IDs

- Refactor website binaries to use a real tree data structure for writing JSON

- Print more information in syncstreams. Create additional smaller syncstream

files containing the last few seconds leading to a desync.

- Added a suppressions file for Valgrind to mask memory errors caused by

backend libraries

- Fixed bug #1648178: Fatal Exception: Bad Cast

- Fixed bug #1743086: ASAN memcopy overlap on Ubuntu Budgie from libSDL

2.0. 6+dfsg1 by disabling sound as a workaround to a bug

in the backend

- Fixed bug #1724145: Crashes in master- 2511_release_ x64 on save, caused by

economy merges making Lua variables go nil

- Fixed bug #1776603: ASAN: wl_map_object_info leaks memory