X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/e3c5fe465a2a79b9a304d630ab5bdf8e8eddb96a..bf3a2ff9053b30a0ef85efcdb511c796b4718a3e:/gameserv/player.cpp diff --git a/gameserv/player.cpp b/gameserv/player.cpp index dccb879..dc4d5b6 100644 --- a/gameserv/player.cpp +++ b/gameserv/player.cpp @@ -1,14 +1,14 @@ #include "player.h" +#include "pouch.h" +#include "extern.h" +#include "flags.h" #include #include void Player::reset() { - delete this; - name = new char[64]; - password = new char[256]; - name[0] = '\0'; - password[0] = '\0'; + memset(name, 0, 256); + memset(password, 0, 256); exp = 1; gold = 0; @@ -20,50 +20,89 @@ void Player::reset() armor = 1; weapon = 1; level = 1; - alive = 1; - started = 1; // Possibly deprecated - forest_fights = 100; + forest_fights = forestfights; player_fights = 3; fight = NULL; master = NULL; battle = NULL; + flags = 0; + lastcommand = 0; + lastlogin = 0; + setAlive(this); + inventory.reset(); +} + +Player::Player() +{ + name = new char[256]; + password = new char[256]; + setData(NULL); + + #ifdef DEBUGMODE + log("New Player: %s", name); + #endif } Player::Player(aClient *user) { + name = new char[256]; + password = new char[256]; + if (user) { - if (user->stats) - setData(user->stats); - else - reset(); // Set Defaults - - strcpy(name, user->getNick()); + setData(user->stats); + strcpy(name, user->getNick()); } else - { - reset(); // Set default properties - int num = rand() % 32767; - sprintf(name, "Player%d", num); - } - cout << "New Player: " << name << endl << flush; + setData(NULL); + } + Player::Player(char *n) { + name = new char[256]; + password = new char[256]; + reset(); // Set defaults strcpy(name, n); - cout << "New Player: " << name << endl << flush; + #ifdef DEBUGMODE + log("New Player: %s", name); + #endif } Player::~Player() -{ - if (name) - delete name; - if (password) - delete password; +{ + #ifdef DEBUGMODE + char *output; + output = new char[strlen(name) + strlen(password) + 48]; + strcpy(output, "Deleting Player"); + #endif + + if (name != NULL) + { + #ifdef DEBUGMODE + sprintf(output, "%s: %s", output, name); + #endif + + delete [] name; + } + + if (password != NULL) + { + #ifdef DEBUGMODE + sprintf(output, "%s Password: %s", output, password); + #endif + + delete [] password; + } + + #ifdef DEBUGMODE + log ("%s", output); + delete [] output; + #endif } void Player::setData(Player *right) @@ -71,8 +110,7 @@ void Player::setData(Player *right) if (right) { strcpy(name, right->name); - strcpy(password, right->password); - + strcpy(password, right->password); exp = right->exp; gold = right->gold; bank = right->bank; @@ -83,34 +121,100 @@ void Player::setData(Player *right) armor = right->armor; weapon = right->weapon; level = right->level; - alive = right->alive; - started = right->started; // Possibly obsoleted forest_fights = right->forest_fights; player_fights = right->player_fights; - cout << "Setting Player data for " << right->name << endl; + flags = right->flags; + inventory.setInventory(&right->inventory); + client = right->client; + lastcommand = right->lastcommand; + lastlogin = right->lastlogin; } + else + { + reset(); + client = NULL; + int num = rand() % 32767; + sprintf(name, "Player%d", num); + } + + #ifdef DEBUGMODE + log("Setting Player data for %s", name); + #endif } -const Player &Player::operator=( const Player &right ) +monster_::~monster_() { - if (&right != this) - { - strcpy(name, right.name); - strcpy(password, right.password); - exp = right.exp; - gold = right.gold; - bank = right.bank; - hp = right.hp; - maxhp = right.maxhp; - strength = right.strength; - defense = right.defense; - armor = right.armor; - weapon = right.weapon; - level = right.level; - alive = right.alive; - started = right.started; // Possibly obsoleted - forest_fights = right.forest_fights; - player_fights = right.player_fights; - } - return *this; // Enables Cascading ( x = y = z;) + delete name; + delete weapon; + delete death; +} + +monster_::monster_() +{ + name = new char[64]; + weapon = new char[64]; + death = new char[512]; + + memset(name, 0, 64); + memset(weapon, 0, 64); + memset(death, 0, 512); +} + +monster_::monster_(monster_ *m) +{ + name = new char[strlen(m->name) + 1]; + weapon = new char[strlen(m->weapon) + 1]; + death = new char[strlen(m->death) + 1]; + + strcpy(name, m->name); + strcpy(weapon, m->weapon); + strcpy(death, m->death); + + strength = m->strength; + maxhp = m->maxhp; + hp = m->hp; + gold = m->gold; + exp = m->exp; +} + +monster_::monster_(monster_ &m) +{ + name = new char[strlen(m.name) + 1]; + weapon = new char[strlen(m.weapon) + 1]; + death = new char[strlen(m.death) + 1]; + + strcpy(name, m.name); + strcpy(weapon, m.weapon); + strcpy(death, m.death); + + strength = m.strength; + maxhp = m.maxhp; + hp = m.hp; + gold = m.gold; + exp = m.exp; +} + +long int Player::setFlags(long int newflags) +{ + flags = newflags; + return getFlags(); +} + +long int Player::addFlag(long int flag) +{ + flags |= flag; + return getFlags(); +} + +long int Player::remFlag(long int flag) +{ + flags &= ~flag; + return getFlags(); +} + +Pouch::Pouch(int h, int s, int d) +{ + setHealing(h); + setStrength(s); + setDefense(d); }