summaryrefslogtreecommitdiff
path: root/src/net/tmwa/gamehandler.cpp
AgeCommit message (Collapse)AuthorFilesLines
2025-08-04Added support for the hidden/neutral genderThorbjørn Lindeijer1-1/+1
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
2025-07-04Added logging priorities and use SDLs logging facilitiesThorbjørn Lindeijer1-2/+2
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.
2025-04-02Use a consistent naming style for enum class valuesThorbjørn Lindeijer1-1/+1
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.
2024-12-20Read whole packet SMSG_MAP_QUIT_RESPONSE.Andrei Karas1-1/+1
2024-03-06General code cleanupsThorbjørn Lindeijer1-1/+1
* 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
2024-03-04Fixed character displayThorbjørn Lindeijer1-1/+1
This change fixes hair style to take into account "race", which makes the faces visible again. Hair colors should also be fixed now, with partial support for itemcolors.xml added. The Mana client now also supports per-character gender, and it now hides the hair style and color buttons on character creation, when there are none to choose from. Closes #43
2024-02-13Updated tmwAthena network protocolThorbjørn Lindeijer1-10/+0
* 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.
2024-01-26Apply C++11 fixitsThorbjørn Lindeijer1-1/+1
modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using
2012-05-05Removed the shared base classes of MessageIn and MessageOutThorbjørn Lindeijer1-4/+3
There wasn't a whole lot gained by sharing a common base class, and it makes extending the manaserv Message{In,Out} classes with a debugging mode unnecessarily complicated. Reviewed-by: Yohann Ferreira
2012-02-03Simplified and made generic the way the pickup is handled.Yohann Ferreira1-0/+7
I also made the range be taken from the server type as for the pickup and npc talk ranges. Last but no least, I fixed the parameters sent with PGMSG_PICKUP to send the (item) position where to pickup at as described in the manaserv protocol. The pickup is still not 100% functional due certainly to two problems: 1. The client item coordinates might not be the exact same as in the server. 2. The client seems to try to pick up the item a bit too soon, probably for the reason given in 1. I'll investigate this in another patch. Reviewed-by: Thorbjørn Lindeijer, Erik Schilling.
2012-01-26Updated copyrights to 2012Thorbjørn Lindeijer1-1/+1
2012-01-19Fixed handling of problems with loading the initial mapThorbjørn Lindeijer1-7/+8
This can always happen, either due to mismatching local data or a server-side error. The client displays a pop-up in this case, but it's not possible to read that when it crashes as well. Reviewed-by: Yohann Ferreira
2012-01-10player_node -> local_playerYohann Ferreira1-3/+3
Reviewed-by: Ablu
2011-06-22Applied fixes requested by cody.Yohann Ferreira1-2/+2
- Made the map teleport distance fixed for manaserv. - Small cleanups. The branch is considered reviewed by: Cody. Resolves Mana-Mantis: #74.
2011-06-16Remove useless ping packetBen Longbons1-12/+0
The comment in game.cpp about the server waiting for this is a lie. Reviewed-by: Bertram.
2011-04-26Made the client use a unique kind of movement code.Yohann Ferreira1-2/+13
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.
2011-04-09Removed the Mana namespaceThorbjørn Lindeijer1-5/+5
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-3/+3
Acked-by: Jared Adams
2011-04-09Moved Events to Mana::Event::TypeThorbjørn Lindeijer1-2/+2
Acked-by: Jared Adams
2011-03-15Basically merged the two movement algorithms into one.Yohann Ferreira1-2/+13
This was made in favour of the manaserv way of doing things. I also added a way to keep the original server speed value so the pixel value can be recomputed at each map change, as this was necessary since the speed is given before the first map is loaded. The code is much more simpler now about movement handling, and we can already see improvements on other characters movements in The Mana World with this. Everything can't be perfect the first time; here are bugs identified so far: - Monsters direction isn't updated on TmwAthena for obscure reasons. - Remote players walking animation is sometimes reset on each steps. - When changing map, the local player sometimes walks randomly until the player reacts. Stay tuned!
2010-11-11Replace Event names with enums instead of stringsChuck Miller1-2/+2
2010-11-11Have the event system channels use enums instead of stringsChuck Miller1-3/+3
Reviewed-by: Freeyorp
2010-08-15Merge branch '1.0'Chuck Miller1-1/+2
Conflicts: mana.cbp mana.files src/CMakeLists.txt src/Makefile.am src/utils/xml.cpp
2010-08-12Simplify working with the event systemJared Adams1-1/+1
EventManager has been merged into Event, with some new convinience methods added. Reviewed-by: Chuck Miller
2010-08-04Changed the stats.xml to attributes.xml according to the server commit.Yohann Ferreira1-1/+2
Also, fixed a compilation warning about passing a NULL value to a boolean parameter. The built-ins are kept for now. Reviewed-by: Jaxad0127.
2010-07-18Add event.h to eventmanager.h and listener.h to reduce total number of includesChuck Miller1-1/+0
You'll have to include it anyways 99% of the time
2010-07-18Move the majority of the netcode's server messages to the event systemChuck Miller1-4/+2
There is still a good way to go, but this should get us started Reviewed-by: Jared Adams
2010-07-18Replace some state-related netcode methods with eventsJared Adams1-10/+18
Also move the virtual destructors of the Net handler base classes to the top of their method lists. Reviewed-by: Chuck Miller
2010-04-17Changed eAthena protocol name to TmwAthena and changed the config files ↵Bertram1-0/+174
accordingly. This makes room for the actual eAthena protocol future inclusion.