]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/player.cpp
* Added some admin features.
[irc/gameservirc.git] / gameserv / player.cpp
index 5dbf6d5ce362b2cbf5da7e46a902cbc498e8d89e..8c26d60eef15580572b9ffff9076e9c029cc2bec 100644 (file)
@@ -2,9 +2,10 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-Player::Player(aClient *user)
+void Player::reset()
 {
-    name = new char [64];
+    memset(name, 0, 255);
+    memset(password, 0, 255);
 
     exp = 1;
     gold = 0;
@@ -23,50 +24,60 @@ Player::Player(aClient *user)
     fight = NULL;
     master = NULL;
     battle = NULL;
+}
+
+Player::Player(aClient *user)
+{
+
+    name = new char[256];
+    password = new char[256];
 
     if (user)
-       strcpy(name, user->getNick());
-    else
     {
-       int num = rand() % 32767;
-       sprintf(name, "Player%d", num);
+       setData(user->stats);
+       strcpy(name, user->getNick());
     }
+    else
+       setData(NULL);
+
     cout << "New Player: " << name << endl << flush;
 }
+
 Player::Player(char *n)
 {
-    name = new char [64];
+    name = new char[256];
+    password = new char[256];
+
+    reset(); // Set defaults
 
-    exp = 1;
-    gold = 0;
-    bank = 500;
-    hp = 10;
-    maxhp = 10;
-    strength = 0;
-    defense = 0;
-    armor = 1;
-    weapon = 1;
-    level = 1;
-    alive = 1;
-    started = 1; // Possibly deprecated
-    forest_fights = 100;
-    player_fights = 3;
-    fight = NULL;
-    master = NULL;
-    battle = NULL;
     strcpy(name, n);
 
     cout << "New Player: " << name << endl << flush;
 }
 
 Player::~Player()
-{    delete name;   }
+{    
+    cout << "Deleting player";
+
+    if (name)
+    {
+       cout << ": " << name;
+       delete [] name;
+    }
+    if (password)
+    {
+       cout << "   Password: " << password;
+       delete [] password;
+    }
+    cout << endl << "Player Deleted";
+}
 
 void Player::setData(Player *right)
 {
     if (right)
     {
         strcpy(name, right->name);
+        strcpy(password, right->password);
         exp = right->exp;
         gold = right->gold;
         bank = right->bank;
@@ -81,29 +92,49 @@ void Player::setData(Player *right)
         started = right->started; // Possibly obsoleted
         forest_fights = right->forest_fights;
         player_fights = right->player_fights;
-       cout << "Setting Player data for " << right->name << endl;
     }
+    else
+    {
+        reset();
+
+       int num = rand() % 32767;
+       sprintf(name, "Player%d", num);
+    }
+
+    cout << "Setting Player data for " << name << endl;
 }
 
-const Player &Player::operator=( const Player &right )
+monster_::~monster_()
 {
-    if (&right != this)
-    {
-       strcpy(name, right.name);
-       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[32];
+    weapon = new char[32];
+    death = new char[256];
+
+    memset(name, 0, 32);
+    memset(weapon, 0, 32);
+    memset(death, 0, 256);
+}
+
+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;
 }