Hi folks, as there seems to be some new interest in working on Dune Legacy I would like to help with some background information on the sound: Back when I started looking into Dune Legacy it was coupled with a lot of sounds in form of wav files. I do not have any information about the source of these files but it looked like they were recordings from the original files. To avoid legal troubles I replaced those one after another by reading those sounds directly from the Dune II data files. Sound effects...
Set SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH to allow direct interaction with a non-focussed window
Place question box buttons like in the original game: 'Yes' is on the left, 'No' is on the right
Allow string splitting via regex; correctly split mentat texts
Rename one version of spitString to splitStringToStringVector; replace the other spitString version with a variadic template solution
Fix flickering mentat help screen
Swap button order for mentat screens to be the same as in the original game
Fix bug where parts of the ingame mentat help was drawn outside the mentat help window
Fremen and Mercenaries had the same colors in the original game albeit mercenaries were never used; but they can be seen in SuperDune. Maybe the color could be changed to be easier to distinguish. IMHO, making all friends blue/yellow and all enemies red would completely change the feeling of the game. Is it really necessary to make the game that easy?
Mouse cursor should change to reflect what the right click will do
That's a good idea; please go ahead. Maybe slightly changing the cursor color would be enough to give a visual feedback that the unit is not moving but attacking.
As you already mentioned, this flocking algorithm you're talking about is usually implemented in games where units can move freely. What I thought about is setting a different target tile for each unit such that their relative position remains the same. Problem with that solution is that units cannot be ordered to meet at a certain point: Think about selecting units in the field and a new unit at the base; when you order them to move to one tile the unit from the base will keep its relative position....
I also thought about that in the past but always came to the conclusion that it is not worth the effort: For the end-user it is only problematic when upgrading to a new Dune Legacy version. But with the current rate of new versions this seldomly happens. The campaign also takes only a few hours. Usually the changes to the save game format happen when a new member is added to one of the unit or structure classes. But handling the absense of such a field in an old save game might be non-trivial and...
This "bug" was also present in the original game. A common strategy in the original game was to first build as many special units (devastators or sonic tanks) until the unit limit was reached. Only then the starport was used to order as many units as possible. That way the unit cap could be circumvented. Of course we could add an option to Dune Legacy to also consider the unit limit at the starport. This option should be optional as it certainly changes the gameplay.
Rename TeamBehavior to AITeamBehavior and TeamType to AITeamType
Load AI teams with scenario and store them per house
Rename teams to AITeams to make it more obvious that they have nothing in common with the team id that is used for specifying the alliances between houses
Contact with the enemy is mutual; this is needed to (reliably) establish the first contact via reinforcements; reinforcements do not count as scenario units
Track tile visibility status for each house separately; provide and use methods to query visibility status by team
Rename getTeam() to getTeamID()
Only direct contact with enemy triggers CampaignAI to become active; fix sandworm in area guard mode
Fix bug introduced with 57ca7b: Thick spice tiles were not downgraded to normal spice tiles when next to sand tiles
Radar shows number of visible enemy units and visible friendly units
CampaignAI: Wait for the human player to find the AI player before becoming active
Bugfix: Reinforcements were not delivered when they were of type 'Troopers' or 'Infantry'
CampaignAI is now building units and attacking the player similar to the original game
As Dune 2 is not sold anymore (albeit you can sometimes find it on ebay) it is commonly considered abandonware. For legal reasons we do not provide any links to the Dune 2 data files but you can find a list of needed files in the manual.
CampaignAI: Add palace handling
Revert erroneous refactoring to blitAirUnits
Bugfix: Do not try to show tutorial hints when the game is not yet completely setup
First skeleton of campaign AI
Play 'Our base is under attack' when a structure is being attacked
Work around SDL bug #2979 and bug #3827: color keys are not handled correctly when converting 8-bit palettized surfaces to 32-bit surfaces; workaround is now to convert directly to texture
Fix some clang warnings/findings
Fix TTF font rendering by setting the font hinting to TTF_HINTING_MONO
Bugfix: Use int for previous choam amount
Start use MIX_INIT_MID with SDL_mixer 2.0.2
Switch to font sizes instead of font enum
Dynamically load fonts in the requested font size
Fix memory leak on failed SDL_realloc()
Fix some cppcheck findings
Switch internal strings to utf-8
Remove unnecessary 'extern'
Fix realloc double-free and get compile working with current versions of SDL_mixer
Only parts were merged as some parts were already fixed
Merge commit '851fd0a64ab6456fcde20701dc1e47422f794a3a'
Small fixes to compile with Visual Studio 2017
Unit test support for Visual Studio 2017
Merge commit '61bf0f3fd47747b7ce51a3da4f50a97c61698094'
Compile with SDL mixer 2.0.2
Fixed it independently. Thanks anyway for your work.
Fix a double free bug in Vocfile.cpp
Support for SDL_mixer 2.0.4 or higher: MIX_INIT_FLUIDSYNTH was renamed to MIX_INIT_MID
Bugfix: Release memory from unique_ptr before calling realloc
Use truetype font for all texts
Rename font enum values to match the used font size
Bugfix: Handle non-escaped strings in INI-files correctly
For campaign missions we want to have the house dependent deviation likelihood
Allow freely rotating air unit graphics
Make Ornithopter, Rocket Turret and Launcher interaction much more similar to the original
Bugfix: Add back Button::invalidateTextures() as it is needed for TextButtons that gets their color changed
Coverity: Some further fixes
Update lodepng
Coverity: Fix sound_adlib
C++11: Replace rand() with std::minstd_rand
Coverity: Fix various issues
C++11: Replace custom stringify() function with std::to_string
Bugfix: Do not destroy texture of pictures for hint messages
Coverity: Initialize all members
Wsa files seem to not necessary have to have a correct checksum
Coverity: Cast to size_t first
Coverity: Various potential issues found by coverity
Coverity: Reset currentGame to nullptr in any case
Coverity: Make cast to unsigned explicit
Refactor INIMap to use unique_or_nonowning_ptr
Coverity: Fix some found issues
Coverity: Replace some dynamic_casts with static_casts where it is save
Coverity: Add check for nullptr
Hm, it's difficult to say how long it will take for the next release...
Use unique_or_nonowning_ptr for all GUI classes to allow UI creators to either use surfaces/texture from the GFXManager or to use on-the-fly generated surfaces/textures
convertSurfaceToTexture now only takes a non-owning pointer
Hi, this seems to be a problem of the used fmt library (see https://github.com/fmtlib/fmt/issues/423 ). I just updated to fmt version 3.0.2 which should solve this problem thus the next Dune Legacy version should not run into this issue.
Update fmt library to version 3.0.2
Different file loaders are now consistently throwing exceptions; more use of smart pointers
Get rid of some SDL_Free* functions via std::unique_ptr
Get rid of bFreeSurface parameters
Move definition of RESTRICT from SDL2pp.h to Definitions.h
Replace more new/delete occurences with std::unique_ptr; for functions with a variable number of parameters the parameters with one initializer list parameter
Use sdl2::RWops_ptr instead of SDL_RWops*
Use std::unique<Animation> instead of animation_ptr
Use std::unique<Animation> instead of Animation*
Remove some unused includes found by checkheaders
Replace further std::shared_ptr with std::unique_ptr
GFXManager::getObjPic now returns an std::array of SDL_Texture* instead of SDL_Texture**
Switch to std::unique_ptr for most SDL_Surface and SDL_Texture pointers
Move fp32_parser to FixPoint.h
Replace all FixPt(x,y) with x.y_fix
add compiler option --no-unknown-pragmas
Add fix32_support with _fix32 user-defined literal.
FixPt(x.y) --> x.y_fix