diff options
author | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-01-02 20:24:52 +0000 |
---|---|---|
committer | Guillaume Melquiond <guillaume.melquiond@gmail.com> | 2007-01-02 20:24:52 +0000 |
commit | 59df651232df73c56b5dae587fa68e1e9f824755 (patch) | |
tree | 5dcbf28c41cb39558d903b1a43c956ae26caa0e6 | |
parent | 0a47b2fb30c83f8b021c2015891fe8c936ca6bf0 (diff) | |
download | manaserv-59df651232df73c56b5dae587fa68e1e9f824755.tar.gz manaserv-59df651232df73c56b5dae587fa68e1e9f824755.tar.bz2 manaserv-59df651232df73c56b5dae587fa68e1e9f824755.tar.xz manaserv-59df651232df73c56b5dae587fa68e1e9f824755.zip |
Removed obsolete SQLite support.
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | src/sqlitestorage.cpp | 282 | ||||
-rw-r--r-- | src/sqlitestorage.h | 73 |
3 files changed, 2 insertions, 355 deletions
@@ -16,6 +16,8 @@ trigger mechanism and a warp action. * src/game-server/testing.cpp: Added some hardcoded game objects for testing purpose. + * src/sqlitestorage.h, src/sqlitestorage.cpp: Removed obsolete SQLite + support. 2006-12-31 Philipp Sehmisch <tmw@crushnet.org> diff --git a/src/sqlitestorage.cpp b/src/sqlitestorage.cpp deleted file mode 100644 index f9d06c9b..00000000 --- a/src/sqlitestorage.cpp +++ /dev/null @@ -1,282 +0,0 @@ -/* - * 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 - * - * $Id$ - */ - -#include "sqlitestorage.h" - -#include <iostream> -#include <sstream> - -/* Values for user level could be: - * 0: Normal user - * 1: Moderator (has medium level rights) - * 2: Administrator (can do basically anything) - */ -const char sqlAccountTable[] = - "create table tmw_accounts (" - "id int unique primary key not null," - "username varchar(32) not null," - "password varchar(32) not null," - "email varchar(128) not null," - "level int not null," // User level (normal, admin, etc.) - "banned int not null" // The UNIX time of unban (0 default) - ")"; - -/* Note: The stats will need to be thought over, as we'll be implementing a - * much more elaborate skill based system. We should probably have a separate - * table for storing the skill levels. - * - * Gender is 0 for male, 1 for female. - */ -const char sqlCharacterTable[] = - "create table tmw_characters (" - "id int unique primary key not null," - "user_id int not null," - "name varchar(32) not null," - "gender int not null," // Player information - "level int not null," - "money int not null," - "x int not null," // Location - "y int not null," - "map text not null," - "str int not null," // Stats - "agi int not null," - "vit int not null," - "int int not null," - "dex int not null," - "luck int not null," - "foreign key(user_id) references tmw_accounts(id)" - ")"; - -/* - * All items in the game world are stored in this table. - */ -const char sqlItemTable[] = - "create table tmw_items (" - "id int unique primary key not null," - "amount int not null," // Items of same kind can stack - "type int not null," // Type as defined in item database - "state text" // Optional item state saved by script - ")"; - -/* - * Items on the ground in the game world. - */ -const char sqlWorldItemTable[] = - "create table tmw_world_items (" - "id int not null," - "map text," - "x int not null," // Location of item on map - "y int not null," - "deathtime int not null," // Time to die (UNIX time) - "primary key(id, map)," - "foreign key(id) references tmw_items(id)" - ")"; - -/* - * Character Inventory - */ -const char sqlInventoryTable[] = - "create table tmw_inventory (" - "id int primary key not null," // Item ID - "owner_id int not null," // Owner character ID - "foreign key(id) references tmw_items(id)," - "foreign key(owner_id) references tmw_characters(id)" - ")"; - - -SQLiteStorage::SQLiteStorage() -{ - // Open database - if (sqlite.Open("tmw.db")) { - std::cout << "Database: tmw.db created or opened" << std::endl; - } - else { - std::cout << "Database: couldn't open tmw.db" << std::endl; - } - - // Create tables - createTablesIfNecessary(); -} - -SQLiteStorage::~SQLiteStorage() -{ - // Make sure any changes have been written - flush(); - - // Close database - if (sqlite.Close()) - { - std::cout << "Database: tmw.db closed" << std::endl; - } - else - { - std::cout << "Database: couldn't close tmw.db" << std::endl; - } - - // Clean up managed accounts & characters - for (unsigned int i = 0; i < accounts.size(); i++) - { - delete accounts[i]; - } - for (unsigned int i = 0; i < characters.size(); i++) - { - delete characters[i]; - } -} - -void SQLiteStorage::createTablesIfNecessary() -{ - SQLiteWrapper::ResultTable r; - - if (!sqlite.SelectStmt("select count(*) from sqlite_master where tbl_name='topics' and type='table'", r)) - { - std::cout << "Error with select count(*) [createTablesIfNecessary]" << sqlite.LastError().c_str() << std::endl; - } - - if (r.records_[0].fields_[0] != "0") { - return; - } - - sqlite.Begin(); - - // Accounts table - if (sqlite.DirectStatement(sqlAccountTable)) { - std::cout << "Database: table tmw_accounts created" << std::endl; - } - else { - std::cout << "Database: table tmw_accounts exists" << std::endl; - } - - // Characters table - if (sqlite.DirectStatement(sqlCharacterTable)) { - std::cout << "Database: table tmw_characters created" << std::endl; - } - else { - std::cout << "Database: table tmw_characters exists" << std::endl; - } - - // Items table - if (sqlite.DirectStatement(sqlItemTable)) { - std::cout << "Database: table tmw_items created" << std::endl; - } - else { - std::cout << "Database: table tmw_items exists" << std::endl; - } - - // World Items table - if (sqlite.DirectStatement(sqlWorldItemTable)) { - std::cout << "Database: table tmw_world_items created" << std::endl; - } - else { - std::cout << "Database: table tmw_world_items exists" << std::endl; - } - - // Character Inventory - if (sqlite.DirectStatement(sqlInventoryTable)) { - std::cout << "Database: table tmw_inventory created" << std::endl; - } - else { - std::cout << "Database: table tmw_inventory exists" << std::endl; - } - - // Populate table for the hell of it ;) - sqlite.DirectStatement("insert into tmw_accounts values (0, 'nym', 'tHiSiSHaShEd', 'nym@test', 1, 0)"); - sqlite.DirectStatement("insert into tmw_accounts values (1, 'Bjorn', 'tHiSiSHaShEd', 'bjorn@test', 1, 0)"); - sqlite.DirectStatement("insert into tmw_accounts values (2, 'Usiu', 'tHiSiSHaShEd', 'usiu@test', 1, 0)"); - sqlite.DirectStatement("insert into tmw_accounts values (3, 'ElvenProgrammer', 'tHiSiSHaShEd', 'elven@test', 1, 0)"); - sqlite.DirectStatement("insert into tmw_characters values (0, 0, 'Nym the Great', 0, 99, 1000000, 0, 0, 'main.map', 1, 2, 3, 4, 5, 6)"); - - flush(); -} - -void SQLiteStorage::flush() -{ - sqlite.Commit(); -} - -unsigned int SQLiteStorage::getAccountCount() -{ - SQLiteWrapper::ResultTable r; - std::stringstream s; - unsigned int v; - sqlite.SelectStmt("select count(*) from tmw_accounts", r); - s << r.records_[0].fields_[0]; - s >> v; - return v; -} - -Account* SQLiteStorage::getAccount(const std::string &username) -{ - // Make sure account isn't loaded already - for (unsigned int i = 0; i < accounts.size(); i++) - { - if (accounts[i]->getName() == username) - { - return accounts[i]; - } - } - - // Give caller a initialized AccountData structure - SQLiteWrapper::ResultTable r; - - std::string selectStatement = - "select * from tmw_accounts where username = \"" + username + "\""; - - if (!sqlite.SelectStmt(selectStatement, r)) - { - // Throwing an exception here could be good - return NULL; - } - - Account *acc = new Account(); - acc->setName(r.records_[0].fields_[1]); - acc->setPassword(r.records_[0].fields_[2]); - acc->setEmail(r.records_[0].fields_[3]); - accounts.push_back(acc); - - std::string user_id = r.records_[0].fields_[0]; - - // Load the characters associated with the account - selectStatement = - "select * from tmw_characters where id = \"" + user_id + "\""; - - if (!sqlite.SelectStmt(selectStatement, r)) - { - // Throwing exception here could be good - return NULL; - } - - std::vector<Being*> beings; - - for (unsigned int i = 0; i < r.records_.size(); i++) - { - Being *being = new Being( - r.records_[i].fields_[2], 1, 1, 1, 1, 1, 1, 1, 1); - characters.push_back(being); - beings.push_back(being); - } - - acc->setCharacters(beings); - - return acc; -} diff --git a/src/sqlitestorage.h b/src/sqlitestorage.h deleted file mode 100644 index f2158e02..00000000 --- a/src/sqlitestorage.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * 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 - * - * $Id$ - */ - -#ifndef _TMWSERV_SQLITESTORAGE_H_ -#define _TMWSERV_SQLITESTORAGE_H_ - -#include "storage.h" - -#include "sqlite/SQLiteWrapper.h" - -/** - * SQLite implemention of persistent dynamic data storage. - */ -class SQLiteStorage : public Storage -{ - public: - /** - * Constructor. - */ - SQLiteStorage(); - - /** - * Destructor. - */ - ~SQLiteStorage(); - - /** - * Save changes to database. - */ - void flush(); - - /** - * Account count (test function) - */ - unsigned int getAccountCount(); - - /** - * Get account & associated data - */ - Account* getAccount(const std::string &username); - - protected: - SQLiteWrapper sqlite; /**< Database */ - std::vector<Account*> accounts; /**< Loaded accounts */ - std::vector<Being*> characters; /**< Loaded characters */ - - /** - * Create tables if master is empty. - */ - void createTablesIfNecessary(); -}; - -#endif // _TMWSERV_SQLITESTORAGE_H_ |