]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/player.cpp
Working on doing the identify/register scheme. Right now, there are problems with...
[irc/gameservirc.git] / gameserv / player.cpp
index 5dbf6d5ce362b2cbf5da7e46a902cbc498e8d89e..dccb8791d1aa7d04d632ae5427c1f60e8615e2ff 100644 (file)
@@ -2,9 +2,13 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-Player::Player(aClient *user)
+void Player::reset()
 {
-    name = new char [64];
+    delete this;
+    name = new char[64];
+    password = new char[256];
+    name[0] = '\0';
+    password[0] = '\0';
 
     exp = 1;
     gold = 0;
@@ -23,11 +27,23 @@ Player::Player(aClient *user)
     fight = NULL;
     master = NULL;
     battle = NULL;
+}
+
+Player::Player(aClient *user)
+{
 
     if (user)
-       strcpy(name, user->getNick());
+    {
+       if (user->stats)
+           setData(user->stats);
+       else
+           reset(); // Set Defaults
+       strcpy(name, user->getNick());
+    }
     else
     {
+       reset(); // Set default properties
        int num = rand() % 32767;
        sprintf(name, "Player%d", num);
     }
@@ -35,38 +51,28 @@ Player::Player(aClient *user)
 }
 Player::Player(char *n)
 {
-    name = new char [64];
+    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;   }
+{    
+    if (name)
+       delete name;
+    if (password)
+       delete password;
+}
 
 void Player::setData(Player *right)
 {
     if (right)
     {
         strcpy(name, right->name);
+       strcpy(password, right->password);
+
         exp = right->exp;
         gold = right->gold;
         bank = right->bank;
@@ -90,6 +96,7 @@ const Player &Player::operator=( const Player &right )
     if (&right != this)
     {
        strcpy(name, right.name);
+       strcpy(password, right.password);
        exp = right.exp;
        gold = right.gold;
        bank = right.bank;