summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/accounthandler.cpp97
-rw-r--r--src/accounthandler.h54
-rw-r--r--src/connectionhandler.h2
-rw-r--r--src/defines.h63
-rw-r--r--src/messagehandler.cpp21
-rw-r--r--src/messagehandler.h17
-rw-r--r--src/netcomputer.h1
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