From 112d2ad1904051160822d1845d1418cca889c0d5 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Wed, 14 Mar 2012 03:56:02 +0300 Subject: Add support for other gender. Fix per gender and race items separation. --- src/gui/charcreatedialog.cpp | 16 +++++++++++++++- src/gui/charcreatedialog.h | 1 + src/gui/register.cpp | 25 ++++++++++++++++++++----- src/gui/register.h | 1 + 4 files changed, 37 insertions(+), 6 deletions(-) (limited to 'src/gui') diff --git a/src/gui/charcreatedialog.cpp b/src/gui/charcreatedialog.cpp index 124476f1c..0b20952c8 100644 --- a/src/gui/charcreatedialog.cpp +++ b/src/gui/charcreatedialog.cpp @@ -124,15 +124,18 @@ CharCreateDialog::CharCreateDialog(CharSelectDialog *parent, int slot): mCancelButton = new Button(_("Cancel"), "cancel", this); mMale = new RadioButton(_("Male"), "gender"); mFemale = new RadioButton(_("Female"), "gender"); + mOther = new RadioButton(_("Other"), "gender"); // Default to a Male character mMale->setSelected(true); mMale->setActionEventId("gender"); mFemale->setActionEventId("gender"); + mOther->setActionEventId("gender"); mMale->addActionListener(this); mFemale->addActionListener(this); + mOther->addActionListener(this); mPlayerBox = new PlayerBox(mPlayer); mPlayerBox->setWidth(74); @@ -186,6 +189,7 @@ CharCreateDialog::CharCreateDialog(CharSelectDialog *parent, int slot): mMale->setPosition(30, 120); mFemale->setPosition(100, 120); + mOther->setPosition(170, 120); add(mPlayerBox); add(mNameField); @@ -215,6 +219,7 @@ CharCreateDialog::CharCreateDialog(CharSelectDialog *parent, int slot): add(mMale); add(mFemale); + add(mOther); center(); setVisible(true); @@ -453,11 +458,19 @@ void CharCreateDialog::setFixedGender(bool fixed, Gender gender) { mFemale->setSelected(true); mMale->setSelected(false); + mOther->setSelected(false); } - else + else if (gender == GENDER_MALE) { + mFemale->setSelected(false); mMale->setSelected(true); + mOther->setSelected(false); + } + else + { mFemale->setSelected(false); + mMale->setSelected(false); + mOther->setSelected(true); } mPlayer->setGender(gender); @@ -466,6 +479,7 @@ void CharCreateDialog::setFixedGender(bool fixed, Gender gender) { mMale->setVisible(false); mFemale->setVisible(false); + mOther->setVisible(false); } } diff --git a/src/gui/charcreatedialog.h b/src/gui/charcreatedialog.h index ceafcc08e..8be421543 100644 --- a/src/gui/charcreatedialog.h +++ b/src/gui/charcreatedialog.h @@ -115,6 +115,7 @@ class CharCreateDialog : public Window, public gcn::ActionListener gcn::RadioButton *mMale; gcn::RadioButton *mFemale; + gcn::RadioButton *mOther; std::vector mAttributeSlider; std::vector mAttributeLabel; diff --git a/src/gui/register.cpp b/src/gui/register.cpp index 4f696dc9d..eebbfa603 100644 --- a/src/gui/register.cpp +++ b/src/gui/register.cpp @@ -67,6 +67,7 @@ RegisterDialog::RegisterDialog(LoginData *data): mEmailField(nullptr), mMaleButton(nullptr), mFemaleButton(nullptr), + mOtherButton(nullptr), mWrongDataNoticeListener(new WrongDataNoticeListener), mLoginData(data) { @@ -97,8 +98,18 @@ RegisterDialog::RegisterDialog(LoginData *data): { mMaleButton = new RadioButton(_("Male"), "sex", true); mFemaleButton = new RadioButton(_("Female"), "sex", false); - placer(1, row, mMaleButton); - placer(2, row, mFemaleButton); + if (serverVersion >= 5) + { + mOtherButton = new RadioButton(_("Other"), "sex", false); + placer(0, row, mMaleButton); + placer(1, row, mFemaleButton); + placer(2, row, mOtherButton); + } + else + { + placer(1, row, mMaleButton); + placer(2, row, mFemaleButton); + } row++; } @@ -235,9 +246,13 @@ void RegisterDialog::action(const gcn::ActionEvent &event) mLoginData->username = mUserField->getText(); mLoginData->password = mPasswordField->getText(); - if (mFemaleButton) - mLoginData->gender = mFemaleButton->isSelected() ? - GENDER_FEMALE : GENDER_MALE; + if (mFemaleButton && mFemaleButton->isSelected()) + mLoginData->gender = GENDER_FEMALE; + else if (mOtherButton && mOtherButton->isSelected()) + mLoginData->gender = GENDER_OTHER; + else + mLoginData->gender = GENDER_MALE; + if (mEmailField) mLoginData->email = mEmailField->getText(); mLoginData->registerLogin = true; diff --git a/src/gui/register.h b/src/gui/register.h index ecda27d28..606050428 100644 --- a/src/gui/register.h +++ b/src/gui/register.h @@ -96,6 +96,7 @@ class RegisterDialog : public Window, public gcn::ActionListener, gcn::Button *mCancelButton; gcn::RadioButton *mMaleButton; gcn::RadioButton *mFemaleButton; + gcn::RadioButton *mOtherButton; WrongDataNoticeListener *mWrongDataNoticeListener; -- cgit v1.2.3-70-g09d2