summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog23
-rw-r--r--src/account.cpp62
-rw-r--r--src/account.h51
-rw-r--r--src/accounthandler.cpp99
-rw-r--r--src/being.cpp300
-rw-r--r--src/being.h277
-rw-r--r--src/chatchannelmanager.cpp4
-rw-r--r--src/dal/dalexcept.h5
-rw-r--r--src/dal/dataprovider.cpp4
-rw-r--r--src/dal/dataprovider.h6
-rw-r--r--src/dal/dataproviderfactory.cpp4
-rw-r--r--src/dal/dataproviderfactory.h5
-rw-r--r--src/dal/mysqldataprovider.cpp3
-rw-r--r--src/dal/mysqldataprovider.h5
-rw-r--r--src/dal/pqdataprovider.cpp4
-rw-r--r--src/dal/pqdataprovider.h5
-rw-r--r--src/dal/recordset.cpp5
-rw-r--r--src/dal/recordset.h4
-rw-r--r--src/dal/sqlitedataprovider.cpp3
-rw-r--r--src/dal/sqlitedataprovider.h5
-rw-r--r--src/dalstorage.cpp112
-rw-r--r--src/dalstorage.h8
-rw-r--r--src/gamehandler.cpp28
-rw-r--r--src/gamehandler.h6
-rw-r--r--src/main.cpp10
-rw-r--r--src/map.cpp5
-rw-r--r--src/map.h6
-rw-r--r--src/mapmanager.cpp7
-rw-r--r--src/mapmanager.h6
-rw-r--r--src/mapreader.cpp6
-rw-r--r--src/mapreader.h6
-rw-r--r--src/object.cpp129
-rw-r--r--src/object.h129
-rw-r--r--src/state.cpp118
-rw-r--r--src/state.h30
-rw-r--r--src/storage.cpp7
-rw-r--r--src/storage.h11
-rw-r--r--src/utils/cipher.cpp3
-rw-r--r--src/utils/cipher.h5
-rw-r--r--src/utils/countedptr.h22
-rw-r--r--src/utils/logger.cpp4
-rw-r--r--src/utils/logger.h17
-rw-r--r--src/utils/singleton.h5
-rw-r--r--src/utils/stringfilter.cpp3
-rw-r--r--src/utils/stringfilter.h5
45 files changed, 419 insertions, 1143 deletions
diff --git a/ChangeLog b/ChangeLog
index f08678e3..762ae40b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2006-07-27 Guillaume Melquiond <guillaume.melquiond@gmail.com>
+
+ * src/storage.cpp, src/map.cpp, src/dalstorage.h, src/mapmanager.h,
+ src/chatchannelmanager.cpp, src/mapreader.cpp, src/mapmanager.cpp,
+ src/dal/dalexcept.h, src/dal/mysqldataprovider.h, src/dal/recordset.h,
+ src/dal/dataproviderfactory.h, src/dal/dataprovider.cpp,
+ src/dal/sqlitedataprovider.cpp, src/dal/dataprovider.h,
+ src/dal/mysqldataprovider.cpp, src/dal/pqdataprovider.h,
+ src/dal/recordset.cpp, src/dal/sqlitedataprovider.h, src/map.h,
+ src/dal/dataproviderfactory.cpp, src/main.cpp, src/mapreader.h,
+ src/utils/singleton.h, src/utils/cipher.cpp, src/utils/logger.cpp,
+ src/utils/cipher.h, src/utils/stringfilter.h, src/utils/logger.h:
+ Removed tmwserv namespace.
+
+ * src/utils/countedptr.h: Removed tmwserv namespace. Added conversion
+ constructor.
+
+ * src/accounthandler.cpp, src/account.cpp, src/object.cpp,
+ src/storage.h, src/dalstorage.cpp, src/account.h, src/object.h,
+ src/gamehandler.h, src/state.cpp, src/being.cpp, src/gamehandler.cpp,
+ src/state.h, src/being.h: Removed tmwserv namespace. Added MovingObject
+ and Player classes. Removed exhaustive statistic accessors.
+
2006-07-26 Eugenio Favalli <elvenprogrammer@gmail.com>
* src/accounthandler.cpp, src/client.cpp, tmwserv.cbp: Send some
diff --git a/src/account.cpp b/src/account.cpp
index b5a7903b..11a1232a 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -24,10 +24,6 @@
#include "utils/functors.h"
-namespace tmwserv
-{
-
-
/**
* Constructor with initial account info.
*/
@@ -50,7 +46,7 @@ Account::Account(const std::string& name,
Account::Account(const std::string& name,
const std::string& password,
const std::string& email,
- const Beings& characters)
+ const Players& characters)
: mName(name),
mPassword(password),
mEmail(email),
@@ -64,8 +60,7 @@ Account::Account(const std::string& name,
/**
* Destructor.
*/
-Account::~Account(void)
- throw()
+Account::~Account()
{
// mCharacters is a list of smart pointers which will take care about
// deallocating the memory so nothing to deallocate here :)
@@ -157,7 +152,7 @@ Account::getLevel(void) const
* Set the characters.
*/
void
-Account::setCharacters(const Beings& characters)
+Account::setCharacters(const Players& characters)
{
mCharacters = characters;
}
@@ -167,7 +162,7 @@ Account::setCharacters(const Beings& characters)
* Add a new character.
*/
void
-Account::addCharacter(BeingPtr character)
+Account::addCharacter(PlayerPtr character)
{
if (character.get() != 0) {
mCharacters.push_back(character);
@@ -177,32 +172,23 @@ Account::addCharacter(BeingPtr character)
/**
* Remove a character.
*/
-bool
-Account::delCharacter(std::string name)
+bool Account::delCharacter(std::string const &name)
{
- Beings::iterator it =
- std::find_if(mCharacters.begin(),
- mCharacters.end(),
- std::bind2nd(obj_name_is<BeingPtr>(), name)
- );
+ Players::iterator
+ end = mCharacters.end(),
+ it = std::find_if(mCharacters.begin(), end,
+ std::bind2nd(obj_name_is<PlayerPtr>(), name));
- if (it != mCharacters.end()) {
- // Exists, delete it.
- mCharacters.erase(it++);
- return true;
- }
- else
- {
- return false;
- }
+ if (it == end) return false;
+ mCharacters.erase(it);
+ return true;
}
/**
* Get all the characters.
*/
-Beings&
-Account::getCharacters(void)
+Players &Account::getCharacters()
{
return mCharacters;
}
@@ -211,21 +197,13 @@ Account::getCharacters(void)
/**
* Get a character by name.
*/
-Being*
-Account::getCharacter(const std::string& name)
+PlayerPtr Account::getCharacter(const std::string& name)
{
- Beings::iterator it =
- std::find_if(mCharacters.begin(),
- mCharacters.end(),
- std::bind2nd(obj_name_is<BeingPtr>(), name)
- );
+ Players::iterator
+ end = mCharacters.end(),
+ it = std::find_if(mCharacters.begin(), end,
+ std::bind2nd(obj_name_is<PlayerPtr>(), name));
- if (it != mCharacters.end()) {
- return (*it).get();
- }
-
- return 0;
+ if (it != end) return *it;
+ return PlayerPtr();
}
-
-
-} // namespace tmwserv
diff --git a/src/account.h b/src/account.h
index 2d9da17a..b1ba59d0 100644
--- a/src/account.h
+++ b/src/account.h
@@ -30,10 +30,6 @@
#include "being.h"
-namespace tmwserv
-{
-
-
/**
* Notes:
* - change from the previous implementation: this class does not encrypt
@@ -76,14 +72,13 @@ class Account
Account(const std::string& name,
const std::string& password,
const std::string& email,
- const Beings& characters);
+ const Players& characters);
/**
* Destructor.
*/
- ~Account(void)
- throw();
+ ~Account();
/**
@@ -101,7 +96,7 @@ class Account
* @return the user name.
*/
const std::string&
- getName(void) const;
+ getName() const;
/**
@@ -155,7 +150,7 @@ class Account
* @return the account level.
*/
AccountLevels
- getLevel(void) const;
+ getLevel() const;
/**
@@ -164,7 +159,7 @@ class Account
* @param characters a list of characters.
*/
void
- setCharacters(const Beings& characters);
+ setCharacters(const Players& characters);
/**
@@ -173,7 +168,7 @@ class Account
* @param character the new character.
*/
void
- addCharacter(BeingPtr character);
+ addCharacter(PlayerPtr character);
/**
* Remove a character.
@@ -181,7 +176,7 @@ class Account
* @param name The character's name to delete.
*/
bool
- delCharacter(std::string name);
+ delCharacter(std::string const &name);
/**
@@ -189,44 +184,29 @@ class Account
*
* @return all the characters.
*/
- Beings&
- getCharacters(void);
+ Players&
+ getCharacters();
/**
* Get a character by name.
*
* @return the character if found, NULL otherwise.
*/
- Being*
+ PlayerPtr
getCharacter(const std::string& name);
private:
- /**
- * Default constructor.
- */
- Account(void)
- throw();
-
-
- /**
- * Copy constructor.
- */
- Account(const Account& rhs);
-
-
- /**
- * Assignment operator.
- */
- Account&
- operator=(const Account& rhs);
+ Account();
+ Account(Account const &rhs);
+ Account &operator=(Account const &rhs);
private:
std::string mName; /**< user name */
std::string mPassword; /**< user password (encrypted) */
std::string mEmail; /**< user email address */
- Beings mCharacters; /**< player data */
+ Players mCharacters; /**< player data */
AccountLevels mLevel; /**< account level */
};
@@ -237,7 +217,4 @@ class Account
typedef utils::CountedPtr<Account> AccountPtr;
-} // namespace tmwserv
-
-
#endif // _TMWSERV_ACCOUNT_H_
diff --git a/src/accounthandler.cpp b/src/accounthandler.cpp
index 885fd7ff..a07fc2a7 100644
--- a/src/accounthandler.cpp
+++ b/src/accounthandler.cpp
@@ -37,11 +37,6 @@
#include "utils/logger.h"
#include "utils/stringfilter.h"
-using tmwserv::Account;
-using tmwserv::AccountPtr;
-using tmwserv::BeingPtr;
-using tmwserv::Storage;
-
class AccountClient: public NetComputer
{
public:
@@ -73,7 +68,7 @@ class AccountClient: public NetComputer
/**
* Set the selected character associated with connection.
*/
- void setCharacter(BeingPtr ch);
+ void setCharacter(PlayerPtr ch);
/**
* Deselect the character associated with connection.
@@ -83,14 +78,14 @@ class AccountClient: public NetComputer
/**
* Get character associated with the connection
*/
- BeingPtr getCharacter() { return mCharacterPtr; }
+ PlayerPtr getCharacter() { return mCharacterPtr; }
private:
/** Account associated with connection */
AccountPtr mAccountPtr;
/** Selected character */
- BeingPtr mCharacterPtr;
+ PlayerPtr mCharacterPtr;
};
AccountClient::AccountClient(AccountHandler *handler, ENetPeer *peer):
@@ -112,7 +107,7 @@ void AccountClient::setAccount(AccountPtr acc)
mAccountPtr = acc;
}
-void AccountClient::setCharacter(BeingPtr ch)
+void AccountClient::setCharacter(PlayerPtr ch)
{
unsetCharacter();
mCharacterPtr = ch;
@@ -127,7 +122,7 @@ void AccountClient::unsetAccount()
void AccountClient::unsetCharacter()
{
if (mCharacterPtr.get() == NULL) return;
- mCharacterPtr = BeingPtr(NULL);
+ mCharacterPtr = PlayerPtr(NULL);
}
NetComputer *AccountHandler::computerConnected(ENetPeer *peer)
@@ -202,7 +197,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
}
// see if the account exists
- tmwserv::AccountPtr acc = store.getAccount(username);
+ AccountPtr acc = store.getAccount(username);
if (!acc.get() || acc->getPassword() != password) {
// account doesn't exist -- send error to client
@@ -220,7 +215,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
result.writeByte(ERRMSG_OK);
// Return information about available characters
- tmwserv::Beings &chars = computer.getAccount()->getCharacters();
+ Players &chars = computer.getAccount()->getCharacters();
result.writeByte(chars.size());
LOG_INFO(username << "'s account has " << chars.size() << " character(s).", 1);
@@ -282,7 +277,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
LOG_INFO(username << " is trying to register.", 1);
// see if the account exists
- tmwserv::AccountPtr accPtr = store.getAccount(username);
+ AccountPtr accPtr = store.getAccount(username);
if ( accPtr.get() ) // Account already exists.
{
result.writeByte(REGISTER_EXISTS_USERNAME);
@@ -349,7 +344,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
}
// see if the account exists
- tmwserv::AccountPtr accPtr = store.getAccount(username);
+ AccountPtr accPtr = store.getAccount(username);
if (!accPtr.get() || accPtr->getPassword() != password) {
LOG_INFO("Account does not exist of bad password for " << username << ".", 1);
@@ -480,7 +475,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
}
// A player shouldn't have more than 3 characters.
- tmwserv::Beings &chars = computer.getAccount()->getCharacters();
+ Players &chars = computer.getAccount()->getCharacters();
if (chars.size() >= MAX_OF_CHARACTERS)
{
result.writeByte(CREATE_TOO_MUCH_CHARACTERS);
@@ -543,20 +538,8 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
// LATER_ON: Add race, face and maybe special attributes.
// Customization of player's stats...
- std::vector<unsigned short> rawStats;
- rawStats.reserve(6);
- // strength
- rawStats.push_back((unsigned short)message.readShort());
- // agility
- rawStats.push_back((unsigned short)message.readShort());
- // vitality
- rawStats.push_back((unsigned short)message.readShort());
- // intelligence
- rawStats.push_back((unsigned short)message.readShort());
- // dexterity
- rawStats.push_back((unsigned short)message.readShort());
- // luck
- rawStats.push_back((unsigned short)message.readShort());
+ RawStatistics rawStats;
+ for (int i = 0; i < NB_RSTAT; ++i) rawStats.stats[i] = message.readShort();
// We see if the difference between the lowest stat and the highest isn't too
// big.
@@ -564,32 +547,16 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
unsigned short highestStat = 0;
unsigned int totalStats = 0;
bool validNonZeroRawStats = true;
- for ( std::vector<unsigned short>::iterator i = rawStats.begin(); i != rawStats.end();)
+ for (int i = 0; i < NB_RSTAT; ++i)
{
+ unsigned short stat = rawStats.stats[i];
// For good total stat check.
- totalStats = totalStats + *i;
+ totalStats = totalStats + stat;
// For checking if all stats are at least > 0
- if (*i <= 0) validNonZeroRawStats = false;
- if (lowestStat != 0)
- {
- if (lowestStat > *i) lowestStat = *i;
- }
- else
- {
- // We take the first value
- lowestStat = *i;
- }
- if (highestStat != 0)
- {
- if (highestStat < *i) highestStat = *i;
- }
- else
- {
- // We take the first value
- highestStat = *i;
- }
- ++i;
+ if (stat <= 0) validNonZeroRawStats = false;
+ if (lowestStat == 0 || lowestStat > stat) lowestStat = stat;
+ if (highestStat == 0 || highestStat < stat) highestStat = stat;
}
if ( totalStats > POINTS_TO_DISTRIBUTES_AT_LVL1 )
@@ -617,11 +584,14 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
break;
}
- // The reserve(6) method allows us to be sure that rawStats[5] will work.
- tmwserv::RawStatistics stats = {rawStats[0], rawStats[1], rawStats[2],
- rawStats[3], rawStats[4], rawStats[5]};
- tmwserv::BeingPtr newCharacter(new tmwserv::Being(name, gender, hairStyle, hairColor,
- 1 /* level */, 0 /* Money */, stats));
+ PlayerPtr newCharacter(new Player(name));
+ for (int i = 0; i < NB_RSTAT; ++i)
+ newCharacter->setRawStat(i, rawStats.stats[i]);
+ newCharacter->setMoney(0);
+ newCharacter->setLevel(1);
+ newCharacter->setGender(gender);
+ newCharacter->setHairStyle(hairStyle);
+ newCharacter->setHairColor(hairColor);
newCharacter->setMapId((int)config.getValue("defaultMap", 1));
newCharacter->setXY((int)config.getValue("startX", 0),
(int)config.getValue("startY", 0));
@@ -648,7 +618,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
unsigned char charNum = message.readByte();
- tmwserv::Beings &chars = computer.getAccount()->getCharacters();
+ Players &chars = computer.getAccount()->getCharacters();
// Character ID = 0 to Number of Characters - 1.
if (charNum >= chars.size()) {
// invalid char selection
@@ -662,7 +632,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
// it. And SELECT_NO_MAPS error return value when the default map couldn't
// be loaded in setCharacter(). Not implemented yet for tests purpose...
computer.setCharacter(chars[charNum]);
- tmwserv::BeingPtr selectedChar = computer.getCharacter();
+ PlayerPtr selectedChar = computer.getCharacter();
result.writeByte(ERRMSG_OK);
std::string mapName = store.getMapNameFromId(selectedChar->getMapId());
result.writeString(mapName);
@@ -687,7 +657,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
unsigned char charNum = message.readByte();
- tmwserv::Beings &chars = computer.getAccount()->getCharacters();
+ Players &chars = computer.getAccount()->getCharacters();
// Character ID = 0 to Number of Characters - 1.
if (charNum >= chars.size()) {
// invalid char selection
@@ -729,7 +699,7 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
result.writeByte(ERRMSG_OK);
// Return information about available characters
- tmwserv::Beings &chars = computer.getAccount()->getCharacters();
+ Players &chars = computer.getAccount()->getCharacters();
result.writeByte(chars.size());
LOG_INFO(computer.getAccount()->getName() << "'s account has "
@@ -745,13 +715,8 @@ void AccountHandler::processMessage(NetComputer *comp, MessageIn &message)
result.writeByte(chars[i]->getHairStyle());
result.writeByte(chars[i]->getHairColor());
result.writeByte(chars[i]->getLevel());
- result.writeShort(chars[i]->getMoney());
- result.writeShort(chars[i]->getStrength());
- result.writeShort(chars[i]->getAgility());
- result.writeShort(chars[i]->getVitality());
- result.writeShort(chars[i]->getIntelligence());
- result.writeShort(chars[i]->getDexterity());
- result.writeShort(chars[i]->getLuck());
+ for (int j = 0; j < NB_RSTAT; ++j)
+ result.writeShort(chars[i]->getRawStat(j));
mapName = store.getMapNameFromId(chars[i]->getMapId());
result.writeString(mapName);
result.writeShort(chars[i]->getX());
diff --git a/src/being.cpp b/src/being.cpp
index 3138f4e1..c95136af 100644
--- a/src/being.cpp
+++ b/src/being.cpp
@@ -24,309 +24,40 @@
#include "being.h"
-namespace tmwserv
-{
-
-
PATH_NODE::PATH_NODE(unsigned short x, unsigned short y):
x(x), y(y)
{
}
/**
- * Constructor.
- */
-Being::Being(const std::string& name,
- const Genders gender,
- const unsigned short hairStyle,
- const unsigned short hairColor,
- const unsigned short level,
- const unsigned int money,
- const RawStatistics& stats)
- : mName(name),
- mGender(gender),
- mHairStyle(hairStyle),
- mHairColor(hairColor),
- mLevel(level),
- mMoney(money),
- mRawStats(stats)
-{
- // NOOP
-}
-
-
-/**
- * Destructor.
- */
-Being::~Being(void)
- throw()
-{
- // NOOP
-}
-
-
-/**
- * Get the name.
- */
-const std::string&
-Being::getName(void) const
-{
- return mName;
-}
-
-
-/**
- * Get the gender.
- */
-Genders
-Being::getGender(void) const
-{
- return mGender;
-}
-
-
-/**
- * Get the Hair Style.
- */
-unsigned short
-Being::getHairStyle(void) const
-{
- return mHairStyle;
-}
-
-
-/**
- * Get the Hair Color.
- */
-unsigned short
-Being::getHairColor(void) const
-{
- return mHairColor;
-}
-
-
-/**
- * Set the level.
- */
-void
-Being::setLevel(const unsigned short level)
-{
- mLevel = level;
-}
-
-
-/**
- * Get the level.
- */
-unsigned short
-Being::getLevel(void) const
-{
- return mLevel;
-}
-
-
-/**
- * Set the money.
- */
-void
-Being::setMoney(const unsigned int amount)
-{
- mMoney = amount;
-}
-
-
-/**
- * Get the amount of money.
- */
-unsigned int
-Being::getMoney(void) const
-{
- return mMoney;
-}
-
-
-/**
- * Set the strength.
- */
-void
-Being::setStrength(const unsigned short strength)
-{
- mRawStats.strength = strength;
- mNeedUpdate = true;
-}
-
-
-/**
- * Get the strength.
- */
-unsigned short
-Being::getStrength(void) const
-{
- return mRawStats.strength;
-}
-
-
-/**
- * Set the agility.
- */
-void
-Being::setAgility(const unsigned short agility)
-{
- mRawStats.agility = agility;
- mNeedUpdate = true;
-}
-
-
-/**
- * Get the agility.
- */
-unsigned short
-Being::getAgility(void) const
-{
- return mRawStats.agility;
-}
-
-
-/**
- * Set the vitality.
- */
-void
-Being::setVitality(const unsigned short vitality)
-{
- mRawStats.vitality = vitality;
- mNeedUpdate = true;
-}
-
-
-/**
- * Get the vitality.
- */
-unsigned short
-Being::getVitality(void) const
-{
- return mRawStats.vitality;
-}
-
-
-/**
- * Set the intelligence.
- */
-void
-Being::setIntelligence(const unsigned short intelligence)
-{
- mRawStats.intelligence = intelligence;
- mNeedUpdate = true;
-}
-
-
-/**
-* Get the intelligence.
-*
-* @return the intelligence.
-*/
-unsigned short
-Being::getIntelligence(void) const
-{
- return mRawStats.intelligence;
-}
-
-
-/**
- * Set the dexterity.
- */
-void
-Being::setDexterity(const unsigned short dexterity)
-{
- mRawStats.dexterity = dexterity;
- mNeedUpdate = true;
-}
-
-
-/**
- * Get the dexterity.
- */
-unsigned short
-Being::getDexterity(void) const
-{
- return mRawStats.dexterity;
-}
-
-
-/**
- * Set the luck.
- */
-void
-Being::setLuck(const unsigned short luck)
-{
- mRawStats.luck = luck;
- mNeedUpdate = true;
-}
-
-
-/**
- * Get the luck.
- */
-unsigned short
-Being::getLuck(void) const
-{
- return mRawStats.luck;
-}
-
-
-/**
- * Set the raw statistics.
- */
-void
-Being::setRawStatistics(const RawStatistics& stats)
-{
- mRawStats = stats;
- mNeedUpdate = true;
-}
-
-
-/**
- * Get the raw statistics.
- */
-RawStatistics&
-Being::getRawStatistics(void)
-{
- return mRawStats;
-}
-
-
-/**
* Update the internal status.
*/
-void
-Being::update(void)
+void Player::update()
{
// computed stats.
- mStats.health = 20 + (20 * mRawStats.vitality);
- mStats.attack = 10 + mRawStats.strength;
- mStats.defense = 10 + mRawStats.strength;
- mStats.magic = 10 + mRawStats.intelligence;
- mStats.accuracy = 50 + mRawStats.dexterity;
- mStats.speed = mRawStats.dexterity;
+ setStat(STAT_HEA, 20 + (20 * mRawStats.stats[STAT_VIT]));
+ setStat(STAT_ATT, 10 + mRawStats.stats[STAT_STR]);
+ setStat(STAT_DEF, 10 + mRawStats.stats[STAT_STR]);
+ setStat(STAT_MAG, 10 + mRawStats.stats[STAT_INT]);
+ setStat(STAT_ACC, 50 + mRawStats.stats[STAT_DEX]);
+ setStat(STAT_SPD, mRawStats.stats[STAT_DEX]);
mNeedUpdate = false;
}
-void
-Being::setInventory(const std::vector<unsigned int> &inven)
+void Player::setInventory(const std::vector<unsigned int> &inven)
{
inventory = inven;
}
-bool
-Being::addInventory(unsigned int itemId)
+bool Player::addInventory(unsigned int itemId)
{
// If required weight could be tallied to see if player can pick up more.
inventory.push_back(itemId);
return true;
}
-bool
-Being::delInventory(unsigned int itemId)
+bool Player::delInventory(unsigned int itemId)
{
for (std::vector<unsigned int>::iterator i = inventory.begin();
i != inventory.end(); i++) {
@@ -338,8 +69,7 @@ Being::delInventory(unsigned int itemId)
return false;
}
-bool
-Being::hasItem(unsigned int itemId)
+bool Player::hasItem(unsigned int itemId)
{
for (std::vector<unsigned int>::iterator i = inventory.begin();
i != inventory.end(); i++)
@@ -350,8 +80,7 @@ Being::hasItem(unsigned int itemId)
return false;
}
-bool
-Being::equip(unsigned int itemId, unsigned char slot)
+bool Player::equip(unsigned int itemId, unsigned char slot)
{
// currently this is too simplistic and doesn't check enough
// but until further functionality is implemented in the
@@ -363,12 +92,9 @@ Being::equip(unsigned int itemId, unsigned char slot)
return false;
}
-bool
-Being::unequip(unsigned char slot)
+bool Player::unequip(unsigned char slot)
{
// NOTE: 0 will be invalid item id (or we could use key/value pairs)
equipment[slot] = 0;
return true;
}
-
-} // namespace tmwserv
diff --git a/src/being.h b/src/being.h
index 80b73012..f19df9c0 100644
--- a/src/being.h
+++ b/src/being.h
@@ -34,10 +34,6 @@
const unsigned int MAX_EQUIP_SLOTS = 5; /**< Maximum number of equipped slots */
-namespace tmwserv
-{
-
-
struct PATH_NODE {
/**
* Constructor.
@@ -48,225 +44,192 @@ struct PATH_NODE {
};
/**
- * Structure type for the raw statistics of a Being.
+ * Raw statistics of a Player
+ */
+
+enum { STAT_STR = 0, STAT_AGI, STAT_VIT, STAT_INT, STAT_DEX, STAT_LUK, NB_RSTAT };
+
+/**
+ * Structure types for the raw statistics of a Player
*/
+
struct RawStatistics
{
- unsigned short strength;
- unsigned short agility;
- unsigned short vitality;
- unsigned short intelligence;
- unsigned short dexterity;
- unsigned short luck;
+ unsigned short stats[NB_RSTAT];
};
+/*
+ * Computed statistics of a Being
+ */
+
+enum { STAT_HEA = 0, STAT_ATT, STAT_DEF, STAT_MAG, STAT_ACC, STAT_SPD, NB_CSTAT };
+
+/**
+ * Structure type for the computed statistics of a Being.
+ */
+struct Statistics
+{
+ unsigned short stats[NB_CSTAT];
+};
/**
* Generic Being (living object).
* Used for players & monsters (all animated objects).
*/
-class Being: public Object
+class Being: public MovingObject
{
public:
/**
- * Constructor.
- */
- Being(const std::string& name,
- const Genders gender,
- const unsigned short hairStyle,
- const unsigned short hairColor,
- const unsigned short level,
- const unsigned int money,
- const RawStatistics& stats);
-
- /**
- * Destructor.
- */
- ~Being(void)
- throw();
-
- /**
- * Gets the name.
- *
- * @return the name.
- */
- const std::string&
- getName(void) const;
-
- /**
- * Gets the hair Style.
- *
- * @return the Hair style value.
- */
- unsigned short
- getHairStyle(void) const;
-
- /**
- * Gets the Hair Color.
- *
- * @return the Hair Color value.
+ * Proxy constructor.
*/
- unsigned short
- getHairColor(void) const;
+ Being(int type)
+ : MovingObject(type)
+ {}
/**
- * Gets the gender.
+ * Sets a computed statistic.
*
- * @return the gender.
+ * @param numStat the statistic number.
+ * @param value the new value.
*/
- Genders
- getGender(void) const;
-
+ void setStat(int numStat, unsigned short value)
+ { mStats.stats[numStat] = value; }
/**
- * Sets the level.
+ * Gets a computed statistic.
*
- * @param level the new level.
+ * @param numStat the statistic number.
+ * @return the statistic value.
*/
- void
- setLevel(const unsigned short level);
+ unsigned short getStat(int numStat)
+ { return mStats.stats[numStat]; }
- /**
- * Gets the level.
- *
- * @return the level.
- */
- unsigned short
- getLevel(void) const;
+ private:
+ Being(Being const &rhs);
+ Being &operator=(Being const &rhs);
- /**
- * Sets the money.
- *
- * @param amount the new amount.
- */
- void
- setMoney(const unsigned int amount);
+ Statistics mStats; /**< stats modifiers or computed stats */
+};
- /**
- * Gets the amount of money.
- *
- * @return the amount of money.
- */
- unsigned int
- getMoney(void) const;
+class Player: public Being
+{
+ public:
- /**
- * Sets the strength.
- *
- * @param strength the new strength.
- */
- void
- setStrength(const unsigned short strength);
+ Player(std::string const &name)
+ : Being(OBJECT_PLAYER),
+ mName(name)
+ {}
/**
- * Gets the strength.
+ * Gets the name.
*
- * @return the strength.
+ * @return the name.
*/
- unsigned short
- getStrength(void) const;
+ std::string const &getName() const
+ { return mName; }
/**
- * Sets the agility.
+ * Sets the hair style.
*
- * @param agility the new agility.
+ * @param style the new hair style.
*/
- void
- setAgility(const unsigned short agility);
+ void setHairStyle(unsigned char style)
+ { mHairStyle = style; }
/**
- * Gets the agility.
+ * Gets the hair style.
*
- * @return the agility.
+ * @return the hair style value.
*/
- unsigned short
- getAgility(void) const;
+ unsigned char getHairStyle() const
+ { return mHairStyle; }
/**
- * Sets the vitality.
+ * Sets the hair color.
*
- * @param vitality the new vitality.
+ * @param color the new hair color.
*/
- void
- setVitality(const unsigned short vitality);
+ void setHairColor(unsigned char color)
+ { mHairColor = color; }
/**
- * Gets the vitality.
+ * Gets the hair color.
*
- * @return the vitality.
+ * @return the hair color value.
*/
- unsigned short
- getVitality(void) const;
+ unsigned char getHairColor() const
+ { return mHairColor; }
/**
- * Sets the intelligence.
+ * Sets the gender.
*
- * @param intelligence the new intelligence.
+ * @param gender the new gender.
*/
- void
- setIntelligence(const unsigned short intelligence);
+ void setGender(Genders gender)
+ { mGender = gender; }
/**
- * Gets the intelligence.
+ * Gets the gender.
*
- * @return the intelligence.
+ * @return the gender.
*/
- unsigned short
- getIntelligence(void) const;
+ Genders getGender() const
+ { return mGender; }
/**
- * Sets the dexterity.
+ * Sets the level.
*
- * @param dexterity the new dexterity.
+ * @param level the new level.
*/
- void
- setDexterity(const unsigned short dexterity);
+ void setLevel(unsigned char level)
+ { mLevel = level; }
/**
- * Gets the dexterity.
+ * Gets the level.
*
- * @return the dexterity.
+ * @return the level.
*/
- unsigned short
- getDexterity(void) const;
+ unsigned char getLevel() const
+ { return mLevel; }
/**
- * Sets the luck.
+ * Sets the money.
*
- * @param luck the new luck.
+ * @param amount the new amount.
*/
- void
- setLuck(const unsigned short luck);
+ void setMoney(unsigned int amount)
+ { mMoney = amount; }
/**
- * Gets the luck.
+ * Gets the amount of money.
*
- * @return the luck.
+ * @return the amount of money.
*/
- unsigned short
- getLuck(void) const;
+ unsigned int getMoney() const
+ { return mMoney; }
/**
- * Sets the raw statistics.
+ * Sets a raw statistic.
*
- * @param stats the new raw statistics.
+ * @param numStat the statistic number.
+ * @param value the new value.
*/
- void
- setRawStatistics(const RawStatistics& stats);
+ void setRawStat(int numStat, unsigned short value)
+ { mRawStats.stats[numStat] = value; }
/**
- * Gets the raw statistics.
+ * Gets a raw statistic.
*
- * @return the raw statistics.
+ * @param numStat the statistic number.
+ * @return the statistic value.
*/
- RawStatistics&
- getRawStatistics(void);
+ unsigned short getRawStat(int numStat)
+ { return mRawStats.stats[numStat]; }
/**
* Updates the internal status.
*/
- void
- update(void);
+ void update();
/**
* Sets inventory.
@@ -315,43 +278,39 @@ class Being: public Object
unequip(unsigned char slot);
private:
- /**
- * Copy constructor.
- */
- Being(const Being& rhs);
-
- /**
- * Assignment operator.
- */
- Being&
- operator=(const Being& rhs);
+ Player(Player const &);
+ Player &operator=(Player const &);
std::string mName; /**< name of the being */
Genders mGender; /**< gender of the being */
- unsigned short mHairStyle;/**< Hair Style of the being */
- unsigned short mHairColor;/**< Hair Color of the being */
- unsigned short mLevel; /**< level of the being */
+ unsigned char mHairStyle;/**< Hair Style of the being */
+ unsigned char mHairColor;/**< Hair Color of the being */
+ unsigned char mLevel; /**< level of the being */
unsigned int mMoney; /**< wealth of the being */
RawStatistics mRawStats; /**< raw stats of the being */
std::vector<unsigned int> inventory; /**< Player inventory */
unsigned int equipment[MAX_EQUIP_SLOTS]; /**< Equipped item ID's (from inventory) */
-};
-
+};
/**
* Type definition for a smart pointer to Being.
*/
typedef utils::CountedPtr<Being> BeingPtr;
-
/**
* Type definition for a list of Beings.
*/
typedef std::vector<BeingPtr> Beings;
+/**
+ * Type definition for a smart pointer to Player.
+ */
+typedef utils::CountedPtr<Player> PlayerPtr;
-} // namespace tmwserv
-
+/**
+ * Type definition for a list of Players.
+ */
+typedef std::vector<PlayerPtr> Players;
#endif // _TMWSERV_BEING_H_
diff --git a/src/chatchannelmanager.cpp b/src/chatchannelmanager.cpp
index 0d64c311..3f91f9ed 100644
--- a/src/chatchannelmanager.cpp
+++ b/src/chatchannelmanager.cpp
@@ -30,14 +30,14 @@
ChatChannelManager::ChatChannelManager()
{
//Load stored public chat channels from db
- tmwserv::Storage &store = tmwserv::Storage::instance("tmw");
+ Storage &store = Storage::instance("tmw");
mChatChannels = store.getChannelList();
}
ChatChannelManager::~ChatChannelManager()
{
- tmwserv::Storage &store = tmwserv::Storage::instance("tmw");
+ Storage &store = Storage::instance("tmw");
store.updateChannels(mChatChannels);
mChatChannels.clear();
}
diff --git a/src/dal/dalexcept.h b/src/dal/dalexcept.h
index 6edf2938..e2d5b2b1 100644
--- a/src/dal/dalexcept.h
+++ b/src/dal/dalexcept.h
@@ -27,9 +27,6 @@
#include <string>
-
-namespace tmwserv
-{
namespace dal
{
@@ -191,7 +188,5 @@ class RsColumnHeadersNotSet: public std::exception
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_DAL_EXCEPT_H_
diff --git a/src/dal/dataprovider.cpp b/src/dal/dataprovider.cpp
index 29e0e6cc..93de865c 100644
--- a/src/dal/dataprovider.cpp
+++ b/src/dal/dataprovider.cpp
@@ -23,9 +23,6 @@
#include "dataprovider.h"
-
-namespace tmwserv
-{
namespace dal
{
@@ -78,4 +75,3 @@ DataProvider::getDbName(void)
} // namespace dal
-} // namespace tmwserv
diff --git a/src/dal/dataprovider.h b/src/dal/dataprovider.h
index fe034873..07d29b4e 100644
--- a/src/dal/dataprovider.h
+++ b/src/dal/dataprovider.h
@@ -29,13 +29,9 @@
#include "recordset.h"
-
-namespace tmwserv
-{
namespace dal
{
-
/**
* Enumeration type for the database backends.
*/
@@ -153,7 +149,5 @@ class DataProvider
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_DATA_PROVIDER_H_
diff --git a/src/dal/dataproviderfactory.cpp b/src/dal/dataproviderfactory.cpp
index 74897d93..d9c144f4 100644
--- a/src/dal/dataproviderfactory.cpp
+++ b/src/dal/dataproviderfactory.cpp
@@ -33,9 +33,6 @@
#error "no database backend defined"
#endif
-
-namespace tmwserv
-{
namespace dal
{
@@ -80,4 +77,3 @@ DataProviderFactory::createDataProvider(void)
} // namespace dal
-} // namespace tmwserv
diff --git a/src/dal/dataproviderfactory.h b/src/dal/dataproviderfactory.h
index 165113bd..89db1eb8 100644
--- a/src/dal/dataproviderfactory.h
+++ b/src/dal/dataproviderfactory.h
@@ -23,9 +23,6 @@
#ifndef _TMWSERV_DATA_PROVIDER_FACTORY_H_
#define _TMWSERV_DATA_PROVIDER_FACTORY_H_
-
-namespace tmwserv
-{
namespace dal
{
class DataProvider;
@@ -79,7 +76,5 @@ class DataProviderFactory
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_DATA_PROVIDER_FACTORY_H_
diff --git a/src/dal/mysqldataprovider.cpp b/src/dal/mysqldataprovider.cpp
index 69b4937e..85084dc8 100644
--- a/src/dal/mysqldataprovider.cpp
+++ b/src/dal/mysqldataprovider.cpp
@@ -24,8 +24,6 @@
#include "dalexcept.h"
-namespace tmwserv
-{
namespace dal
{
@@ -198,4 +196,3 @@ MySqlDataProvider::disconnect(void)
} // namespace dal
-} // namespace tmwserv
diff --git a/src/dal/mysqldataprovider.h b/src/dal/mysqldataprovider.h
index 698c9fc5..f2466033 100644
--- a/src/dal/mysqldataprovider.h
+++ b/src/dal/mysqldataprovider.h
@@ -31,9 +31,6 @@
#include "dataprovider.h"
-
-namespace tmwserv
-{
namespace dal
{
@@ -114,7 +111,5 @@ class MySqlDataProvider: public DataProvider
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_MYSQL_DATA_PROVIDER_H_
diff --git a/src/dal/pqdataprovider.cpp b/src/dal/pqdataprovider.cpp
index 2a30ef9e..ee4f5e34 100644
--- a/src/dal/pqdataprovider.cpp
+++ b/src/dal/pqdataprovider.cpp
@@ -23,9 +23,6 @@
#include "pqdataprovider.h"
-
-namespace tmwserv
-{
namespace dal
{
@@ -165,4 +162,3 @@ PqDataProvider::disconnect(void)
} // namespace dal
-} // namespace tmwserv
diff --git a/src/dal/pqdataprovider.h b/src/dal/pqdataprovider.h
index 73d5c8d7..a3d6084f 100644
--- a/src/dal/pqdataprovider.h
+++ b/src/dal/pqdataprovider.h
@@ -30,9 +30,6 @@
#include "dataprovider.h"
-
-namespace tmwserv
-{
namespace dal
{
@@ -113,7 +110,5 @@ class PqDataProvider: public DataProvider
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_PQDATAPROVIDER_H_
diff --git a/src/dal/recordset.cpp b/src/dal/recordset.cpp
index d59447c7..6b2211ea 100644
--- a/src/dal/recordset.cpp
+++ b/src/dal/recordset.cpp
@@ -27,8 +27,6 @@
#include "dalexcept.h"
-namespace tmwserv
-{
namespace dal
{
@@ -210,8 +208,6 @@ RecordSet::operator()(const unsigned int row,
std::ostream&
operator<<(std::ostream& out, const RecordSet& rhs)
{
- using namespace tmwserv::dal;
-
// print the field names first.
if (rhs.mHeaders.size() > 0) {
out << "|";
@@ -244,4 +240,3 @@ operator<<(std::ostream& out, const RecordSet& rhs)
} // namespace dal
-} // namespace tmwserv
diff --git a/src/dal/recordset.h b/src/dal/recordset.h
index 0300c926..761e7242 100644
--- a/src/dal/recordset.h
+++ b/src/dal/recordset.h
@@ -26,8 +26,6 @@
#include <iostream>
#include <vector>
-namespace tmwserv
-{
namespace dal
{
@@ -198,7 +196,5 @@ class RecordSet
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_RECORDSET_H_
diff --git a/src/dal/sqlitedataprovider.cpp b/src/dal/sqlitedataprovider.cpp
index e0f67f55..5c5e692f 100644
--- a/src/dal/sqlitedataprovider.cpp
+++ b/src/dal/sqlitedataprovider.cpp
@@ -27,8 +27,6 @@
#include "dalexcept.h"
-namespace tmwserv
-{
namespace dal
{
@@ -199,4 +197,3 @@ SqLiteDataProvider::disconnect(void)
} // namespace dal
-} // namespace tmwserv
diff --git a/src/dal/sqlitedataprovider.h b/src/dal/sqlitedataprovider.h
index 60ac7b6e..b791025b 100644
--- a/src/dal/sqlitedataprovider.h
+++ b/src/dal/sqlitedataprovider.h
@@ -28,9 +28,6 @@
#include "dataprovider.h"
-
-namespace tmwserv
-{
namespace dal
{
@@ -111,7 +108,5 @@ class SqLiteDataProvider: public DataProvider
} // namespace dal
-} // namespace tmwserv
-
#endif // _TMWSERV_SQLITE_DATA_PROVIDER_H_
diff --git a/src/dalstorage.cpp b/src/dalstorage.cpp
index b86219dc..e20a5508 100644
--- a/src/dalstorage.cpp
+++ b/src/dalstorage.cpp
@@ -32,10 +32,6 @@
#include "utils/functors.h"
#include "utils/logger.h"
-namespace tmwserv
-{
-
-
/**
* Constructor.
*/
@@ -226,7 +222,7 @@ DALStorage::getAccount(const std::string& userName)
const RecordSet& charInfo = mDb->execSql(sql);
if (!charInfo.isEmpty()) {
- Beings beings;
+ Players players;
LOG_INFO(userName << "'s account has " << charInfo.rows()
<< " character(s) in database.", 1);
@@ -246,48 +242,34 @@ DALStorage::getAccount(const std::string& userName)
unsigned int charRows = charInfo.rows();
for (unsigned int k = 0; k < charRows; ++k) {
- RawStatistics stats = {
- toUshort(strCharInfo[k][11]), // strength
- toUshort(strCharInfo[k][12]), // agility
- toUshort(strCharInfo[k][13]), // vitality
- toUshort(strCharInfo[k][14]), // intelligence
- toUshort(strCharInfo[k][15]), // dexterity
- toUshort(strCharInfo[k][16]) // luck
- };
-
- BeingPtr being(
- new Being(strCharInfo[k][2], // name
- // while the implicit type conversion from
- // a short to an enum is invalid, the explicit
- // type cast works :D
- (Genders) toUshort(strCharInfo[k][3]), // gender
- toUshort(strCharInfo[k][4]), // hair style
- toUshort(strCharInfo[k][5]), // hair color
- toUshort(strCharInfo[k][6]), // level
- toUint(strCharInfo[k][7]), // money
- stats
- ));
+ PlayerPtr player(new Player(strCharInfo[k][2]));
+ player->setGender((Genders)toUshort(strCharInfo[k][3]));
+ player->setHairStyle(toUshort(strCharInfo[k][4]));
+ player->setHairColor(toUshort(strCharInfo[k][5]));
+ player->setLevel(toUshort(strCharInfo[k][6]));
+ player->setMoney(toUint(strCharInfo[k][7]));
+ player->setXY(toUshort(strCharInfo[k][8]),
+ toUshort(strCharInfo[k][9]));
+ for (int i = 0; i < NB_RSTAT; ++i)
+ player->setRawStat(i, toUshort(strCharInfo[k][11 + i]));
unsigned int mapId = toUint(strCharInfo[k][10]);
if ( mapId > 0 )
{
- being->setMapId(mapId);
+ player->setMapId(mapId);
}
else
{
// Set player to default map and one of the default location
// Default map is to be 1, as not found return value will be 0.
- being->setMapId((int)config.getValue("defaultMap", 1));
+ player->setMapId((int)config.getValue("defaultMap", 1));
}
- being->setXY(toUshort(strCharInfo[k][8]),
- toUshort(strCharInfo[k][9]));
-
- mCharacters.push_back(being);
- beings.push_back(being);
+ mCharacters.push_back(player);
+ players.push_back(player);
} // End of for each characters
- account->setCharacters(beings);
+ account->setCharacters(players);
} // End if there are characters.
return account;
@@ -738,12 +720,10 @@ DALStorage::_addAccount(const AccountPtr& account)
(account_it->second).id = toUint(accountInfo(0, 0));
// insert the characters.
- Beings& characters = account->getCharacters();
+ Players &characters = account->getCharacters();
- Beings::const_iterator it = characters.begin();
- Beings::const_iterator it_end = characters.end();
+ Players::const_iterator it = characters.begin(), it_end = characters.end();
for (; it != it_end; ++it) {
- RawStatistics& stats = (*it)->getRawStatistics();
std::ostringstream sql3;
sql3 << "insert into " << CHARACTERS_TBL_NAME
<< " (name, gender, hair_style, hair_color, level, money, x, y, "
@@ -754,17 +734,17 @@ DALStorage::_addAccount(const AccountPtr& account)
<< (*it)->getGender() << ", "
<< (int)(*it)->getHairStyle() << ", "
<< (int)(*it)->getHairColor() << ", "
- << (*it)->getLevel() << ", "
+ << (int)(*it)->getLevel() << ", "
<< (*it)->getMoney() << ", "
<< (*it)->getX() << ", "
<< (*it)->getY() << ", "
<< (int)(*it)->getMapId() << ", "
- << stats.strength << ", "
- << stats.agility << ", "
- << stats.vitality << ", "
- << stats.intelligence << ", "
- << stats.dexterity << ", "
- << stats.luck
+ << (*it)->getRawStat(STAT_STR) << ", "
+ << (*it)->getRawStat(STAT_AGI) << ", "
+ << (*it)->getRawStat(STAT_VIT) << ", "
+ << (*it)->getRawStat(STAT_INT) << ", "
+ << (*it)->getRawStat(STAT_DEX) << ", "
+ << (*it)->getRawStat(STAT_LUK)
<< ");";
mDb->execSql(sql3.str());
@@ -816,11 +796,10 @@ DALStorage::_updAccount(const AccountPtr& account)
mDb->execSql(sql1.str());
// get the list of characters that belong to this account.
- Beings& characters = account->getCharacters();
+ Players &characters = account->getCharacters();
// insert or update the characters.
- Beings::const_iterator it = characters.begin();
- Beings::const_iterator it_end = characters.end();
+ Players::const_iterator it = characters.begin(), it_end = characters.end();
using namespace dal;
for (; it != it_end; ++it) {
@@ -831,8 +810,6 @@ DALStorage::_updAccount(const AccountPtr& account)
<< " where name = \"" << (*it)->getName() << "\";";
const RecordSet& charInfo = mDb->execSql(sql2.str());
- RawStatistics& stats = (*it)->getRawStatistics();
-
std::ostringstream sql3;
if (charInfo.rows() == 0) {
sql3 << "insert into " << CHARACTERS_TBL_NAME
@@ -849,19 +826,19 @@ DALStorage::_updAccount(const AccountPtr& account)
#endif
<< (*it)->getName() << "\", "
<< (*it)->getGender() << ", "
- << (*it)->getHairStyle() << ", "
- << (*it)->getHairColor() << ", "
- << (*it)->getLevel() << ", "
+ << (int)(*it)->getHairStyle() << ", "
+ << (int)(*it)->getHairColor() << ", "
+ << (int)(*it)->getLevel() << ", "
<< (*it)->getMoney() << ", "
<< (*it)->getX() << ", "
<< (*it)->getY() << ", "
<< (*it)->getMapId() << ", "
- << stats.strength << ", "
- << stats.agility << ", "
- << stats.vitality << ", "
- << stats.intelligence << ", "
- << stats.dexterity << ", "
- << stats.luck << ");";
+ << (*it)->getRawStat(STAT_STR) << ", "
+ << (*it)->getRawStat(STAT_AGI) << ", "
+ << (*it)->getRawStat(STAT_VIT) << ", "
+ << (*it)->getRawStat(STAT_INT) << ", "
+ << (*it)->getRawStat(STAT_DEX) << ", "
+ << (*it)->getRawStat(STAT_LUK) << ");";
}
else {
sql3 << "update " << CHARACTERS_TBL_NAME
@@ -874,16 +851,16 @@ DALStorage::_updAccount(const AccountPtr& account)
<< " x = " << (*it)->getX() << ", "
<< " y = " << (*it)->getY() << ", "
<< " map_id = " << (*it)->getMapId() << ", "
- << " str = " << stats.strength << ", "
- << " agi = " << stats.agility << ", "
- << " vit = " << stats.vitality << ", "
+ << " str = " << (*it)->getRawStat(STAT_STR) << ", "
+ << " agi = " << (*it)->getRawStat(STAT_AGI) << ", "
+ << " vit = " << (*it)->getRawStat(STAT_VIT) << ", "
#if defined(MYSQL_SUPPORT) || defined(POSTGRESQL_SUPPORT)
- << " `int` = " << stats.intelligence << ", "
+ << " `int` = " << (*it)->getRawStat(STAT_INT) << ", "
#else
- << " int = " << stats.intelligence << ", "
+ << " int = " << (*it)->getRawStat(STAT_INT) << ", "
#endif
- << " dex = " << stats.dexterity << ", "
- << " luck = " << stats.luck
+ << " dex = " << (*it)->getRawStat(STAT_DEX) << ", "
+ << " luck = " << (*it)->getRawStat(STAT_LUK)
<< " where id = " << charInfo(0, 0) << ";";
}
mDb->execSql(sql3.str());
@@ -1038,6 +1015,3 @@ DALStorage::_delAccount(const std::string& userName)
sql += "';";
mDb->execSql(sql);
}
-
-
-} // namespace tmwserv
diff --git a/src/dalstorage.h b/src/dalstorage.h
index e7b17022..c3848ed9 100644
--- a/src/dalstorage.h
+++ b/src/dalstorage.h
@@ -28,10 +28,6 @@
#include "dal/dataprovider.h"
-namespace tmwserv
-{
-
-
/**
* A storage class that relies on DAL.
*
@@ -226,8 +222,4 @@ class DALStorage: public Storage
std::auto_ptr<dal::DataProvider> mDb; /**< the data provider */
};
-
-} // namespace tmwserv
-
-
#endif // _TMWSERV_DALSTORAGE_H_
diff --git a/src/gamehandler.cpp b/src/gamehandler.cpp
index ebda00d6..8fd89919 100644
--- a/src/gamehandler.cpp
+++ b/src/gamehandler.cpp
@@ -34,8 +34,6 @@
#include "state.h"
#include "utils/logger.h"
-using tmwserv::BeingPtr;
-
class GameClient: public NetComputer
{
public:
@@ -52,7 +50,7 @@ class GameClient: public NetComputer
/**
* Set the selected character associated with connection.
*/
- void setCharacter(BeingPtr ch);
+ void setCharacter(PlayerPtr ch);
/**
* Deselect the character associated with connection.
@@ -62,11 +60,11 @@ class GameClient: public NetComputer
/**
* Get character associated with the connection.
*/
- BeingPtr getCharacter() { return mCharacterPtr; }
+ PlayerPtr getCharacter() { return mCharacterPtr; }
private:
/** Character associated with the conneciton. */
- BeingPtr mCharacterPtr;
+ PlayerPtr mCharacterPtr;
};
GameClient::GameClient(GameHandler *handler, ENetPeer *peer):
@@ -81,25 +79,25 @@ GameClient::~GameClient()
}
-void GameClient::setCharacter(tmwserv::BeingPtr ch)
+void GameClient::setCharacter(PlayerPtr ch)
{
assert(mCharacterPtr.get() == NULL);
mCharacterPtr = ch;
- gameState->addBeing(mCharacterPtr);
- gameState->informBeing(mCharacterPtr);
+ gameState->addObject(ObjectPtr(mCharacterPtr));
+ gameState->informPlayer(mCharacterPtr);
}
void GameClient::unsetCharacter()
{
if (mCharacterPtr.get() == NULL) return;
// remove being from world
- gameState->removeBeing(mCharacterPtr);
- mCharacterPtr = tmwserv::BeingPtr(NULL);
+ gameState->removeObject(ObjectPtr(mCharacterPtr));
+ mCharacterPtr = PlayerPtr(NULL);
}
struct GamePendingLogin
{
- tmwserv::BeingPtr character;
+ PlayerPtr character;
int timeout;
};
@@ -109,7 +107,7 @@ static GamePendingLogins pendingLogins;
typedef std::map< std::string, GameClient * > GamePendingClients;
static GamePendingClients pendingClients;
-void registerGameClient(std::string const &token, tmwserv::BeingPtr ch)
+void registerGameClient(std::string const &token, PlayerPtr ch)
{
GamePendingClients::iterator i = pendingClients.find(token);
if (i != pendingClients.end())
@@ -264,7 +262,7 @@ void GameHandler::processMessage(NetComputer *comp, MessageIn &message)
void GameHandler::sayAround(GameClient &computer, std::string const &text)
{
- BeingPtr beingPtr = computer.getCharacter();
+ PlayerPtr beingPtr = computer.getCharacter();
MessageOut msg;
msg.writeShort(GPMSG_SAY);
msg.writeString(beingPtr->getName());
@@ -275,7 +273,7 @@ void GameHandler::sayAround(GameClient &computer, std::string const &text)
i != i_end; ++i)
{
// See if the other being is near enough, then send the message
- tmwserv::Being const *listener = static_cast< GameClient * >(*i)->getCharacter().get();
+ Player const *listener = static_cast< GameClient * >(*i)->getCharacter().get();
if (!listener || listener->getMapId() != speakerMapId) continue;
std::pair<unsigned, unsigned> listenerXY = listener->getXY();
if (abs(listenerXY.first - speakerXY.first ) > (int)AROUND_AREA_IN_TILES) continue;
@@ -284,7 +282,7 @@ void GameHandler::sayAround(GameClient &computer, std::string const &text)
}
}
-void GameHandler::sendTo(BeingPtr beingPtr, MessageOut &msg)
+void GameHandler::sendTo(PlayerPtr beingPtr, MessageOut &msg)
{
for (NetComputers::iterator i = clients.begin(), i_end = clients.end();
i != i_end; ++i) {
diff --git a/src/gamehandler.h b/src/gamehandler.h
index 6a2da6e9..520f290c 100644
--- a/src/gamehandler.h
+++ b/src/gamehandler.h
@@ -39,9 +39,9 @@ class GameHandler: public ConnectionHandler
void process();
/**
- * Send message to the given being.
+ * Send message to the given player.
*/
- void sendTo(tmwserv::BeingPtr beingPtr, MessageOut &msg);
+ void sendTo(PlayerPtr playerPtr, MessageOut &msg);
protected:
NetComputer *computerConnected(ENetPeer *);
@@ -66,7 +66,7 @@ class GameHandler: public ConnectionHandler
/**
* Register future client attempt. Temporary until physical server split.
*/
-void registerGameClient(std::string const &, tmwserv::BeingPtr);
+void registerGameClient(std::string const &, PlayerPtr);
extern GameHandler *gameHandler;
diff --git a/src/main.cpp b/src/main.cpp
index 8a5dd5b6..8f418ce4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -86,7 +86,7 @@ Skill skillTree("base"); /**< Skill tree */
Configuration config; /**< XML config reader */
-tmwserv::utils::StringFilter *stringFilter; /**< Slang's Filter */
+utils::StringFilter *stringFilter; /**< Slang's Filter */
/** Account message handler */
AccountHandler *accountHandler;
@@ -100,7 +100,7 @@ ChatChannelManager *chatChannelManager;
GameHandler *gameHandler;
/** Global game state */
-tmwserv::State *gameState;
+State *gameState;
/**
* Initializes the server.
@@ -143,7 +143,7 @@ void initialize()
#endif // defined LOG_FILE
// initialize the logger.
- using namespace tmwserv::utils;
+ using namespace utils;
Logger::instance().setLogFile(logPath);
// write the messages to both the screen and the log file.
@@ -245,7 +245,7 @@ void deinitialize()
delete chatChannelManager;
// Get rid of persistent data storage
- tmwserv::Storage::destroy();
+ Storage::destroy();
PHYSFS_deinit();
}
@@ -295,7 +295,7 @@ void parseOptions(int argc, char *argv[])
// Set Verbosity to level
unsigned short verbosityLevel;
verbosityLevel = atoi(optarg);
- tmwserv::utils::Logger::instance().setVerbosity(verbosityLevel);
+ utils::Logger::instance().setVerbosity(verbosityLevel);
LOG_INFO("Setting Log Verbosity Level to " << verbosityLevel, 0);
break;
case 'p':
diff --git a/src/map.cpp b/src/map.cpp
index 843e9664..436a9c42 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -27,9 +27,6 @@
#include "being.h"
-namespace tmwserv
-{
-
MetaTile::MetaTile():
whichList(0)
@@ -333,5 +330,3 @@ Map::findPath(int startX, int startY, int destX, int destY)
return path;
}
-
-} // namespace tmwserv
diff --git a/src/map.h b/src/map.h
index e51572df..0f31d7b4 100644
--- a/src/map.h
+++ b/src/map.h
@@ -28,10 +28,6 @@
#include <map>
#include <string>
-namespace tmwserv
-{
-
-
struct PATH_NODE;
/**
@@ -190,6 +186,4 @@ class Map
int onClosedList, onOpenList;
};
-} // namespace tmwserv
-
#endif
diff --git a/src/mapmanager.cpp b/src/mapmanager.cpp
index caacbecc..b1a307db 100644
--- a/src/mapmanager.cpp
+++ b/src/mapmanager.cpp
@@ -29,10 +29,6 @@
#include "utils/logger.h"
-namespace tmwserv
-{
-
-
MapManager::~MapManager()
throw()
{
@@ -100,6 +96,3 @@ MapManager::isLoaded(const unsigned int mapId) const
{
return maps.find(mapId) != maps.end();
}
-
-
-} // namespace tmwserv
diff --git a/src/mapmanager.h b/src/mapmanager.h
index 14d0a159..71e3327c 100644
--- a/src/mapmanager.h
+++ b/src/mapmanager.h
@@ -28,9 +28,7 @@
#include "utils/singleton.h"
-namespace tmwserv
-{
- class Map;
+class Map;
/**
@@ -80,6 +78,4 @@ class MapManager: public utils::Singleton<MapManager>
std::map<unsigned int, Map *> maps;
};
-} // namespace tmwserv
-
#endif
diff --git a/src/mapreader.cpp b/src/mapreader.cpp
index 5e213fd8..f16886c9 100644
--- a/src/mapreader.cpp
+++ b/src/mapreader.cpp
@@ -32,10 +32,6 @@
#include "utils/base64.h"
#include "utils/logger.h"
-namespace tmwserv
-{
-
-
const unsigned int DEFAULT_TILE_WIDTH = 32;
const unsigned int DEFAULT_TILE_HEIGHT = 32;
@@ -382,5 +378,3 @@ void MapReader::setTileWithGid(Map *map, int x, int y, int layer, int gid)
map->setWalk(x, y, !set || (gid - set->getFirstGid() == 0));
}
}
-
-} // namespace tmwserv
diff --git a/src/mapreader.h b/src/mapreader.h
index 3ed67153..fe395e35 100644
--- a/src/mapreader.h
+++ b/src/mapreader.h
@@ -27,9 +27,7 @@
#include <libxml/tree.h>
#include <vector>
-namespace tmwserv
-{
- class Map;
+class Map;
/**
@@ -108,6 +106,4 @@ class MapReader
static std::vector<Tileset*> tilesets;
};
-} // namespace tmwserv
-
#endif
diff --git a/src/object.cpp b/src/object.cpp
index 82be242a..cab2622e 100644
--- a/src/object.cpp
+++ b/src/object.cpp
@@ -22,132 +22,3 @@
#include "object.h"
-
-
-namespace tmwserv
-{
-
-
-/**
- * Default constructor.
- */
-Object::Object(void)
- : mNeedUpdate(false),
- mX(0),
- mY(0)
-{
- mStats.health = 0;
- mStats.attack = 0;
- mStats.defense = 0;
- mStats.magic = 0;
- mStats.accuracy = 0;
- mStats.speed = 0;
-}
-
-
-/**
- * Destructor.
- */
-Object::~Object(void)
- throw()
-{
- // NOOP
-}
-
-
-/**
- * Set the x coordinate.
- */
-void
-Object::setX(unsigned int x)
-{
- mX = x;
-}
-
-
-/**
- * Get the x coordinate.
- */
-unsigned int
-Object::getX(void) const
-{
- return mX;
-}
-
-
-/**
- * Set the y coordinate.
- */
-void
-Object::setY(unsigned int y)
-{
- mY = y;
-}
-
-
-/**
- * Get the y coordinate.
- */
-unsigned int
-Object::getY(void) const
-{
- return mY;
-}
-
-
-/**
- * Set the coordinates.
- */
-void
-Object::setXY(unsigned int x, unsigned int y)
-{
- mX = x;
- mY = y;
-}
-
-
-/**
- * Get the coordinates.
- */
-std::pair<unsigned int, unsigned int>
-Object::getXY(void) const
-{
- return std::make_pair(mX, mY);
-}
-
-
-/**
- * Set the statistics.
- */
-void
-Object::setStatistics(const Statistics& stats)
-{
- mStats = stats;
-}
-
-
-/**
- * Get the statistics.
- */
-Statistics&
-Object::getStatistics(void)
-{
- if (mNeedUpdate) {
- update();
- }
-
- return mStats;
-}
-
-unsigned int
-Object::getMapId() const
-{
- return mMapId;
-}
-
-void
-Object::setMapId(const unsigned int mapId) {
- mMapId = mapId;
-}
-
-} // namespace tmwserv
diff --git a/src/object.h b/src/object.h
index 962f8202..77705801 100644
--- a/src/object.h
+++ b/src/object.h
@@ -27,30 +27,9 @@
#include <utility>
#include <vector>
+#include "defines.h"
#include "utils/countedptr.h"
-namespace tmwserv
-{
-
-/**
- * Structure type for the statistics.
- *
- * Notes:
- * - the structure can be used to define stats modifiers (i.e. how an
- * object would modify the stats of a being when it is equipped) or
- * computed stats of a being.
- * - the attributes are not unsigned to allow negative values.
- */
-struct Statistics
-{
- int health;
- int attack;
- int defense;
- int magic;
- int accuracy;
- int speed;
-};
-
/**
* Generic in-game object definition.
* Base class for in-game objects.
@@ -59,54 +38,57 @@ class Object
{
public:
/**
- * Default constructor.
+ * Constructor.
*/
- Object(void);
-
+ Object(int type)
+ : mType(type),
+ mNeedUpdate(false)
+ {}
/**
- * Destructor.
+ * Empty virtual destructor.
*/
- virtual
- ~Object(void)
- throw();
+ virtual ~Object() {}
+ /**
+ * Get type.
+ *
+ * @return the type.
+ */
+ unsigned int getType() const
+ { return mType; }
/**
* Set the x coordinate.
*
* @param x the new x coordinate.
*/
- void
- setX(unsigned int x);
-
+ void setX(unsigned int x)
+ { mX = x; }
/**
* Get the x coordinate.
*
* @return the x coordinate.
*/
- unsigned int
- getX(void) const;
-
+ unsigned int getX() const
+ { return mX; }
/**
* Set the y coordinate.
*
* @param y the new y coordinate.
*/
- void
- setY(unsigned int y);
-
+ void setY(unsigned int y)
+ { mY = y; }
/**
* Get the y coordinate.
*
* @return the y coordinate.
*/
- unsigned int
- getY(void) const;
-
+ unsigned int getY() const
+ { return mY; }
/**
* Set the coordinates.
@@ -114,67 +96,59 @@ class Object
* @param x the x coordinate.
* @param y the y coordinate.
*/
- void
- setXY(unsigned int x, unsigned int y);
-
+ void setXY(unsigned int x, unsigned int y)
+ { mX = x; mY = y; }
/**
* Get the coordinates.
*
* @return the coordinates as a pair.
*/
- std::pair<unsigned int, unsigned int>
- getXY(void) const;
-
-
- /**
- * Set the statistics.
- *
- * @param stats the statistics.
- */
- void
- setStatistics(const Statistics& stats);
-
-
- /**
- * Get the statistics.
- *
- * @return the statistics.
- */
- Statistics&
- getStatistics(void);
-
+ std::pair<unsigned int, unsigned int> getXY() const
+ { return std::make_pair(mX, mY); }
/**
* Update the internal status.
*/
virtual void
- update(void) = 0;
+ update() = 0;
/**
* Get map name where being is
*
* @return Name of map being is located.
*/
- unsigned int
- getMapId() const;
+ unsigned int getMapId() const
+ { return mMapId; }
/**
* Set map being is located
*/
- void
- setMapId(const unsigned int mapId);
-
- protected:
- Statistics mStats; /**< stats modifiers or computed stats */
- bool mNeedUpdate; /**< update() must be invoked if true */
-
+ void setMapId(unsigned int mapId)
+ { mMapId = mapId; }
private:
+ int mType; /**< Object type */
unsigned int mX; /**< x coordinate */
unsigned int mY; /**< y coordinate */
-
unsigned int mMapId; /**< id of the map being is on */
+
+ protected:
+ bool mNeedUpdate; /**< update() must be invoked if true */
+};
+
+/**
+ * Base class for in-game moving objects.
+ */
+class MovingObject: public Object
+{
+ public:
+ /**
+ * Proxy constructor.
+ */
+ MovingObject(int type)
+ : Object(type)
+ {}
};
/**
@@ -188,7 +162,4 @@ typedef utils::CountedPtr<Object> ObjectPtr;
*/
typedef std::vector<ObjectPtr> Objects;
-} // namespace tmwserv
-
-
#endif // _TMWSERV_OBJECT_H_
diff --git a/src/state.cpp b/src/state.cpp
index bcd63f5d..53ddb7ac 100644
--- a/src/state.cpp
+++ b/src/state.cpp
@@ -30,9 +30,6 @@
#include "utils/logger.h"
-namespace tmwserv
-{
-
State::State() {
}
@@ -47,72 +44,82 @@ State::~State() {
void State::update()
{
// update game state (update AI, etc.)
- for (std::map<unsigned int, MapComposite>::iterator i = maps.begin();
- i != maps.end();
- i++) {
- for (Beings::iterator b = i->second.beings.begin();
- b != i->second.beings.end();
- b++) {
- b->get()->update();
+ for (std::map<unsigned int, MapComposite>::iterator m = maps.begin(),
+ m_end = maps.end(); m != m_end; ++m) {
+ for (Objects::iterator o = m->second.objects.begin(),
+ o_end = m->second.objects.end(); o != o_end; ++o) {
+ (*o)->update();
}
}
}
-void State::addBeing(BeingPtr beingPtr) {
- unsigned mapId = beingPtr->getMapId();
+void State::addObject(ObjectPtr objectPtr) {
+ unsigned mapId = objectPtr->getMapId();
if (!loadMap(mapId)) return;
- Beings &beings = maps[mapId].beings;
- beings.push_back(beingPtr);
+ maps[mapId].objects.push_back(objectPtr);
+ if (objectPtr->getType() != OBJECT_PLAYER) return;
+ PlayerPtr playerPtr(objectPtr);
+ Players &players = maps[mapId].players;
+ players.push_back(playerPtr);
MessageOut msg;
msg.writeShort(GPMSG_BEING_ENTER);
msg.writeByte(OBJECT_PLAYER);
msg.writeLong(0); // ID
- msg.writeString(beingPtr->getName());
- msg.writeByte(beingPtr->getHairStyle());
- msg.writeByte(beingPtr->getHairColor());
- msg.writeByte(beingPtr->getGender());
- for (Beings::iterator b = beings.begin(), end = beings.end();
- b != end; ++b) {
- gameHandler->sendTo(*b, msg);
+ msg.writeString(playerPtr->getName());
+ msg.writeByte(playerPtr->getHairStyle());
+ msg.writeByte(playerPtr->getHairColor());
+ msg.writeByte(playerPtr->getGender());
+ for (Players::iterator p = players.begin(),
+ p_end = players.end(); p != p_end; ++p) {
+ gameHandler->sendTo(*p, msg);
}
}
-void State::removeBeing(BeingPtr beingPtr) {
- unsigned mapId = beingPtr->getMapId();
- std::map<unsigned, MapComposite>::iterator i = maps.find(mapId);
- if (i == maps.end()) return;
- Beings &beings = i->second.beings;
+void State::removeObject(ObjectPtr objectPtr) {
+ unsigned mapId = objectPtr->getMapId();
+ std::map<unsigned, MapComposite>::iterator m = maps.find(mapId);
+ if (m == maps.end()) return;
+ Objects &objects = m->second.objects;
+ for (Objects::iterator o = objects.begin(),
+ o_end = objects.end(); o != o_end; ++o) {
+ if (o->get() == objectPtr.get()) {
+ objects.erase(o);
+ break;
+ }
+ }
+ if (objectPtr->getType() != OBJECT_PLAYER) return;
+ PlayerPtr playerPtr(objectPtr);
+ Players &players = maps[mapId].players;
MessageOut msg;
msg.writeShort(GPMSG_BEING_LEAVE);
msg.writeByte(OBJECT_PLAYER);
msg.writeLong(0); // ID
- Beings::iterator j = beings.end();
- for (Beings::iterator b = beings.begin(), end = beings.end();
- b != end; ++b) {
- if (b->get() == beingPtr.get())
- j = b;
+ Players::iterator p_end = players.end(), j = p_end;
+ for (Players::iterator p = players.begin(); p != p_end; ++p) {
+ if (p->get() == playerPtr.get())
+ j = p;
else
- gameHandler->sendTo(*b, msg);
+ gameHandler->sendTo(*p, msg);
}
- if (j != beings.end()) beings.erase(j);
+ if (j != players.end()) players.erase(j);
}
-void State::informBeing(BeingPtr beingPtr) {
- unsigned mapId = beingPtr->getMapId();
- std::map<unsigned, MapComposite>::iterator i = maps.find(mapId);
- if (i == maps.end()) return;
- Beings &beings = i->second.beings;
- for (Beings::iterator b = beings.begin(), end = beings.end();
- b != end; ++b) {
+void State::informPlayer(PlayerPtr playerPtr) {
+ unsigned mapId = playerPtr->getMapId();
+ std::map<unsigned, MapComposite>::iterator m = maps.find(mapId);
+ if (m == maps.end()) return;
+ Players &players = m->second.players;
+ for (Players::iterator p = players.begin(),
+ p_end = players.end(); p != p_end; ++p) {
MessageOut msg;
msg.writeShort(GPMSG_BEING_ENTER);
msg.writeByte(OBJECT_PLAYER);
msg.writeLong(0); // ID
- msg.writeString((*b)->getName());
- msg.writeByte((*b)->getHairStyle());
- msg.writeByte((*b)->getHairColor());
- msg.writeByte((*b)->getGender());
- gameHandler->sendTo(beingPtr, msg);
+ msg.writeString((*p)->getName());
+ msg.writeByte((*p)->getHairStyle());
+ msg.writeByte((*p)->getHairColor());
+ msg.writeByte((*p)->getGender());
+ gameHandler->sendTo(playerPtr, msg);
}
}
@@ -126,24 +133,3 @@ bool State::loadMap(const unsigned int mapId) {
return true; // We let true for testing on beings
}
-
-void State::addObject(ObjectPtr objectPtr) {
- unsigned mapId = objectPtr->getMapId();
- if (!loadMap(mapId)) return;
- maps[mapId].objects.push_back(objectPtr);
-}
-
-void State::removeObject(ObjectPtr objectPtr) {
- unsigned mapId = objectPtr->getMapId();
- std::map<unsigned, MapComposite>::iterator i = maps.find(mapId);
- if (i == maps.end()) return;
- for (Objects::iterator b = i->second.objects.begin(), end = i->second.objects.end();
- b != end; ++b) {
- if (b->get() == objectPtr.get()) {
- i->second.objects.erase(b);
- return;
- }
- }
-}
-
-} // namespace tmwserv
diff --git a/src/state.h b/src/state.h
index 2ebf8b1e..b9654f92 100644
--- a/src/state.h
+++ b/src/state.h
@@ -28,9 +28,7 @@
#include "being.h"
-namespace tmwserv
-{
- class Map;
+class Map;
/**
* Combined map/entity structure
@@ -47,14 +45,14 @@ struct MapComposite {
Map *map;
/**
- * Beings located on the map
+ * Objects (items, players, monsters, etc) located on the map
*/
- Beings beings;
+ Objects objects;
/**
- * Items located on the map
+ * Players located on the map
*/
- Objects objects;
+ Players players;
};
/**
@@ -78,19 +76,9 @@ class State
void update();
/**
- * Add being to game world at specified map
- */
- void addBeing(BeingPtr beingPtr);
-
- /**
- * Remove being from game world
+ * Send game state to given player
*/
- void removeBeing(BeingPtr beingPtr);
-
- /**
- * Send game state to given being
- */
- void informBeing(BeingPtr beingPtr);
+ void informPlayer(PlayerPtr playerPtr);
/**
* Load map into game world
@@ -108,8 +96,6 @@ class State
void removeObject(ObjectPtr objectPtr);
};
-} // namespace tmwserv
-
-extern tmwserv::State * gameState;
+extern State *gameState;
#endif
diff --git a/src/storage.cpp b/src/storage.cpp
index 0ba23616..ed31bad4 100644
--- a/src/storage.cpp
+++ b/src/storage.cpp
@@ -24,10 +24,6 @@
#include "dalstorage.h"
-namespace tmwserv
-{
-
-
// initialize the static attributes.
Storage* Storage::mInstance = 0;
std::string Storage::mName("");
@@ -148,6 +144,3 @@ Storage::getPassword(void) const
{
return mPassword;
}
-
-
-} // namespace tmwserv
diff --git a/src/storage.h b/src/storage.h
index eb410139..75cea54a 100644
--- a/src/storage.h
+++ b/src/storage.h
@@ -31,11 +31,6 @@
#include "account.h"
#include "chatchannel.h"
-
-namespace tmwserv
-{
-
-
/**
* Enumeration type for the account status:
*
@@ -367,7 +362,7 @@ class Storage
protected:
Accounts mAccounts; /**< list of accounts in memory */
- Beings mCharacters; /**< the loaded characters */
+ Players mCharacters; /**< the loaded characters */
bool mIsOpen; /**< flag is true if the storage is open */
@@ -378,8 +373,4 @@ class Storage
static std::string mPassword; /**< the user password */
};
-
-} // namespace tmwserv
-
-
#endif // _TMWSERV_STORAGE_H_
diff --git a/src/utils/cipher.cpp b/src/utils/cipher.cpp
index 6eda3ec5..083f6924 100644
--- a/src/utils/cipher.cpp
+++ b/src/utils/cipher.cpp
@@ -28,8 +28,6 @@
#include <openssl/evp.h>
#include <openssl/md5.h>
-namespace tmwserv
-{
namespace utils
{
@@ -95,4 +93,3 @@ Cipher::toHex(const unsigned char* str,
} // namespace utils
-} // namespace tmwserv
diff --git a/src/utils/cipher.h b/src/utils/cipher.h
index bfca4cb1..3dfb5ef2 100644
--- a/src/utils/cipher.h
+++ b/src/utils/cipher.h
@@ -28,9 +28,6 @@
#include "singleton.h"
-
-namespace tmwserv
-{
namespace utils
{
@@ -108,7 +105,5 @@ class Cipher: public Singleton<Cipher>
} // namespace utils
-} // namespace tmwserv
-
#endif // _TMWSERV_CIPHER_H_
diff --git a/src/utils/countedptr.h b/src/utils/countedptr.h
index f8dbcd51..3edc9c3d 100644
--- a/src/utils/countedptr.h
+++ b/src/utils/countedptr.h
@@ -24,9 +24,6 @@
#ifndef _TMWSERV_COUNTED_PTR_H_
#define _TMWSERV_COUNTED_PTR_H_
-
-namespace tmwserv
-{
namespace utils
{
@@ -84,6 +81,17 @@ class CountedPtr
++*count;
}
+ /**
+ * Copy pointer with static cast (one more owner).
+ */
+ template <typename U>
+ explicit CountedPtr(const CountedPtr<U>& p)
+ throw()
+ : ptr(static_cast<T*>(p.ptr)),
+ count(p.count)
+ {
+ ++*count;
+ }
/**
* Assignment (unshare old and share new value).
@@ -102,7 +110,6 @@ class CountedPtr
return *this;
}
-
/**
* Access the value to which the pointer refers.
*/
@@ -149,15 +156,12 @@ class CountedPtr
}
}
-
- private:
T* ptr; /**< pointer to the value */
long* count; /**< shared number of owners */
-};
+ template<typename U> friend class CountedPtr;
+};
} // namespace utils
-} // namespace tmwserv
-
#endif // _TMWSERV_COUNTED_PTR_H_
diff --git a/src/utils/logger.cpp b/src/utils/logger.cpp
index 93dd289b..36d43f80 100644
--- a/src/utils/logger.cpp
+++ b/src/utils/logger.cpp
@@ -30,9 +30,6 @@
#include <windows.h>
#endif
-
-namespace tmwserv
-{
namespace utils
{
@@ -290,4 +287,3 @@ Logger::getCurrentTime(void)
} // namespace utils
-} // namespace tmwserv
diff --git a/src/utils/logger.h b/src/utils/logger.h
index d3f0d1a6..e37f33af 100644
--- a/src/utils/logger.h
+++ b/src/utils/logger.h
@@ -30,9 +30,6 @@
#include "singleton.h"
-
-namespace tmwserv
-{
namespace utils
{
@@ -293,8 +290,6 @@ class Logger: public Singleton<Logger>
} // namespace utils
-} // namespace tmwserv
-
// HELPER MACROS
@@ -303,42 +298,42 @@ class Logger: public Singleton<Logger>
do { \
std::ostringstream os; \
os << msg; \
- ::tmwserv::utils::Logger::instance().log(os.str(), atVerbosity); \
+ ::utils::Logger::instance().log(os.str(), atVerbosity); \
} while(0)
#define LOG_DEBUG(msg, atVerbosity) \
do { \
std::ostringstream os; \
os << msg; \
- ::tmwserv::utils::Logger::instance().debug(os.str(), atVerbosity); \
+ ::utils::Logger::instance().debug(os.str(), atVerbosity); \
} while (0)
#define LOG_INFO(msg, atVerbosity) \
do { \
std::ostringstream os; \
os << msg; \
- ::tmwserv::utils::Logger::instance().info(os.str(), atVerbosity); \
+ ::utils::Logger::instance().info(os.str(), atVerbosity); \
} while (0)
#define LOG_WARN(msg, atVerbosity) \
do { \
std::ostringstream os; \
os << msg; \
- ::tmwserv::utils::Logger::instance().warn(os.str(), atVerbosity); \
+ ::utils::Logger::instance().warn(os.str(), atVerbosity); \
} while (0)
#define LOG_ERROR(msg, atVerbosity) \
do { \
std::ostringstream os; \
os << msg; \
- ::tmwserv::utils::Logger::instance().error(os.str(), atVerbosity); \
+ ::utils::Logger::instance().error(os.str(), atVerbosity); \
} while (0)
#define LOG_FATAL(msg, atVerbosity) \
do { \
std::ostringstream os; \
os << msg; \
- ::tmwserv::utils::Logger::instance().fatal(os.str(), atVerbosity); \
+ ::utils::Logger::instance().fatal(os.str(), atVerbosity); \
} while (0)
#endif // _TMWSERV_LOGGER_H_
diff --git a/src/utils/singleton.h b/src/utils/singleton.h
index 4b3589f3..92f6bebe 100644
--- a/src/utils/singleton.h
+++ b/src/utils/singleton.h
@@ -24,9 +24,6 @@
#ifndef _TMWSERV_SINGLETON_H_
#define _TMWSERV_SINGLETON_H_
-
-namespace tmwserv
-{
namespace utils
{
@@ -90,7 +87,5 @@ class Singleton
} // namespace utils
-} // namespace tmwserv
-
#endif // _TMWSERV_SINGLETON_H_
diff --git a/src/utils/stringfilter.cpp b/src/utils/stringfilter.cpp
index cbb075a4..79480838 100644
--- a/src/utils/stringfilter.cpp
+++ b/src/utils/stringfilter.cpp
@@ -27,8 +27,6 @@
#include "../configuration.h"
#include "../defines.h"
-namespace tmwserv
-{
namespace utils
{
@@ -129,4 +127,3 @@ bool StringFilter::findDoubleQuotes(const std::string& text)
}
} // ::utils
-} // ::tmwserv
diff --git a/src/utils/stringfilter.h b/src/utils/stringfilter.h
index e48faa31..5002ca1e 100644
--- a/src/utils/stringfilter.h
+++ b/src/utils/stringfilter.h
@@ -29,8 +29,6 @@
class Configuration;
-namespace tmwserv
-{
namespace utils
{
@@ -95,8 +93,7 @@ class StringFilter
};
} // ::utils
-} // ::tmwserv
-extern tmwserv::utils::StringFilter *stringFilter;
+extern utils::StringFilter *stringFilter;
#endif