Age | Commit message (Collapse) | Author | Files | Lines |
|
Since Guichan is currently disabled on Homebrew, I've opted for adding
it as a submodule instead. It currently references the 0.8 branch of
Guichan, after I cherry-picked the CMake support from the master
branch.
When using SDL2 installed through Homebrew, it was necessary to use
SDL2_LINK_LIBRARIES, since the libraries occupy various different
directories.
It no longer seems necessary to include an SDLMain.m, so I deleted it.
Removed obsolete OS X instructions.
Also added instructions for installing dependencies on Fedora.
Removed mentioning of /announce and /who in the README, since they were
removed for tmwAthena.
|
|
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.
|
|
It happened to me a few times. Needs checking whether we could instead
make sure we always have a Game instance when receiving this message,
because this way a map mask might get ignored.
Or maybe the map mask just needs to be stored elsewhere.
|
|
* The code defining the message IDs and sizes are now generated by the
tools/protocol.py script in the tmwAthena repository.
* Reduced client version from 20 to 6, because that is currently the
minimum supported version, and any adjustments needed for later likely
still need to be made.
* Removed use of no longer handled messages:
- CMSG_SKILL_USE_BEING
- CMSG_SKILL_USE_POSITION
- CMSG_SKILL_USE_MAP
- SMSG_PARTY_MOVE
- CMSG_WHO_REQUEST
- SMSG_WHO_ANSWER
- SMSG_MVP
- SMSG_BEING_MOVE2
- SMSG_BEING_CHANGE_LOOKS
* Some messages were renamed to match the server side
- CMSG_PLAYER_ATTACK -> CMSG_PLAYER_CHANGE_ACT
- CMSG_PLAYER_RESTART -> CMSG_PLAYER_REBOOT
- SMSG_ADMIN_IP -> SMSG_BEING_IP_RESPONSE
Part of addressing issues #55 and #47, which we now know are about
handling SMSG_PLAYER_HP and SMSG_NPC_COMMAND respectively. The client
will now ignore them (with a warning) instead of crash.
|
|
This stuff was removed from tmwAthena, so it will never be supported.
|
|
* Removed /announce command
* Changed "Kick player" in player pop-up to kick by name
Other messages, like CMSG_ADMIN_HIDE, CMSG_ADMIN_MUTE and
CMSG_ADMIN_LOCAL_ANNOUNCE were already not used by the client. Also,
none of this was implemented for Manaserv.
|
|
Apparently, pkg-config files for physfs were not shipping yet in Ubuntu
18.04. Now it no longer checks that we have at least physfs 3.0, but
older versions should be pretty rare anyway.
This reverts part of ffa8ea13fbf50ad59d9fc4cea71b9aec4aca8bac.
|
|
A faulty version check was disabling music loading entirely.
|
|
* Removing unused includes
* Use member initialization
* Use range-based for loops
* Use nullptr
* Removed no longer used aliases
* Use override
* Don't use else after return
* Use '= delete' to remove implicit members
* Use std::string::empty instead of comparing to ""
|
|
* Introduced a LayoutContext that conveniently allows for relayouting
all rows, or just a single one when it is added. BrowserBox::addRow
no longer relayouts all the rows.
* BrowserLink and LinePart are now merged into a new TextRow struct,
so they can be conveniently dropped when the row limit has been
reached.
* Removed "opaque" option, which was enabled by default but disabled
for all BrowserBox instances.
* Removed "always update" option, and instead start delaying relayouting
automatically when there are a lot of rows (> 100 currently).
* Update window now also has text wrapping enabled.
Closes #50
|
|
Doing some cleanups before working towards optimizing this code.
Removed needless additional wrapping code in BrowserBox::addRow, since
the text will be relayouted anyway.
Simplified layouting code a little. For example, there's no need to keep
track of the number of wrapped lines.
Use more optimal data structures, like an std::deque for the text rows
and a plain std::vector for the line parts. Both have less fragmentation
than an std::list.
|
|
This patch is not exhaustive.
|
|
This just checks that the client compiles on Ubuntu for now.
Also fixed a PhysicsFS linker issue introduced in
ffa8ea13fbf50ad59d9fc4cea71b9aec4aca8bac...
|
|
Wrong format was passed to SDL_RenderReadPixels. Issue introduced in
2c51c98625b225cecfb9628c30d62d4e30f7e3e1.
Closes #52
|
|
|
|
C++17 should be universal enough by now.
This raises the minimum CMake to 3.8, which should also pose no problem since
Ubuntu 18.04 already shipped with CMake 3.10.
C++17's 'if' initialization statement is now used in an efficient
implementation of 'join' for vector<string>, found on StackOverflow.
|
|
Replacing the various OS-specific ways implemented for macOS, Windows
and Linux (based on xmessage).
|
|
It seems the implementation of PhysicsFS RWops shipped requires a
somewhat up-to-date PhysFS (beyond just a missing PHYSFS_DECL macro).
Also simplified CMake files somewhat, enabling new behavior for some
policies that were triggering warnings. And removed the no longer used
FindSDL_gfx.cmake module (SDL_gfx is found using pkg-config since
2c51c98625b225cecfb9628c30d62d4e30f7e3e1).
|
|
Closes #51
|
|
Apparently this was supported before, but support for that was lost in
bd1fdd87eed48ba3ffcc413936d6a6a60a429a97.
Fixes #46
|
|
These checks are unnecessary as deleting a null pointer has no effect.
|
|
|
|
|
|
|
|
Continuation of 2c51c98625b225cecfb9628c30d62d4e30f7e3e1, which had
already removed most of the alpha cache in Image.
|
|
Using the latest implementation from ManaPlus. Previous version was
introduced with 844e9a7a72faca6a212e788a3adc45e17f41dca6 and failed to
"secure" the name due to broken conditions.
|
|
modernize-loop-convert
modernize-deprecated-headers
|
|
Fixes compatibility with SDL2. The old version compiled for whatever
reason, but it would crash when the client tried to play a sound.
|
|
SDL_GetKeyboardState array needs to be indexed by scan codes.
|
|
SDL_GetKeyState used to return an array that is indexed by SDLKey, but
its equivalant, SDL_GetKeyboardState, returns an array that is supposed
to be indexed using SDL_Scancode.
|
|
A custom "Mask" property on a layer or a "foregroundXmask" property on a
map can now be used in combination with the SMSG_MAP_MASK to dynamically
disable certain map layers from the server.
Feature previously seen on ManaPlus and implemented for Mana client for
compatibility.
Also added a ResourceRef class for automating the Resource reference
counting.
Closes #44
|
|
For compatibility with TMW, which has not yet adopted a central
"settings.xml" that includes all the other files.
Also, a "name" attribute with an absolute path is now supported in
addition to the relative "file" attribute, since that is what ManaPlus
supported.
This resolves most of issue #43.
|
|
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.
|
|
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.
|
|
|
|
It was only used for the clipboard, which is now interacted with through
SDL 2.
|
|
|
|
|
|
|
|
|
|
It is unclear whether there are any protocol differences that should be
dealt with at this point, but without this the login fails with "Client
too old." error.
|
|
|
|
|
|
There should be no need to export the functions explicitly, given that
they are compiled as part of the executable.
|
|
|
|
* Fixed compiler errors due to dynamic exception specifications
* Replace std::auto_ptr with std::unique_ptr
* Replace std::mem_fun with std::mem_fn
* Prefix for_each with std:: (apparently not needed before)
* Just use lambda instead of std::bind2nd
* Removed usages of std::unary_function
|
|
The CMSG_NPC_STR_RESPONSE packet transmits a string
of variable length.
|
|
It should not return large numbers after reading past the end of a
message. This can cause infinite loops in several places in the client
when a message happened to be shorter than expected.
|
|
|