summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiyoshi Kyokai <kiyoshi.kyokai@gmail.com>2005-03-23 03:52:06 +0000
committerKiyoshi Kyokai <kiyoshi.kyokai@gmail.com>2005-03-23 03:52:06 +0000
commit97024b3b51a3d9e2daf2832fe8598b38b6670cab (patch)
treea1760106930633b195a95f700306c14b0d04ef77
parent4a20e71c66c0b7bbdd73ab26b3ca8c0d7f4c8b64 (diff)
downloadmanaserv-97024b3b51a3d9e2daf2832fe8598b38b6670cab.tar.gz
manaserv-97024b3b51a3d9e2daf2832fe8598b38b6670cab.tar.bz2
manaserv-97024b3b51a3d9e2daf2832fe8598b38b6670cab.tar.xz
manaserv-97024b3b51a3d9e2daf2832fe8598b38b6670cab.zip
added the account handler and a definition file to keep track of structures and such. I need some more information about how exactly the message handler interfaces are intended to work with the connection handler, as well as what things users will each have to themselves, and which things they will all share as far as message processing goes.
-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
-rw-r--r--tmwserv.dev32
8 files changed, 250 insertions, 37 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
diff --git a/tmwserv.dev b/tmwserv.dev
index 995dcc4e..7da85060 100644
--- a/tmwserv.dev
+++ b/tmwserv.dev
@@ -1,7 +1,7 @@
[Project]
FileName=tmwserv.dev
Name=Project1
-UnitCount=17
+UnitCount=20
Type=1
Ver=1
ObjFiles=
@@ -217,3 +217,33 @@ Priority=1000
OverrideBuildCmd=0
BuildCmd=
+[Unit18]
+FileName=src\accounthandler.h
+CompileCpp=1
+Folder=header
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit19]
+FileName=src\accounthandler.cpp
+CompileCpp=1
+Folder=source
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+
+[Unit20]
+FileName=src\defines.h
+CompileCpp=1
+Folder=header
+Compile=1
+Link=1
+Priority=1000
+OverrideBuildCmd=0
+BuildCmd=
+