Age | Commit message (Collapse) | Author | Files | Lines |
|
Replaces the default login wallpaper. The wallpaper can still be set
either through branding or in the client data.
This also fixes the scaling of the Manasource logo when using the Mana
theme.
Closes #99
|
|
Fixes regression in 80f76c3aae438f7b9a7c1359c3f37aac460f934b. The
scissor is no longer always enabled, but since it was enabled on startup
there was visible clipping when resizing the window right after startup.
|
|
Only call `SDL_ShowWindow` once, since it seems old SDL versions (like
2.30.0, shipping with Ubuntu 24.04) do not allow a maximized window to
be minimized when `SDL_ShowWindow` is called each frame.
|
|
The "Unspecified" gender was causing some older players to be invisible
since no sprites were displayed at all. I think this is a bug in TMWA,
which should never send SEX::UNSPECIFIED for player characters, but
while this bug exists we can make sure to map this to Gender::Neutral
(renamed from "Hidden").
The Gender::Unspecified value was removed entirely because it never
makes sense for beings. One "neutral" value should be enough.
|
|
This resulted in gradient type text lagging one step behind the actual type.
This.. this bug was here for 14 years?!
**** mana/verse!234
|
|
Due to the use of SubImage, there can be multiple images pointing to the same
SDL_Texture with different alpha values. However, since the alpha mod set on
the texture was only set from Image::setAlpha, images were not always rendered
with the correct alpha value.
Now the alpha mod is always set right before rendering each image. Most of the
time the alpha will remain the same, but I don't expect this to become a
performance issue so I've not added extra variables and checks to suppress such
calls when they aren't needed.
On the upside, this simplifies the "use color" option, which previously had to
restore the previously set alpha mod.
Closes #117
|
|
TMWA supports a "neutral" gender, which in Mana client maps to "hidden". In
The Mana World, it means a player character is not displayed as clearly male
or female, using a dedicated base sprite with more underwear.
It is not possible to choose the neutral gender on account registration or
character creation. In TMW, these choices are not actually relevant anyway
and could probably be removed.
Fixes #114
|
|
Fixes some issues with the manual layout.
|
|
Rather than rendering the same texture 4 additional times, render a
specific outline version of the text. While reducing the number of times
the text is drawn, it does increase font texture use.
Result is a generally prettier outline due to rendering it properly at
sharp corners of the characters. The shadow for outlined text is now
also thicker, as appropriate.
As part of this change, the `TextRenderer` class was merged into the
`Graphics` and `TrueTypeFont` classes. There seemed to be little point
in having a separate function for this, apart from needing more static
casts to `Graphics*`.
Also fixed an issue where the font style was not being restored after
adjusting the font scale, when using an older SDL_ttf than 2.0.18.
Closes #87
|
|
For customizing the text color used with HIGHLIGHT color as background.
|
|
Rather than hardcoded black.
|
|
|
|
* Fixed doxygen comment on KeyFunction struct
* Use SDL_BUTTON_LMASK instead of SDL_BUTTON(1)
* Removed unused include
|
|
No need for them to be part of the header.
|
|
The init call makes sure there are no quests loaded, which is necessary
because `SettingsManager::unload` is only called on exit and not when
switching servers.
Closes #112
|
|
|
|
Some security checks are done because players might also write
"screenshot:" in the chat to create file:// URLs and `SDL_OpenURL` can
be used to open many things. So we disallow ".." and require a ".png"
extension.
|
|
* Use `std::unique_ptr`, so we can get rid of the custom move
constructor and destructor.
* Move and rename the `ImagePosition` enum to `WindowAlignment`, which
fits better with what this enum is actually used for.
|
|
Currently translated at 100.0% (879 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/ta/
|
|
Currently translated at 1.7% (15 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/ka/
|
|
Currently translated at 95.9% (843 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/fi/
|
|
Currently translated at 100.0% (879 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/ta/
|
|
Currently translated at 95.5% (840 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/fi/
|
|
|
|
Currently translated at 100.0% (879 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/es/
|
|
Currently translated at 100.0% (879 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/pt/
|
|
Currently translated at 99.8% (878 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/pt/
|
|
Currently translated at 97.0% (853 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/es/
|
|
Currently translated at 100.0% (879 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/pt_BR/
|
|
Currently translated at 97.7% (859 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/pl/
|
|
Currently translated at 95.2% (837 of 879 strings)
Translation: Mana/Mana Client
Translate-URL: https://hosted.weblate.org/projects/mana/mana/es/
|
|
Seems this color just wasn't copied over correctly due to being on a
different palette originally.
Also made Tab::draw use the correct outline color.
Addresses part of #98.
|
|
Since there was already specific support for theming different progress
bars with a custom color gradient, it was relatively straight-forward to
extend this to support custom text formats.
Thanks to @Meway for having an initial go at this feature!
Closes #111
|
|
By using SDL logging, we can rely on SDL to filter the log messages by
their priority before they get sent to our custom output function. For
example, we now no longer get entries for created and destroyed Window
instances by default, since these have only "debug" priority whereas the
default priority for the "app" category is "info".
We can also get log messages raised by SDL itself in our log now. Log
levels can be controlled per category through the "SDL_LOGGING"
environment variable.
Many existing log messages have been assigned a category based on their
existing prefix.
|
|
On Windows, the SDL event loop would get blocked during move/resize,
which made the game stop updating. Since version 2.30, SDL will send its
SDL_WINDOWEVENT_EXPOSED event on an internal timer during window
move/resize so the application can keep redrawing.
Since no window size changed events can be received either, the size of
the window and the renderer is now updated at the start of each frame.
On macOS the SDL event loop was similarly blocked during resize.
The event watcher is only used on Windows and macOS because on X11 the
processing of all the queued up expose events can cause a delayed response to
resizing. Besides, the issues fixed by this watcher don't exist on X11 and
Wayland.
|
|
As used to be available in the old manual NSIS file.
|
|
A compatible definition of MAKEWORD may already get pulled in from the
Windows include minwindef.h.
|
|
|
|
Otherwise, at least on X11, the window is (visibly) re-created once the
SDL renderer is created. Also the window icon can be seen changing on
startup. Showing the window only after all related setup has been
completed avoids this.
On X11 this appears to have the added benefit of putting a "windowed
fullscreen" window on the active screen (in terms of where the mouse is)
rather than always using the primary screen.
On Windows, showing the window only after the initial paint avoids the
window initially appearing with its contents entirely black.
The window is still immediately shown in the following cases:
* In exclusive fullscreen mode, because on Windows this caused the
initial show of a fullscreen window to take much longer and on X11 it
could cause the resolution of the primary screen to be changed while
maximizing the Mana window on the active screen.
* In "windowed fullscreen" mode when the legacy OpenGL renderer is used,
where it was causing an additional flicker on Windows.
|
|
|
|
This window gives an overview over completed and currently active
quests. A persistent checkbox toggles whether completed quests are
shown. Item links are supported in quest texts.
New window icon by meway. Completed quest icon for Mana theme copied
from ManaPlus.
The Quests window has no shortcut for now.
|
|
The `TmwAthena::PlayerHandler` now handles the quest variables and
applies the active quest effects to NPCs. They are updated when
variables change or the map changes.
|
|
- Introduce QuestDB with quest/effect structures and XML parsing
- Register questdb in CMake and settings manager
- Add fromString overload for std::vector<int> parsing
|
|
It should be at least the minimum size. This was not the case when there
were no emotes provided by the server (as for Source of Tales
currently).
Issue manifested itself as `std::clamp` assert in debug builds, and
probably undefined but harmless behavior in release builds.
|
|
This avoids some duplicated code between `Client` and `Game` and reduces
code indentation. Now only the `Client` calls `SDL_PollEvent` and
handles `SDL_WINDOWEVENT_SIZE_CHANGED`.
This also fixes the Keyboard setup tab to allow assigning keys before
starting the game.
|
|
* When hovering an empty box in the shortcut window, the tooltip of a
previously hovered non-empty box would stay visible.
* When hovering to the right of a row of inventory items, the tooltip
for the left-most item on the next row would be displayed.
Also added some padding to shift the text and item icon a little in the
shortcut window when using the Jewelry theme.
|
|
Guichan 0.8.3 was released and can now be installed through Homebrew,
we don't need to rely on the Guichan submodule on macOS anymore.
|
|
Seems libcurl4 was renamed in the transition to 64-bit time_t (for
Ubuntu 24.04).
|
|
|
|
When adding support for SMSG_NPC_COMMAND in d5ebad4e74da011777f9ba1a13f,
I mistakenly assumed the "close dialog" (5) command should just close
the NPC dialog. However, the client is expected to send CMSG_NPC_CLOSE
as well.
Closes #91
Closes #107
Closes #108
|