summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-04-17Merged INSTALL with README.md and README.cmakerelease-updatesThorbjørn Lindeijer4-86/+50
2024-04-12Updated NEWS for 0.7 releaseThorbjørn Lindeijer1-0/+48
2024-04-12Various version and link updates in the INSTALL fileThorbjørn Lindeijer1-16/+14
Might be better to merge any relevant information in this file with the README.md.
2024-04-12Updated some URLsThorbjørn Lindeijer2-3/+3
2024-04-10Fixed the scaling of the custom cursorThorbjørn Lindeijer1-5/+6
It appears that either SDL or the system is already taking care of scaling the cursor to the display scale (observed on both macOS and Wayland). Hence, we should only scale the cursor by the user scale and not by both. Follow-up to 6eca1b485dba7355d827745284ed2f0072f9e370.
2024-04-09Removed unused duplicate parsing of effects.xmlThorbjørn Lindeijer2-108/+0
The loading of effects.xml has ended up being duplicated, with an implementation in getEffectDescription in actorsprite.cpp as well as in EffectManager. But the one in actorsprite.cpp was actually never used.
2024-04-08Fixed assertion failure on exitThorbjørn Lindeijer1-0/+4
Regression introduced in 14dc8218eeebd1583e6bd3c49013b3e501f47228.
2024-04-08Added UI debug drawingThorbjørn Lindeijer7-4/+104
Shows outlines of visible widgets as well as highlighting modal focus, modal mouse focus and regular focus. Can currently only be toggled in the Debug window, so needs source code modification to be used during login sequence for now.
2024-04-08Use ResourceRef<Image> in more placesThorbjørn Lindeijer25-136/+127
Automatic reference counting of images is now used by Item, Icon, AnimatedSprite, ImageSprite, ParticleEmitter, Minimap, Desktop and Emote. Since ResourceManager::get automatically adds a reference, it needs to be explicitly subtracted when the resource is managed by ResourceRef. This is taken care of by the new ResourceManager::getImageRef. Also removed the apprently unused and duplicate "mDrawImage" from Item (which also didn't get decRef called on it). Fixes cleanup of emote ImageSet and ImageSprite instances, as well as particle images.
2024-04-08CMake: Use install(DIRECTORY ...) to install data filesThorbjørn Lindeijer10-122/+9
Beats using a CMakeLists.txt in each directory and fixes a few missed files (like music and equipment slot icons).
2024-04-08CMake: Exclude Guichan headers and library from installThorbjørn Lindeijer1-1/+1
Otherwise they are included in the NSIS installer, as well. We don't need the Guichan library since we link to it statically.
2024-04-08Fixed choosing preferred language on WindowsThorbjørn Lindeijer2-13/+34
The linker could not find _nl_locale_name_default. Maybe it could be fixed by linking to another library, but it would likely not yield the preferred behavior. Instead, we now use GetUserPreferredUILanguages to set the LANG environment variable with one or more languages and let gettext choose the best fitting available translation. Also fixed the directory from which the translations are loaded to match the installation directory,
2024-04-08CMake: Removed manual RC-compiler setup for MinGWThorbjørn Lindeijer1-16/+0
Works without in MSYS2, at least.
2024-04-08Set Windows-related DPI hints to per-monitor aware v2Thorbjørn Lindeijer1-0/+4
Set SDL_HINT_WINDOWS_DPI_AWARENESS to "permonitorv2", which tells Windows the application will handle all scaling. We don't currently adjust the window size when it changes monitors, but mainly use this hint to disable scaling by the system, since that blurs fonts and pixel art. Once we can properly handle fractional scaling (which is common on Windows), we can set SDL_HINT_WINDOWS_DPI_SCALING to "1" instead.
2024-04-08Some updates to .gitignoreThorbjørn Lindeijer1-2/+1
* Ignore the common "build" directory. * Removed ignore rules for deleted Xcode project.
2024-04-08Resolved issues with winver.hThorbjørn Lindeijer6-47/+6
The configured file wasn't actually being used, because it was not in the include path. Instead, a checked in version was used. In addition, winver.h is an existing Windows header, which was conflicting with the generated file. Instead, now mana.rc itself is configured. We didn't actually need winver.h anywhere else, anyway.
2024-04-08Enable UTF-8 support on WindowsThorbjørn Lindeijer1-0/+3
This relies on Windows 10 version 1803 (10.0.17134.0), which is hopefully an acceptable minimum. It fixes handling of paths with special characters.
2024-04-08Use C++17 to implement mkdir_rThorbjørn Lindeijer2-68/+9
Should be a lot less fragile and might also help to resolve encoding issues.
2024-04-08CMake: Allow using CPack to generate an NSIS installerThorbjørn Lindeijer3-37/+88
* Set the version, description and homepage URL using modern CMake style (minimum supported version increased to CMake 3.12). * Fixed the reference to the MUI_WELCOMEFINISHPAGE_BITMAP file, which needed "\\" instead of "/" to work for me in MSYS2, and with CPACK_VERBATIM_VARIABLES enabled (otherwise "\\\\" was needed). * Fixed the icon used for the uninstall entry by setting CPACK_NSIS_INSTALLED_ICON_NAME. * Fixed missing start menu entry by setting CPACK_PACKAGE_EXECUTABLES. * Fixed running Mana when finishing the install by setting CPACK_NSIS_EXECUTABLES_DIRECTORY. * Mark the NSIS installer as DPI-aware using CPACK_NSIS_MANIFEST_DPI_AWARE. * Enabled uninstall before install using CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL.
2024-04-08Windows: Modernize getSpecialFolderLocationThorbjørn Lindeijer3-33/+32
Ported from CSIDL to newer FOLDERID API and used wcstombs_s to convert the returned path to a multi-byte string. Fixes issues when the Windows username contains special characters.
2024-04-08Compile fixes for MSYS2 UCRT64Thorbjørn Lindeijer5-10/+19
Also added instructions for installing the dependencies on MSYS2. The selection of the default language is commented out for now. It will be fixed in another change.
2024-04-02General code cleanupsThorbjørn Lindeijer45-176/+117
* Removed some unused includes * Removed unused ListBox::mFont * Removed wrong cast to SDL_Scancode * Removed superfluous .c_str() * Removed superfluous explicit std::string construction * Removed unused variable * Use more emplace_back * Turned FindBeingFunctor into a lambda * Avoid needless pointer references for ambient layers and use a vector
2024-04-02Fixed padding on mini-status windowThorbjørn Lindeijer1-0/+2
Broke in 474442f1a49d29d85de769c4fbb3aa8636877b49 due to changing the default padding on the Popup class.
2024-03-28Fixed size and child positions for various popupsThorbjørn Lindeijer10-91/+66
Most prominently, fixes the tooltips on the window buttons being clipped due to their position being slightly outside of the clipping children area. And fixes NPC tooltips from having a lot of empty space below the NPC name. Also reduced the space between texts in the item tooltip to match the padding rather than being an entire empty line.
2024-03-28Fixed compile against libxml2 2.12ewew ukek2-23/+22
Quote from Fedora mailing lists: The latest released versions of libxml2 have a couple of important changes in header files that have unintentionally caused some packages to fail to build without modification, including: * several functions now accept or return a const xmlError struct * cyclic dependencies in header files were fixed (by dropping some includes)
2024-03-28CI: Make the macOS build optionalThorbjørn Lindeijer1-0/+1
While it would be nice to make sure this build passes before each merge, it's not possible at the moment due to: * The build running on my macOS system, which might not always be available. * The runner currently being limited to the mana group, so it will not run on jobs triggered by MRs from outside that group.
2024-03-26CMake: Added USE_SYSTEM_GUICHAN optionThorbjørn Lindeijer2-17/+16
So that one can choose to build with the Guichan submodule also on other systems than macOS.
2024-03-26Use SDL2 support for color and system mouse cursorsThorbjørn Lindeijer5-121/+194
This way the cursor is not limited by the framerate nor affected by input lag. Also, when custom cursor is disabled, a few different system cursors are now used instead. It also avoids an issue on Wayland, where hiding the cursor (as done to render our own one) would cause the cursor to get locked within the window. On macOS it fixes two cursors being visible when hovering the window while it is in the background. The cursor can unfortunately no longer gently fade away.
2024-03-26Removed the macOS 10.6 Xcode projectThorbjørn Lindeijer4-2148/+53
Leaving only the slightly more recent macOS 10.7 one, in case it might be useful with getting it to work on macOS 11+.
2024-03-26Removed outdated Travis CI configThorbjørn Lindeijer1-8/+0
2024-03-26Removed outdated Code::Blocks project filesThorbjørn Lindeijer3-722/+0
2024-03-26Added support for HiDPI fontsThorbjørn Lindeijer9-81/+120
* TrueTypeFont class now takes into account the graphics scale, in order to render an appropriate higher-resolution texture. * Removed TrueTypeFont::fontCounter, since TTF_Init/TTF_Quit already keep a counter. * Avoid copying the rendered string needlessly, when it already exists in the cache. Avoid another copy, when inserting a new chunk into the cache.
2024-03-26Added functions to draw images at sub-pixel positionsThorbjørn Lindeijer7-113/+126
This can be used for smoother mouse cursor movement when rendering our own mouse cursor (already changed in this commit) and is also necessary for implementing support for HiDPI font rendering. Also dropped some almost duplicated OpenGL code.
2024-03-25Allow mouse focus click-throughThorbjørn Lindeijer2-1/+3
This is generally expected on Linux, where it feels annoying that the initial click just focuses the window. On macOS it's a little bit different, since applications can be specific about which elements are directly clickable and which aren't, but in general it feels better to me when the UI can be interacted with directly.
2024-03-25Avoid string allocations during text rendering and sizingThorbjørn Lindeijer3-16/+11
Now a text chunk has a maximum length of 4k characters, but that should be plenty of space since they're only single lines.
2024-03-25Removed an unnecessary extra allocation in strprintfThorbjørn Lindeijer1-5/+4
We can use vsnprintf to write to the std::string directly.
2024-03-22Added support for scaling the outputThorbjørn Lindeijer18-154/+386
* Added "Scale" user option, which can either by "Auto" or an explicit scaling factor. Its maximum value depends on the current resolution. The "Auto" factor is based on keeping the logical resolution on at least 800x600, wheres the maximum scale is based on keeping the logical resolution on at least 640x480. * Enabled support for High DPI. This means the rendering target can now have a different resolution than the window size, which can happen on macOS, Windows and Wayland. The resulting scale is multiplied by the above user-controlled scale. Currently, this looks ugly for non-integer scales, which are not used on macOS and can only be configured on some Wayland compositors. Has not been tested on Windows. * Simplified OpenGL initialization (moved out of _beginDraw). * Made sure _beginDraw/_endDraw sets a clip area also for SDLGraphics.
2024-03-22Fixed the distribution of action events by DropDownThorbjørn Lindeijer1-1/+7
It did not distribute them when the value of the DropDown was changed by key events or mouse wheel.
2024-03-21Removed unused ResourceManager methodsThorbjørn Lindeijer2-43/+0
* ResourceManager::addResource * ResourceManager::get(const std::string &) These were once added in 32996cee607c52ecef9be4638df554dd89b39c24, but they are no longer necessary after the port to SDL2 (2c51c98625b225cecfb9628c30d62d4e30f7e3e1).
2024-03-21Removed the unused Image::mLoaded memberThorbjørn Lindeijer2-41/+19
2024-03-21Use std::function in ResourceManagerThorbjørn Lindeijer4-85/+35
Simplifies the code a little. Also use ResourceRef in SubImage to avoid manual reference counting.
2024-03-13Use snprintf instead of sprintfThorbjørn Lindeijer2-7/+7
Amendment of dd1db3753ecf8a4d782aee1f518759763d8caf87.
2024-03-13CI: Added macOS build jobThorbjørn Lindeijer1-0/+10
2024-03-13Adjusted handling of SMSG_LOGIN_DATA to what tmwa sendsThorbjørn Lindeijer1-3/+4
2024-03-13CI: Ensure we can compile on Ubuntu 20.04 as wellThorbjørn Lindeijer1-5/+8
Using DEBIAN_FRONTEND=noninteractive to avoid a timezone related prompt on Ubuntu 20.04. Also switched to apt-get, to avoid a warning about the CLI interface not being stable.
2024-03-13Added SDL version check for SDL_OpenURLThorbjørn Lindeijer2-5/+20
Ubuntu 20.04 had SDL 2.0.10, and it is still supported. Also added error handling to the SDL_OpenURL call, just in case.
2024-03-12General code cleanupsThorbjørn Lindeijer71-546/+250
* Use default member initializers * Use range-based for loops * Avoid needless pointer references for ShopItem::mDuplicates * Removed type aliases that are only used once or twice * Removed more unused includes * Removed some unused functions * Removed superfluous .c_str() * Rely on default copy and assignment operators for Vector class * Use std::unique_ptr in some places * Removed duplicated mPlayerMoney updating in SellDialog * Removed duplicated Game::handleInput call * Removed unused SDLInput::mMouseInWindow * Removed remnant of manual widget positioning in HelpWindow * Removed superfluous initialization of static pointers
2024-03-11Implemented ability to open external links in news and chatThorbjørn Lindeijer9-18/+73
* Use ConfirmDialog to confirm the opening of the external link. * ConfirmDialog now centers on its parent window when provided. * Reset hovered link when mouse exits the BrowserBox.
2024-03-11Fixed settings being unavailable when updating was doneThorbjørn Lindeijer1-0/+1
The 'Play' button was continuously requesting focus once the updates had been downloaded.
2024-03-08Removed SDL2_gfx dependencyThorbjørn Lindeijer5-29/+52
Since the upgrade to SDL2 it was only used for framerate limiting, which I've replicated in a small helper class. Also reduced the framerate limit while minimized from 100 to 10 FPS.