Age | Commit message (Collapse) | Author | Files | Lines |
|
Less code to achieve the same thing (strong type and namespaced values).
The permissions related values have been moved to a PlayerPermissions
struct, which is also a bit less confusing.
|
|
Seems to be no point in using a macro here.
|
|
Mostly adjustments based on feedback from the Finnish translator.
|
|
Fixed with clang-tidy `readability-static-accessed-through-instance`
check.
|
|
Because the allocated surface was based on the unscaled size, writing
the actual pixels was overwriting random memory.
|
|
The logic update now uses Time::deltaTimeMs() where needed to make it
framerate-independent. This means there will no longer be multiple logic
calls per frame (as was usually the case with logic ticking at 100 fps
whereas the game would generally run at 60 fps).
At the same time, the game can be more precise at higher framerates and
should now run smoother at 144 Hz, for example. Previously the game would
sometimes skip logic ticks at that rate.
This change affects:
* Updating of animations
* Being movement speed
* More moving of manual time variables to Timer
Notoriously, the particle system still does 100 ticks/second.
|
|
The Timer is efficient because it does not depend on incrementing a
counter to keep track of time, nor does it call SDL_GetTicks every time
its state is checked (this happens once per frame instead).
Along with global functions Time::absoluteTimeMs() and
Time::deltaTimeMs(), this replaces previous globals tick_time, cur_time
and get_elapsed_time().
For now, there is still a fixed 100 times per second logic call rate,
but the new Time::deltaTimeMs() function should allow getting rid of
this.
|
|
* 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
|
|
* 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.
|
|
* 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
|
|
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
|
|
Previous code was assuming there would be no gaps in the emote IDs.
Also cleaned up some confusion where the "emote ID" being passed around
in the code was often offset by 1. Now it is only offset in
communication with tmwAthena and when saving the shortcuts.
|
|
modernize-use-auto
modernize-use-nullptr
modernize-use-override
modernize-use-using
|
|
|
|
|
|
Unified Graphics:setFullscreen and Graphics:resize into a single
Graphics:changeVideoMode function that tries to restore the existing mode when
changing to the new mode didn't work, and exists with an error when that also
fails.
Split up handling of SDL_VIDEORESIZE and the adapting to new resolution in the
Client class, so that the second part could also be called when changing
resolution fullscreen mode.
The Video tab in the Setup window now also filters out any modes smaller than
640x480 since the game won't properly adapt to that resolution anyway.
Reviewed-by: Yohann Ferreira
|
|
|
|
+ Fixes from Bjorns review.
Reviewed-by: Bjorn.
|
|
Window positions are semi-smartly corrected as a result of the resize.
Not supported when using OpenGL on Windows for now.
Reviewed-by: Yohann Ferreira
|
|
This was already done by ManaPlus. It's a good idea anyway and it makes
comparing the code a little easier.
Reviewed-by: Yohann Ferreira
|
|
1st part of Mana-Mantis #441.
Reviewed-by: Bjorn
|
|
Reviewed-by: Ablu
|
|
The close button will only display when the window is waiting
for the server, so that crashed windows can be closed without
restarting the client.
Pushing the QUIT key (Escape by default) will also close
the crashed windows in that case.
I also fixed a memleak with the "next" button.
Resolves: Mana-Mantis #72, 93, 389.
Reviewed-by: Ablu.
|
|
|
|
I also made the number of slots displayed
taken from the equip.xml file for manaserv.
|
|
|
|
Every files has been checked against the hard coded
32 values except the map.cpp file.
I also added convenience functions in the Game class,
centralized the default item icon size, and removed two
unused defines in being.cpp.
|
|
The comment in game.cpp about the server waiting for this is a lie.
Reviewed-by: Bertram.
|
|
Currently the same equipment window is used as for tmwAthena so that at
least something is visible. This means the location of equipped items is
currently illogical.
It is now possible to equip and unequip items.
Mantis-issue: 164
Reviewed-by: Stefan Dombrowski
|
|
* The f-key is no longer used. That means new players are less likely
to get into trouble by accidentally activating the debug mode.
* The debug mode can now be activated in a new tab in the debug window.
* The main advantage of using a gui is its extensibility. At the moment
the debug mode does show too much information at once. In a follow-up
patch the user should get more choices.
Reviewed-by: Bjorn
|
|
Bug introduced in 88934303761ba950be56eac8b60de2dede88a29f and spotted
by Stefan Dombrowski.
Reviewed-by: Stefan Dombrowski
Reviewed-by: Yohann Ferreira
|
|
This is fixng many issues and (hopefully) will make the movement
rendering much smoother.
Merge branch 'master' of gitorious.org:~bertram/mana/mana-movement-code-merge
Conflicts:
src/being.cpp
src/net/manaserv/beinghandler.cpp
Resolves: TMW-Mantis #946.
Reviewed-by: Thorbjorn.
|
|
No point in using mCurrentDialog for the OkDialog, since it will clean
up after itself, as was pointed out in many places throughout the code.
Now there are two convenience functions for popping up the OkDialog and
having it change to a specified state afterwards. This also gets rid of
the 4 different ActionListener classes that existed solely for this
purpose.
Reviewed-by: Yohann Ferreira
|
|
We're now using it when picking up items.
Also, de-overnested the Game::handleInput() function when
handling pickups.
|
|
It's currently used when changing maps.
Resolves: TMW-Mantis: #750.
Reviewed-by: Thorbjorn.
|
|
It's just an annoyance when it's only applied to a few classes. Either
we place everything in this namespace or nothing, and at the moment I
don't see any rationale for placing everything in a Mana namespace.
Acked-by: Jared Adams
|
|
Acked-by: Jared Adams
|
|
Acked-by: Jared Adams
|
|
Reviewed-by: thorbjorn
|
|
The character picks up one item at a time (to remain kinda realistic)
and turns to the item picked up.
|
|
Conflicts:
po/de.po
src/game.cpp
src/resources/wallpaper.cpp
|
|
(As requested by Thorbjorn.)
Now the foundation to set up per-protocol equipment display
is ready.
|
|
The pick-up with the joystick happend on the wrong tile.
Bug was reported by Feufochmar on IRC.
|
|
|
|
Resolves: Mana-Mantis #265.
Trivial fix.
|
|
By default OK shortcut is space key.
Reviewed-by: Jaxad0127, Kage
|
|
|
|
Reviewed-by: Freeyorp
|
|
Conflicts:
src/being.cpp
src/client.cpp
src/commandhandler.cpp
src/gui/setup_video.cpp
src/gui/socialwindow.cpp
src/gui/viewport.cpp
src/gui/widgets/browserbox.cpp
src/gui/widgets/itemcontainer.cpp
src/imageparticle.cpp
src/localplayer.cpp
src/localplayer.h
src/map.cpp
src/net/tmwa/beinghandler.cpp
src/particle.cpp
src/particle.h
src/player.cpp
src/player.h
|