diff options
author | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2010-11-14 13:18:14 +0100 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2010-11-14 13:18:14 +0100 |
commit | 196c1c0bffa8bb594ff0a7442748030f47cc9c58 (patch) | |
tree | b60b3e3eff38907e2d8a94ce6aa7e63cd1a741c8 /src/account-server/storage.h | |
parent | 23a94e7b154726599b9112b91ebedb32af9ff22c (diff) | |
download | manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.tar.gz manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.tar.bz2 manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.tar.xz manaserv-196c1c0bffa8bb594ff0a7442748030f47cc9c58.zip |
Renamed .hpp files into .h for consistency.
Also added an header to the autoattack.{h,cpp} files.
Big but trivial fix.
Diffstat (limited to 'src/account-server/storage.h')
-rw-r--r-- | src/account-server/storage.h | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/src/account-server/storage.h b/src/account-server/storage.h new file mode 100644 index 00000000..9dc80693 --- /dev/null +++ b/src/account-server/storage.h @@ -0,0 +1,152 @@ +/* + * The Mana Server + * Copyright (C) 2004-2010 The Mana World Development Team + * + * This file is part of The Mana Server. + * + * The Mana Server 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 Server 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 Server. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef STORAGE_H +#define STORAGE_H + +#include <list> +#include <map> +#include <vector> + +#include "dal/dataprovider.h" + +#include "common/transaction.h" + +class Account; +class Character; +class ChatChannel; +class Guild; +class Letter; +class Post; + +/** + * The high level interface to the database. Through the storage you can access + * all accounts, characters, guilds, worlds states, transactions, etc. + */ +class Storage +{ + public: + Storage(); + ~Storage(); + + void open(); + void close(); + + Account *getAccount(const std::string &userName); + Account *getAccount(int accountID); + + Character *getCharacter(int id, Account *owner); + Character *getCharacter(const std::string &name); + + void addAccount(Account *account); + void delAccount(Account *account); + + void updateLastLogin(const Account *account); + + void updateCharacterPoints(int charId, + int charPoints, int corrPoints); + + void updateExperience(int charId, int skillId, int skillValue); + + void updateAttribute(int charId, unsigned int attrId, + double base, double mod); + + void updateKillCount(int charId, int monsterId, int kills); + + void insertStatusEffect(int charId, int statusId, int time); + + void banCharacter(int id, int duration); + + void delCharacter(int charId) const; + void delCharacter(Character *character) const; + + void checkBannedAccounts(); + + bool doesUserNameExist(const std::string &name); + bool doesEmailAddressExist(const std::string &email); + bool doesCharacterNameExist(const std::string &name); + + bool updateCharacter(Character *ptr); + + void flushSkill(const Character *character, int skill_id); + + void addGuild(Guild *guild); + void removeGuild(Guild *guild); + + void addGuildMember(int guild_id, int memberId); + void removeGuildMember(int guildId, int memberId); + + void setMemberRights(int guildId, int memberId, int rights); + + std::list<Guild*> getGuildList(); + + void flush(Account *); + + std::string getQuestVar(int id, const std::string &); + void setQuestVar(int id, const std::string &, const std::string &); + + std::string getWorldStateVar(const std::string &name, int map_id = -1); + void setWorldStateVar(const std::string &name, + const std::string &value); + void setWorldStateVar(const std::string &name, int mapId, + const std::string &value); + + void setAccountLevel(int id, int level); + void setPlayerLevel(int id, int level); + + void storeLetter(Letter *letter); + Post *getStoredPost(int playerId); + void deletePost(Letter *letter); + + /** + * Returns the version of the local item database. + */ + unsigned int getItemDatabaseVersion() const + { return mItemDbVersion; } + + void setOnlineStatus(int charId, bool online); + + void addTransaction(const Transaction &trans); + + std::vector<Transaction> getTransactions(unsigned int num); + std::vector<Transaction> getTransactions(time_t date); + + /** + * Provides direct access to the database. Use with care! + */ + dal::DataProvider *database() const { return mDb; } + + private: + // Prevent copying + Storage(const Storage &rhs); + Storage &operator=(const Storage &rhs); + + Account *getAccountBySQL(); + Character *getCharacterBySQL(Account *owner); + + void syncDatabase(); + + dal::DataProvider *mDb; /**< the data provider */ + unsigned int mItemDbVersion; /**< Version of the item database. */ +}; + +extern Storage *storage; + +#endif // STORAGE_H |