Age | Commit message (Collapse) | Author | Files | Lines |
|
* When config file can't be read, it will be reported by
Configuration::init.
* When config file can't be written, xmlNewTextWriterFilename will
probably return nullptr.
|
|
* 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
|
|
Broke in 474442f1a49d29d85de769c4fbb3aa8636877b49 due to changing the default
padding on the Popup class.
|
|
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.
|
|
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)
|
|
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.
|
|
So that one can choose to build with the Guichan submodule also on
other systems than macOS.
|
|
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.
|
|
Leaving only the slightly more recent macOS 10.7 one, in case it might
be useful with getting it to work on macOS 11+.
|
|
|
|
|
|
* 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.
|
|
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.
|
|
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.
|
|
Now a text chunk has a maximum length of 4k characters, but that should
be plenty of space since they're only single lines.
|
|
We can use vsnprintf to write to the std::string directly.
|
|
* 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.
|
|
It did not distribute them when the value of the DropDown was changed by
key events or mouse wheel.
|
|
* 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).
|
|
|
|
Simplifies the code a little.
Also use ResourceRef in SubImage to avoid manual reference counting.
|
|
Amendment of dd1db3753ecf8a4d782aee1f518759763d8caf87.
|
|
|
|
|
|
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.
|
|
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.
|
|
* 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
|
|
* 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.
|
|
The 'Play' button was continuously requesting focus once the updates had
been downloaded.
|
|
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.
|
|
|
|
I had broken this in 264be2108c51837fa92085f6c839e66aebbcfc9e by no
longer reading out the property.
Made some further simplifications and two more fixes:
* When the original image's size was not 800x600, it wouldn't get scaled
as expected due to the integer division being performed before the
multiplication.
* I had changed the default resolution to 1280x720, while mKeepRatio
expects to scale the original image as if it was displayed on an
800x600 screen. So now it's hardcoded on 800x600 rather than using
the defaultScreenWidth/Height variables.
* Removed the confusing x/y parameters from AmbientLayer::draw, which
were actually set to the graphics width/height.
* Changed SDLGraphics::drawRescaledImagePattern to not repeatedly
set the source origin.
|
|
Rewrote the tile animation loading code based on XML tags, replacing
the code that loaded tile animations from tile properties.
Also made a number of code simplifications and optimizations:
* Replaced a number of pointer members with value members.
* Pass around Animation and TileAnimation by value, using std::move to
avoid allocating copies.
* push -> emplace
* push_front -> emplace_front
* push_back -> emplace_back
* Use range-based for loops
* Use std::vector instead of std::list for storing affected tiles
(less fragmentation)
* Avoid string copies and allocations while parsing CSV layer data.
* Replaced xmlNodeGetContent with directly accessing 'content'.
|
|
The affected tiles were only tracked for base64-encoded layer data.
|
|
* Use final for all message handlers, Client, LocalPlayer,
Being::getType, Being::setPosition and Being::setMap.
(avoids some warnings about virtual dispatch in constructors)
* Use auto in more places
* Use emplace_back instead of push_back in some places
* Use default member initializers
* Less else after return
* Removed superfluous .c_str()
* Removed type aliases that are only used once
* Removed more unused includes
|
|
Ninja should automatically run the appropriate amount of parallel jobs.
Also removed the --parallel from the README.md, since the default
generator (Unix Makefiles) is not smart about this and risks locking up
people's systems because the many compile jobs can make it run out of
memory.
|
|
This change fixes hair style to take into account "race", which makes
the faces visible again. Hair colors should also be fixed now, with
partial support for itemcolors.xml added.
The Mana client now also supports per-character gender, and it now hides
the hair style and color buttons on character creation, when there are
none to choose from.
Closes #43
|
|
This only adds support for the NPC_CLOSE_DIALOG and
NPC_CLEAR_DIALOG sub-commands.
Closes #47
|
|
* Fixed duplication of player name in chat
Closes #49
|
|
Also made it exit with error when there is an unknown option or missing
argument.
|
|
|
|
Usually this would be guessed correctly by the port, but now it is also
possible to just specify the server type and the port will be derived
from there, unless a default port is given in the branding file.
Closes #56
|
|
To match support for this in M+, since TMW uses this functionality on
two of its NPCs.
|
|
The new cursor types are not used yet for now.
|
|
* Don't needlessly store or return raw pointers in BeingInfo
* Less copying, more moving
* Less else after return
* Make AddDEF a template instead of a macro
* Removed some unused includes
* Use range-based for loops
|
|
The Mana World currently likes to just update its "TMW.zip" file,
whereas updates were always given unique names in the past. With this
change, the client checks the Adler32 checksum to know when it should
re-download an update file.
This matches the behavior of ManaPlus commit
96150f1aeacf55d311c41ffe12d9e754b1cda001.
|
|
Using sprintf triggers a warning on macOS. The buffer should be large
enough, but a little extra security doesn't hurt.
|
|
The configuration and setup UI were adjusted to the new options.
This also fixes issues in applying new video settings.
Default resolution was changed from 800x600 to 1280x720. VSync is
enabled by default while FPS limit was disabled.
Display aspect ratio for the resolution options.
I had to work around some macOS issues:
* Don't change window size when it appears to be "maximized", since it
just changes the rendering area while leaving the window maximized.
* Unset fullscreen display mode temporarily to allow changing resolutions,
otherwise the rendering area no longer matches the screen and mouse
input is also off.
* Removed SDL_WINDOW_ALLOW_HIGHDPI for now because it causes issues on
macOS, since we're not actually handling the scaling factor.
A Video class and an SDLGraphics subclass were split off from Graphics.
This setup has Less duplication and leaves the OpenGLGraphics and
SDLGraphics better separated.
Fixes #57
Fixes #58
|
|
* Use default member initializers
* Use range-based loops
* Don't use 'else' after 'return'
* Removed some unused includes
* Construct empty strings with std::string() instead of ""
* Clear strings with .clear() instead of assigning ""
* Check whether strings are empty with .empty() instead of comparing to ""
* Removed redundant initializations
|
|
|