diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-04-27 21:43:32 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2013-04-27 22:07:06 +0200 |
commit | 4b0da49b28bb64d2da293ca90fec63079c2c5849 (patch) | |
tree | 7cf17967002737836199966e6e123de417943d4d /src/net | |
parent | 1a99d37d059df95f6a144c4f9e9fa85dacefd185 (diff) | |
download | mana-4b0da49b28bb64d2da293ca90fec63079c2c5849.tar.gz mana-4b0da49b28bb64d2da293ca90fec63079c2c5849.tar.bz2 mana-4b0da49b28bb64d2da293ca90fec63079c2c5849.tar.xz mana-4b0da49b28bb64d2da293ca90fec63079c2c5849.zip |
Added support for charcreation.xml settings
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
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/tmwa/charserverhandler.cpp | 28 | ||||
-rw-r--r-- | src/net/tmwa/charserverhandler.h | 11 |
2 files changed, 26 insertions, 13 deletions
diff --git a/src/net/tmwa/charserverhandler.cpp b/src/net/tmwa/charserverhandler.cpp index cc242951..7c5f5c88 100644 --- a/src/net/tmwa/charserverhandler.cpp +++ b/src/net/tmwa/charserverhandler.cpp @@ -39,6 +39,7 @@ #include "net/tmwa/protocol.h" #include "resources/attributes.h" +#include "resources/chardb.h" #include "resources/hairdb.h" #include "utils/dtor.h" @@ -279,10 +280,17 @@ void CharServerHandler::setCharCreateDialog(CharCreateDialog *window) const Token &token = static_cast<LoginHandler*>(Net::getLoginHandler())->getToken(); - mCharCreateDialog->setAttributes(attributes, - Attributes::getCreationPoints(), - Attributes::getAttributeMinimum(), - Attributes::getAttributeMaximum()); + unsigned minStat = CharDB::getMinStat(); + if (minStat == 0) + minStat = Attributes::getAttributeMinimum(); + unsigned maxStat = CharDB::getMaxStat(); + if (maxStat == 0) + maxStat = Attributes::getAttributeMaximum(); + unsigned sumStat = CharDB::getSumStat(); + if (sumStat == 0) + sumStat = Attributes::getCreationPoints(); + + mCharCreateDialog->setAttributes(attributes, sumStat, minStat, maxStat); mCharCreateDialog->setFixedGender(true, token.sex); } @@ -346,6 +354,18 @@ unsigned int CharServerHandler::maxSprite() const return SPRITE_VECTOREND; } +int CharServerHandler::getCharCreateMaxHairColorId() const +{ + const int max = CharDB::getMaxHairColor(); + return max ? max : 11; // default maximum +} + +int CharServerHandler::getCharCreateMaxHairStyleId() const +{ + const int max = CharDB::getMaxHairStyle(); + return max ? max : 19; // default maximum +} + void CharServerHandler::connect() { const Token &token = diff --git a/src/net/tmwa/charserverhandler.h b/src/net/tmwa/charserverhandler.h index c9f44e0f..7e4fc2d9 100644 --- a/src/net/tmwa/charserverhandler.h +++ b/src/net/tmwa/charserverhandler.h @@ -69,15 +69,8 @@ class CharServerHandler : public MessageHandler, public Net::CharHandler unsigned int maxSprite() const; - // Must be < 12 at character creation time, but can be higher - // after that. - int getCharCreateMaxHairColorId() const - { return 11; } - - // Must be < 20 at character creation time, but can be higher - // after that. - int getCharCreateMaxHairStyleId() const - { return 19; } + int getCharCreateMaxHairColorId() const; + int getCharCreateMaxHairStyleId() const; void connect(); |