diff options
Diffstat (limited to 'src/net/eathena')
-rw-r--r-- | src/net/eathena/charserverhandler.cpp | 40 | ||||
-rw-r--r-- | src/net/eathena/charserverhandler.h | 8 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/net/eathena/charserverhandler.cpp b/src/net/eathena/charserverhandler.cpp index d7d7be582..e353d970e 100644 --- a/src/net/eathena/charserverhandler.cpp +++ b/src/net/eathena/charserverhandler.cpp @@ -44,9 +44,11 @@ #include "resources/iteminfo.h" +#include "resources/db/chardb.h" #include "resources/db/itemdb.h" #include "utils/dtor.h" +#include "utils/gettext.h" #include "debug.h" @@ -291,6 +293,44 @@ void CharServerHandler::connect() mNetwork->skip(4); } +void CharServerHandler::setCharCreateDialog(CharCreateDialog *const window) +{ + mCharCreateDialog = window; + + if (!mCharCreateDialog) + return; + + StringVect attributes; + // TRANSLATORS: playe stat + attributes.push_back(_("Strength:")); + // TRANSLATORS: playe stat + attributes.push_back(_("Agility:")); + // TRANSLATORS: playe stat + attributes.push_back(_("Vitality:")); + // TRANSLATORS: playe stat + attributes.push_back(_("Intelligence:")); + // TRANSLATORS: playe stat + attributes.push_back(_("Dexterity:")); + // TRANSLATORS: playe stat + attributes.push_back(_("Luck:")); + + const Token &token = + static_cast<LoginHandler*>(Net::getLoginHandler())->getToken(); + + int minStat = CharDB::getMinStat(); + if (!minStat) + minStat = 1; + int maxStat = CharDB::getMaxStat(); + if (!maxStat) + maxStat = 9; + int sumStat = CharDB::getSumStat(); + if (!sumStat) + sumStat = 30; + + mCharCreateDialog->setAttributes(attributes, sumStat, minStat, maxStat); + mCharCreateDialog->setFixedGender(true, token.sex); +} + void CharServerHandler::processCharLogin(Net::MessageIn &msg) { msg.skip(2, "packet len"); diff --git a/src/net/eathena/charserverhandler.h b/src/net/eathena/charserverhandler.h index d14c82cb7..cd14660ed 100644 --- a/src/net/eathena/charserverhandler.h +++ b/src/net/eathena/charserverhandler.h @@ -68,6 +68,14 @@ class CharServerHandler final : public MessageHandler, void setNewPincode(const std::string &pin) override final; + /** + * Sets the character create dialog. The handler will clean up this + * dialog when a new character is succesfully created, and will unlock + * the dialog when a new character failed to be created. + */ + void setCharCreateDialog(CharCreateDialog *const window) + override final; + protected: void readPlayerData(Net::MessageIn &msg, Net::Character *const character, |