diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/accounthandler.cpp | 97 | ||||
-rw-r--r-- | src/accounthandler.h | 54 | ||||
-rw-r--r-- | src/connectionhandler.h | 2 | ||||
-rw-r--r-- | src/defines.h | 63 | ||||
-rw-r--r-- | src/messagehandler.cpp | 21 | ||||
-rw-r--r-- | src/messagehandler.h | 17 | ||||
-rw-r--r-- | src/netcomputer.h | 1 |
7 files changed, 219 insertions, 36 deletions
diff --git a/src/accounthandler.cpp b/src/accounthandler.cpp new file mode 100644 index 00000000..f4058bf7 --- /dev/null +++ b/src/accounthandler.cpp @@ -0,0 +1,97 @@ +/* + * The Mana World Server + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + */ + + + +/* ----Receive Message---- + * Generic interface convention for getting a message and sending it to the + * correct subroutines. Account handler takes care of determining the + * current step in the account process, be it creation, setup, or login. + */ +void AccountHandler::receiveMessage(NetComputer &computer, MessageIn &message) +{ + int result = 0; + + // determine message type + switch(message.type) + { + case TYPE_LOGIN: + result = loginMessage(computer, message); + break; + } + + debugCatch(result); +} + +/* ----Login Message---- + * Accepts a login message and interprets it, assigning the proper + * login + * Preconditions: The requested handle is not logged in already. + * The requested handle exists. + * The requested handle is not banned or restricted. + * The character profile is valid + * Postconditions: The player recieves access through a character in + * the world. + * Return Value: SUCCESS if the player was successfully assigned the + * requested char, ERROR on early termination of the + * routine. + */ +int AccountHandler::loginMessage(NetComputer &computer, MessageIn &message) +{ + // Get the handle (account) the player is requesting + // RETURN TMW_ACCOUNTERROR_NOEXIST if: requested does not handle exist + // RETURN TMW_ACCOUNTERROR_BANNED if: the handle status is + // HANDLE_STATUS_BANNED + // RETURN TMW_ACCOUNTERROR_ALREADYASSIGNED if: the handle is already + // assigned + + // Get the character within that handle that the player is requesting + // RETURN TMW_ACCOUNTERROR_CHARNOTFOUND if: character not found + + // Assign the player to that character + // RETURN TMW_ACCOUNTERROR_ASSIGNFAILED if: assignment not successful + + // return TMW_SUCCESS -- successful exit + return TMW_SUCCESS; +} + +/* ----Account Assignment---- + * Assigns the computer to this accout, and allows it to make account + * changes using this structure. + * Preconditions: This structure already contains a valid accountHandle + * Postconditions: The player is connected to the account through this handle + * Return Value: SUCCESS if the player was successfully assigned the + * requested handle, ERROR on early termination of the + * routine. + */ +int AccountHandler::accountAssign(NetComputer &computer, accountData *account) +{ + // RETURN TMW_ACCOUNTERROR_ASSIGNFAILED if: the account was accessed before + // being initalized. + + // Assign the handle + + + return TMW_SUCCESS; + +}
\ No newline at end of file diff --git a/src/accounthandler.h b/src/accounthandler.h new file mode 100644 index 00000000..e27c4a81 --- /dev/null +++ b/src/accounthandler.h @@ -0,0 +1,54 @@ + +/* + * The Mana World Server + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * + */ + +// INCLUDES +#include "debug.h" +#include "messagehandler.h" +#include <string> +#include "defines.h" + +/* Account Handler Class + * + * Manages the data stored in user accounts and provides a reliable interface + * for working with an account. The account handler class can be used as a link + * to a working account handle, and can be assigned to a user persistently as + * an interface between the computer and account. (Messages from the user can + * be traced to this account through the NetComputer structure, then processed + * here with the persistent stored data). + * + */ + +class AccountHandler public: MessageHandler +{ + public: // functions + // generic message handling + void receiveMessage(NetComputer &computer, MessageIn &message); + // message interpretation subroutine + int loginMessage(NetComputer &computer, MessageIn &message); + + private: // functions + // account assignment + int assignAccount(NetComputer &computer, accountData *account); + +}
\ No newline at end of file diff --git a/src/connectionhandler.h b/src/connectionhandler.h index bc5f0965..805ae0af 100644 --- a/src/connectionhandler.h +++ b/src/connectionhandler.h @@ -29,6 +29,8 @@ #include "packet.h" #include <map> +#include "accounthandler.h" // acount handling interface for the connection + /** * This class represents the connection handler interface. The connection * handler will respond to connect/reconnect/disconnect events and handle diff --git a/src/defines.h b/src/defines.h new file mode 100644 index 00000000..ae1f1f38 --- /dev/null +++ b/src/defines.h @@ -0,0 +1,63 @@ +/* + * The Mana World Server + * Copyright 2004 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + + // this file holds the global definitions and constants to be included + // in multiple places throughout the server + + // debug and error definitions go in debug.h, not here + +// I. ACCOUNT DEFINITIONS + // A. Account Types + #define STATUS_NORMAL 0 // denotes normal account status + #define STATUS_ADMIN 1 // denotes admin acount status + #define STATUS_GM 2 // denotes GM account status + #define STATUS_BANNED 3 // denotes a temporarily banned account + #define STATUS_RESTRICTED 4 // denotes a restricted access account + + + + + +// DATA STRUCTURES DEFINITIONS + +// persistent character data +struct charData +{ + string charName; // character's name + //equipData charEquip; // structure of equipped items + //estateData charEstate; // character's estate data + //petData charPet[3]; // character's pets + //itemData charItem; // character's inventory + //graphicData charGraphic; // character's appearance +} + +// Account Data Structure +struct accountData +{ + string accountID; // the account's ID + string accountEMail; // the email of the account's owner + string accountPass; // the account's password + int accountStatus; // the account's status: normal, gm, banned, etc. + charData accountChar[5]; // the characters stored in the account. +} + + diff --git a/src/messagehandler.cpp b/src/messagehandler.cpp index 52187076..0b496a7e 100644 --- a/src/messagehandler.cpp +++ b/src/messagehandler.cpp @@ -25,7 +25,7 @@ #include "debug.h" /* -void AccountHandler::receiveMessage(NetComputer *computer, MessageIn &message) +void MessageHandler::receiveMessage(NetComputer &computer, MessageIn &message) { int result = 0; @@ -40,22 +40,3 @@ void AccountHandler::receiveMessage(NetComputer *computer, MessageIn &message) debugCatch(result); } */ - -int MessageHandler::loginMessage(NetComputer *computer, MessageIn &message) -{ - // Get the handle (account) the player is requesting - // RETURN TMW_ACCOUNTERROR_NOEXIST if: requested does not handle exist - // RETURN TMW_ACCOUNTERROR_BANNED if: the handle status is - // HANDLE_STATUS_BANNED - // RETURN TMW_ACCOUNTERROR_ALREADYASSIGNED if: the handle is already - // assigned - - // Get the character within that handle that the player is requesting - // RETURN TMW_ACCOUNTERROR_CHARNOTFOUND if: character not found - - // Assign the player to that character - // RETURN TMW_ACCOUNTERROR_ASSIGNFAILED if: assignment not successful - - // return TMW_SUCCESS -- successful exit - return TMW_SUCCESS; -} diff --git a/src/messagehandler.h b/src/messagehandler.h index 16f5251e..f838c60a 100644 --- a/src/messagehandler.h +++ b/src/messagehandler.h @@ -41,23 +41,8 @@ class MessageHandler * to an ID this message handler registered to handle. */ virtual void receiveMessage( - NetComputer *computer, MessageIn &message) = 0; + NetComputer &computer, MessageIn &message) = 0; - // To be moved to "AccountHandler" - /** - * Accepts a login message and interprets it, assigning the proper - * login - * Preconditions: The requested handle is not logged in already. - * The requested handle exists. - * The requested handle is not banned or restricted. - * The character profile is valid - * Postconditions: The player recieves access through a character in - * the world. - * Return Value: SUCCESS if the player was successfully assigned the - * requested char, ERROR on early termination of the - * routine. - */ - int loginMessage(NetComputer *computer, MessageIn &message); }; #endif diff --git a/src/netcomputer.h b/src/netcomputer.h index 02948207..ea3e157a 100644 --- a/src/netcomputer.h +++ b/src/netcomputer.h @@ -66,6 +66,7 @@ class NetComputer */ void send(Packet *p); //void send(Packet *p, bool reliable = true); + }; #endif |