summaryrefslogtreecommitdiff
path: root/src/accounthandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/accounthandler.cpp')
-rw-r--r--src/accounthandler.cpp42
1 files changed, 30 insertions, 12 deletions
diff --git a/src/accounthandler.cpp b/src/accounthandler.cpp
index 63b2d3d6..602f5845 100644
--- a/src/accounthandler.cpp
+++ b/src/accounthandler.cpp
@@ -121,11 +121,11 @@ void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message)
// looking the email address already exists.
std::list<std::string> emailList = store.getEmailList();
std::string upcasedEmail, upcasedIt;
+ upcasedEmail = email;
+ std::transform(upcasedEmail.begin(), upcasedEmail.end(), upcasedEmail.begin(), (int(*)(int))std::toupper);
for (std::list<std::string>::const_iterator it = emailList.begin(); it != emailList.end(); it++)
{
// Upcasing both mails for a good comparison
- upcasedEmail = email;
- std::transform(upcasedEmail.begin(), upcasedEmail.end(), upcasedEmail.begin(), (int(*)(int))std::toupper);
upcasedIt = *it;
std::transform(upcasedIt.begin(), upcasedIt.end(), upcasedIt.begin(), (int(*)(int))std::toupper);
if ( upcasedEmail == upcasedIt )
@@ -161,13 +161,13 @@ void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message)
result.writeByte(REGISTER_EXISTS_USERNAME);
std::cout << username << ": Username already exists." << std::endl;
}
- else if ((username.length() < 4) || (username.length() > 16)) // Username length
+ else if ((username.length() < MIN_LOGIN_LENGTH) || (username.length() > MAX_LOGIN_LENGTH)) // Username length
{
result.writeShort(SMSG_REGISTER_RESPONSE);
result.writeByte(REGISTER_INVALID_USERNAME);
std::cout << username << ": Username too short or too long." << std::endl;
}
- else if (password.length() < 4)
+ else if (password.length() < MIN_PASSWORD_LENGTH)
{
result.writeShort(SMSG_REGISTER_RESPONSE);
result.writeByte(REGISTER_INVALID_PASSWORD);
@@ -187,8 +187,8 @@ void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message)
result.writeShort(SMSG_REGISTER_RESPONSE);
result.writeByte(REGISTER_OK);
- std::cout << username << ": Account registered." << std::endl;
store.flush(); // flush changes
+ std::cout << username << ": Account registered." << std::endl;
}
}
break;
@@ -202,23 +202,29 @@ void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message)
break;
}
+ // A player shouldn't have more than 3 characters.
+ tmwserv::Beings &chars = computer.getAccount()->getCharacters();
+ if (chars.size() >= MAX_OF_CHARACTERS)
+ {
+ result.writeShort(SMSG_CHAR_CREATE_RESPONSE);
+ result.writeByte(CREATE_TOO_MUCH_CHARACTERS);
+ std::cout << "Already has 3 characters. Can't create another Character." << std::endl;
+ break;
+ }
+
std::string name = message.readString();
//char hairStyle = message.readByte();
//char hairColor = message.readByte();
Genders sex = (Genders)message.readByte();
- // TODO: Finish this message type (should a player customize stats
- // slightly?)
- // A player shouldn't have more than 3 characters.
-
+ // TODO: Customization of player's stats...
tmwserv::RawStatistics stats = {10, 10, 10, 10, 10, 10};
tmwserv::BeingPtr newCharacter(new tmwserv::Being(name, sex, 1, 0, stats));
computer.getAccount()->addCharacter(newCharacter);
+ store.flush(); // flush changes
result.writeShort(SMSG_CHAR_CREATE_RESPONSE);
result.writeByte(CREATE_OK);
-
- store.flush(); // flush changes
}
break;
@@ -235,11 +241,18 @@ void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message)
unsigned char charNum = message.readByte();
tmwserv::Beings &chars = computer.getAccount()->getCharacters();
-
result.writeShort(SMSG_CHAR_SELECT_RESPONSE);
+ if ( chars.size() == 0 )
+ {
+ result.writeByte(SELECT_NOT_YET_CHARACTERS);
+ std::cout << "Character Selection : Yet no characters created." << std::endl;
+ break;
+ }
+ // Character ID = 0 to Number of Characters - 1.
if (charNum >= chars.size()) {
// invalid char selection
result.writeByte(SELECT_INVALID);
+ std::cout << "Character Selection : Selection out of ID range." << std::endl;
break;
}
@@ -251,6 +264,11 @@ void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message)
state.addBeing(computer.getCharacter(), computer.getCharacter()->getMap());
result.writeByte(SELECT_OK);
+ std::cout << "Selected Character " << int(charNum)
+ << " : " <<
+ computer.getCharacter()->getName() << std::endl;
+
+ //TODO: Add the character in the database and flush.
}
break;