summaryrefslogtreecommitdiff
path: root/src/client.cpp
AgeCommit message (Collapse)AuthorFilesLines
2024-03-02Exit with error when invalid server type is passed on CLIThorbjørn Lindeijer1-1/+1
Also made it exit with error when there is an unknown option or missing argument.
2024-03-02Changed server type to "enum class"Thorbjørn Lindeijer1-5/+5
2024-03-02Added support for -y / --server-type parameterThorbjørn Lindeijer1-10/+22
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
2024-02-27Added VSync and windowed fullscreen optionsThorbjørn Lindeijer1-55/+34
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
2024-02-22General code cleanupsThorbjørn Lindeijer1-4/+4
* 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
2024-02-19Updated PhysicsFS API usageThorbjørn Lindeijer1-47/+9
Unfortunately, since we're making a difference between config and data, and also want to know where to write screenshots, we can't get rid of PHYSFS_getUserDir entirely. We'd need a replacement to get rid of the deprecation warnings. Also removed copying of old config file at "/.tmw/config.xml".
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-21/+21
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2024-01-26Disable "opengl" by default and remove unused "hwaccel" optionThorbjørn Lindeijer1-3/+2
Since we now use SDL2, OpenGL is used through the SDL2 API. This appears to work very well and handles resizing better (with less flicker). Our manual OpenGL rendering code is probably obsolete. The "hwaccel" option referred to hardware accelerations supported by SDL1 and is no longer relevant.
2024-01-25Minor includes cleanupThorbjørn Lindeijer1-5/+0
2024-01-25Ported to SDL2Thorbjørn Lindeijer1-59/+62
2024-01-24Fixed potential crash on exitThorbjørn Lindeijer1-2/+1
2013-05-22paths.xml content is now read from settings.xmlPrzemysław Grzywacz1-3/+0
2013-05-07items.xml can be used from settings.xmlPrzemysław Grzywacz1-16/+8
2013-05-04Client-side settings are now available from settings.xmlPrzemysław Grzywacz1-12/+8
2013-04-27Added support for charcreation.xml settingsThorbjørn Lindeijer1-0/+3
This file was introduced by ManaPlus as a way of configuring the character creation process. It defines the number of hair styles and colors, how stat points should be divided and what the starting equipment of the player is. The minimum and maximum hair color/style IDs are not supported at the moment. This is mostly a backport of ManaPlus commits 10cf52b5 and dcc18eba, with some style changes. Mantis-issue: 501 Reviewed-by: Ablu
2012-08-11Removed two unused variablesThorbjørn Lindeijer1-3/+0
Reviewed-by: Erik Schilling
2012-08-05Enable OpenGL by default on all platformsThorbjørn Lindeijer1-5/+1
Before it was only enabled by default for Mac. Reviewed-by: Erik Schilling
2012-02-18Added notification sound on receiving whisperThorbjørn Lindeijer1-1/+2
One of the sound channels is reserved for notification sounds, of which the volume can be configured separately. Currently, the only notification sound that is played is for receiving whispers. That can be extended later. The newmessage.ogg sound used currently is the one for receiving a message with the Psi instant messenger. Parts of this patch are based on the new message notification in ManaPlus. Reviewed-by: Erik Schilling
2012-02-09Allow changing fullscreen resolution without restartThorbjørn Lindeijer1-15/+22
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
2012-02-04Removing password from memoryStefan Dombrowski1-1/+2
If the player switches login, then the password field in the login window should be empty. This was not the case after registering or password change. Reviewed-by: Ablu, Bertram
2012-02-03Changed the setup button at login stage to use the icon.Yohann Ferreira1-1/+3
I also made the button not readjust its size when deleted to avoid a crash. Reviewed-by: Erik Schilling
2012-02-02Fix to the hair colors and styles handling.Yohann Ferreira1-4/+4
- I made the charCreatedialog handle a possible max permitted color Id and a minimum hair style id for tA. - Added a foundation to later load the styles and colors from the same file, to handle the Mana-issue #224 for manaserv. - Support for non-contiguous hair color and style ids has also been added. - I also replaced the < and > arrow signs with images. Reviewed-by: Ben Longbons, Thorbjørn Lindeijer
2012-01-28Make command line choose character only work onceThorbjørn Lindeijer1-0/+4
Previously it was interfering with the 'switch character' functionality. Reviewed-by: Erik Schilling
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-26Remember the window size after resizingThorbjørn Lindeijer1-0/+5
Makes sure that the client starts up again in the same size. Reviewed-by: Erik Schilling
2012-01-24Stream music files directly from the archivesThorbjørn Lindeijer1-5/+6
Use Mix_LoadMUS_RW to stream music files directly from PhysFS. I kept around ResourceManager:copyFile for now, since it may have other uses. Also cleaned up some initialization of configuration defaults. Reviewed-by: Yohann Ferreira
2012-01-22Allow resizing of the game in windowed modeThorbjørn Lindeijer1-13/+40
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
2012-01-18ColorDB -> HairDB.Yohann Ferreira1-3/+3
This will ease the reading of the next patch about hair handling at character creation time in tAthena. As requested by bjorn. Reviewed-by: bjorn
2012-01-16Renamed some file names for consistency with the class namesThorbjørn Lindeijer1-3/+3
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
2012-01-10player_node -> local_playerYohann Ferreira1-2/+2
Reviewed-by: Ablu
2012-01-09Made the client able to remove the port from update urls.Yohann Ferreira1-33/+21
Resolves: Mana-Mantis #381. Reviewed-by: Ablu.
2011-10-25Change the wrong, but mostly supported WIN32 macro to the correct _WIN32, ↵Bernd Wachter1-9/+9
enforced by -std=c++0x Reviewed-by: Thorbjørn Lindeijer
2011-06-02Arbitrary code cleanupsThorbjørn Lindeijer1-3/+3
Just some stuff that piles up while "looking" at the code, which eventually gets annoying to ignore while staging real changes. * Replaced a few NULL occurrences with 0 * Rely on default parameter for std::vector::resize. * Replaced a few "" with std::string() * Prefer .empty() to == "" * Removed a few comparisons with NULL * Don't check pointers before deleting them * Removed a bunch of redundant semicolons * Made some global variables static (local to their compilation unit) * Prefer prefix ++/-- operators to postfix versions when possible * Corrected location of a comment
2011-05-04Avoid mixing the system login music with the existing song in TMW.Yohann Ferreira1-1/+2
Reviewed-by: CodyMartin.
2011-04-30De-dustify the get_elapsed-time function documentation a bit.Yohann Ferreira1-8/+4
Trivial.
2011-04-27Removed unused variable 'handledEvents'Thorbjørn Lindeijer1-4/+0
At some point this variable was used to avoid limiting the framerate when user input events were coming in. This is no longer relevant now that we limit the framerate globally using SDL_gfx.
2011-04-18A bit of cleanup in the way the Client pops up error dialogsThorbjørn Lindeijer1-64/+34
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
2011-04-11Implemented a simple non-blocking fadeOutAndPlay system.Yohann Ferreira1-0/+2
It's currently used when changing maps. Resolves: TMW-Mantis: #750. Reviewed-by: Thorbjorn.
2011-04-09Removed the Mana namespaceThorbjørn Lindeijer1-9/+9
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
2011-04-09Moved Channels to Mana::Event::ChannelThorbjørn Lindeijer1-6/+6
Acked-by: Jared Adams
2011-04-09Moved Events to Mana::Event::TypeThorbjørn Lindeijer1-4/+4
Acked-by: Jared Adams
2011-02-21Merge branch '0.5'Thorbjørn Lindeijer1-6/+7
Translation file updates ignored. Conflicts: src/client.cpp src/commandhandler.cpp src/gui/popupmenu.cpp src/localplayer.cpp
2011-02-21Renamed local data directory back to just "mana"Thorbjørn Lindeijer1-7/+8
This name represents the name of the client software, not the branding it received. Cleaned up the rest of the code a bit. Reviewed-by: Jared Adams
2011-02-20Renamed default branding package from mana to manasource.Yohann Ferreira1-5/+5
Resolves: Mana-mantis #236. Reviewed-by: Mpa4Hu.
2011-02-15Fix compilation on Haiku and set config and data paths for it.DarkWind1-0/+7
2011-01-27Made the windows app able to load .ico files at runtime.Yohann Ferreira1-5/+17
Now the icon extension is computed against the os, except for mac where the behaviour is left untouched. This means that the 'icons/mana' appIcon branding parameter will now load icons/mana.png files for unices, and icons/mana.ico for Windows. Reviewed-by: Trapdoor. Resolves: Mana-Mantis: #135.
2011-01-27Made the windows app able to load .ico files at runtime.Yohann Ferreira1-5/+17
Now the icon extension is computed against the os. This means that the 'icons/mana' appIcon branding parameter will now load icons/mana.png files for unices and mac, and icons/mana.ico for Windows. Reviewed-by: Trapdoor. Resolves: Mana-Mantis: #135.
2011-01-24Refactored the item loading in a more extensible and per protocol way.Yohann Ferreira1-1/+13
This will greatly help into upgrading the need of each protocol separately. This is the first step to a new item and equipment system for manaserv. A subclassing of the EquipmentWindow will be done in the next commit, as requested by Thorbjorn. Reviewed-by: Thorbjorn.
2011-01-13Made the client handle better the lack of items.xml file.Yohann Ferreira1-1/+22
Now the client returns to server choice dialog with a warning instead of aborting. I'm kinda certain I'm not the only one getting crazy with such a lazy behaviour. Reviewed-by: Jaxad.
2010-11-13Replace config listeners with the event systemChuck Miller1-7/+18
Reviewed-by: Jared Adams