Age | Commit message (Collapse) | Author | Files | Lines |
|
This was broken by 79e4325192f3260ed4ded264e43da8429650bf72 due to there
being a case difference between the serverTypeToString and parseType
functions, causing loaded servers to be invalid due to unknown server
type.
Closes #105
|
|
|
|
Each Skin can point to a different palette, which can be used to tweak text
colors where necessary. For now there is no generic solution for this, instead
a number of locations have been adjusted to take the palette into account:
* ChatWindow sets its palette on the BrowserBox used in its tabs.
* Popup sets its palette on child widgets when they are added (covering
BrowserBox, Label and TextBox).
* ItemPopup now uses its palette when looking up colors.
The BrowserBox now retrieves its numbered text colors from the theme. Also
added OLDCHAT, AWAYCHAT and GLOBAL theme colors, with ##g, ##o and ##a to
choose these colors respectively.
Fixed ImageRect move constructor.
TextPreview class was cleaned up from unused functionality.
Being name colors are no longer different between the name shown on the being
and the name shown in the SpeechDialog.
|
|
Sometimes I've used CamelCase and sometimes SNAKE_CASE for these values.
Since "enum class" values are always prefixed with the enum name, which
uses CamelCase, I find it more fitting to use it for the values as well.
Also fixes compilation on Windows where 'ERROR' was conflicting with a
define.
|
|
* Removed some unused includes and forward declarations.
* Use std::unique_ptr to automate cleanup.
* Use TextRenderer::renderText in BrowserBox to avoid code duplication.
* Removed unused STATE_NORMAL from StateFlags.
* Small layout fix in ServerDialog.
* Reduced rewrapping delay in BrowserBox to 33ms and disabled it
entirely when there are no more than 1000 lines to rewrap. The
rewrapping is usually fast enough.
|
|
This is cleaner overall since now each widget type no longer needs to
keep track of its own instances and updating of the GUI alpha. It also
introduces a single point from where the GUI theme support can be
enhanced.
Theme is no longer a singleton, though for now there is a single
instance owned by the Gui singleton.
Widgets adjusted to delegate their painting to the Theme:
* Button
* Tab
* TextField
* CheckBox
* RadioButton
* Slider
* DropDown
* ProgressBar
* ScrollArea
* ResizeGrip
* PlayerBox (by subclassing ScrollArea)
The Window and Popup widgets already use the theme through the Skin
class. They can actually use a different skin per instance, though this
feature is only used by the SpeechBubble.
|
|
These are not necessary since we can instead make sure the referenced
values match case, like we do for everything else.
This affects server types in the server list and colors referenced in
theme files. The server version was also compared case-insensitively
for some reason.
|
|
* Moved the memory buffer and mutex handling into the Download class to
simplify the code updating the UI in ServerDialog and UpdaterWindow.
* Replaced the "DownloadUpdate" callback function with simply polling
Download::getState, since in the end polling was happening anyway.
This changes also fixes handling of the Enter key while downloading
updates, which no longer cancels the update process. Also, when pressing
Escape while things are being downloaded, the first press cancels and
only the second press goes back to login.
Introduced a ThreadSafe template class, which wraps any type and makes
it only accessible by calling lock(). This ensures the data is never
accessed without locking the relevant mutex.
|
|
The download thread was setting itself to nullptr (d->mThread = nullptr)
in a number of locations. This caused a later call to SDL_WaitThread to
be unable to perform cleanup.
This reverts most of 1eb02f83a5d3895e4e18db30ea10d88da94ba4c0 (including
making Download::cancel no longer blocking), but keeps the necessary
waiting for the thread to finish before freeing the memory buffer in
~UpdaterWindow(), which might have been the bug fixed by that change.
Fixed removal of downloaded .part file when its checksum failed. It
trying to remove the file without .part appended instead.
Fixed download progress indication in ServerDialog to not be reversed,
though this is rarely visible due to the server list being so small.
Fixed reporting of curl error.
|
|
This makes accessing the config values much faster, since it no longer
needs to do a lookup nor string conversion, which means we could remove
some needless copying of the values.
Overall it makes it easier to find out where settings are used and it
puts the defaults along with the declaration.
Options with default values are no longer saved to the config file. This
does not include unrecognized options, which are kept around to provide
some compatibility with older clients.
While most basic options have kept the same name, more complicated
settings like window geometry, shortcuts, outfits, etc. now have their
own XML elements. Older clients will ignore these and erase them when
saving the configuration.
|
|
Slightly more ergonomic and this eliminates direct libxml2 usage from
many places.
|
|
Because "xmlChildrenNode" is a macro defined for compatibility with
libxml1, which we don't support.
|
|
The new XML::Children class enables using a C++11 range-based for loop
to iterate over the children of an xmlNodePtr.
|
|
* 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
|
|
|
|
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
|
|
This patch is not exhaustive.
|
|
modernize-loop-convert
modernize-deprecated-headers
|
|
modernize-use-auto
modernize-use-nullptr
modernize-use-override
modernize-use-using
|
|
This option was added in ManaPlus and support for it is required to
connect to The Mana World as it is currently set up, since the server
sends 127.0.0.1 for the character server and map server IP.
Can't play yet, because of an unknown packet 0x226 being received once
connecting to the map server.
|
|
Previously the redirect was from www.manasource.org to manasource.org.
|
|
|
|
This is in order to still support older compilers, in particular GCC 4.2.1,
so that Mana may be compiled for Maemo 5.
Reviewed-by: Yohann Ferreira
|
|
When creating a custom server entry, the default port is used if no
other port is specified.
Reviewed-by: Thorbjørn Lindeijer
Mantis-issue: 464
|
|
Reviewed-by: bjorn.
|
|
Wrong define was used in the code.
|
|
I made sure the manaserv based custom server don't get deleted
when running a manaserv-less client session.
Reviewed-by: Thorbjørn Lindeijer
|
|
I also change the serverInfo to use a deque to permit
the use of the push_front function.
Spotted and reviewed-by: Erik Schilling
|
|
|
|
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
|
|
+ Fixe requested by Ablu.
Reviewed-by: Ablu
|
|
This was righteously requested by Ablu as missing
when dealing with one's own entries.
Reviewed-by: Ablu
|
|
Now the first window the user can see is a list of servers
which can double-clicked, making it all less cluttered.
This commit also makes custom servers able to now have
their own titles and their own description,
just as the official ones.
I also fixed the add entry button being registered twice
to the action listener, and the fact that the description
wasn't updated properly at windows loading
and when adding/removing an entry.
Resolves: Mana-Mantis #237.
Reviewed-by: Ablu
|
|
This reverts commits e35b3bdd0a74464e4b4d3b931ca416f0c7864ba6
and e35b3bdd0a74464e4b4d3b931ca416f0c7864ba6.
Sometimes the text fields and the list show different server
selected, so you don't see to what server you connect. It is
a big security risk sending your user name and password to
the wrong server.
Reviewed-by: Freeyorp, Bertram
|
|
Conflicts:
CMakeLists.txt
po/pt_BR.po
po/ru.po
src/winver.h
|
|
|
|
|
|
The server got selected from a list that still
contained the unwanted server.
|
|
Reviewed-by: CodyMartin.
|
|
This resolves http://bugs.manasource.org/view.php?id=259
Reviewed-by: Thorbjorn
|
|
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
|
|
With the preprocessor definition MANASERV_SUPPORT the manaserv
support is avaible as before.
* Removing server type from server dialog GUI.
* Ignoring Manaserv entries in serverlist.xml.
* In order not to lose Manaserv CustomServers from the config.xml,
they get stored in mManaservServers.
* The entries in mManaservServers are saved in config.xml again. But
they are now behind the TMWA-Athena servers.
* For custom server the GUI sets 6901 as default value for port.
* If the server type is unknown, then we use TMW-Athena. This is
relevant, if the client is started with command line options for server.
Reviewed-by: Bertram
|
|
Click-count is not double-click, because it does neither check if the
clicks happen on the same object nor if the clicks happen in rapid
succession.
* In the server dialog it can happen that you can get connected by
just selecting a server.
* In the social window it can happen that you open a chat by just
clicking once on a name.
* In the inventory window you better only select useable items if you
want to use them, because they might get used by just selecting them.
* And in case you actually want to use double-click, it often does
not work, because click-count is already larger than 2.
This reverts the commits:
8b4d9f9b5eaf175baf0c4209c312133bb457742c
b1aef06ac85b1ed7db7725e50b2dbfcdfd1a0925
4c27bfbf6ca84546e5b914b7909df14dd2966081
Reviewed-by: Thorbjorn
|
|
Conflicts:
src/actorspritemanager.h
src/beingmanager.cpp
src/game.cpp
src/gui/beingpopup.cpp
src/gui/chat.cpp
src/gui/chat.h
src/gui/inventorywindow.h
src/gui/itempopup.cpp
src/gui/socialwindow.cpp
src/gui/statuswindow.cpp
src/gui/widgets/chattab.cpp
src/gui/widgets/chattab.h
src/net/tmwa/inventoryhandler.cpp
src/net/tmwa/partyhandler.cpp
src/party.cpp
src/sound.cpp
src/utils/stringutils.cpp
src/utils/stringutils.h
|
|
Reviewed-by: Jaxad0127
|
|
Reviewed-by: Yohann Ferreira
|
|
Please note that I didn't turned all the getValue() call into new ones,
simply because I have to have config object initiated which is not
forcefully the case the branding file.
Resolves: Manasource Mantis #170.
|
|
Conflicts:
data/graphics/CMakeLists.txt
data/graphics/Makefile.am
src/client.cpp
|
|
Also fix a small compilation error sometimes reported.
Reviewed-by: Chuck Miller
|
|
There is no reason why error.xml shouldn't be in this repository, as it is used
when no sprite data is present and is a very small file anyways. Servers can
still replace these if they want to. error.png is only used in sprites, so
should be in the new sprites folder too.
Reviewed-by: 4144
|