]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/devel.cpp
Refactored playerGO a bit
[irc/gameservirc.git] / gameserv / devel.cpp
index e852dc715bf8b49d5c7cb630ce8ea8c22afd9c33..4a53046a5bddb6c1382cd1d68e0592a6379e7caf 100644 (file)
@@ -1,5 +1,4 @@
 #include "options.h"
-#include "list.h"
 #include "aClient.h"
 #include "extern.h"
 #include "flags.h"
@@ -9,24 +8,27 @@
 
 #include <fstream>
 #include <iostream>
+#include <list>
+#include <algorithm>
 
 int sock = 1;
 
 using namespace std;
 
 char *PACKAGE = "GameServ";
-char *VERSION = "1.2.6 +devel";
+char *VERSION = "1.3.2 +devel";
 
 long lastrefresh;
+long lastrollover;
 
-List<aClient> clients[U_TABLE_SIZE];
+list<aClient*> clients[U_TABLE_SIZE];
+list <item*> items;
 
 void save_lastrefresh();
 void load_lastrefresh();
 void prettyIntro();
 void check_idles();
 
-
 int main(int argc, char *argv[])
 {
     char buffer[1024], buf[1024];
@@ -119,38 +121,66 @@ int main(int argc, char *argv[])
     }
 
  // This loop will retry the connection 3 times
+      connected = 1;
+      load_lastrefresh();
  
-    connected = 1;
-    load_lastrefresh();
-
+         {
+           aClient *tempPtr, *tempPtr2;
+
+               list<aClient*>::iterator iter;
+               char *nick = "testing";
+               unsigned long hv = iHASH((unsigned char *) nick);
+               tempPtr = new aClient(nick);
+               tempPtr2 = new aClient("testing2");
+
+               tempPtr->stats = new Player;
+               clients[hv].push_back(tempPtr);
+               clients[hv].push_back(tempPtr);
+               clients[hv].push_back(tempPtr);
+               clients[hv].push_back(tempPtr);
+               clients[hv].push_back(tempPtr2);
+               clients[hv].push_back(tempPtr2);
+               clients[hv].push_back(tempPtr2);
+               delete tempPtr->stats;
+               
+               
+               tempPtr = find(nick);
+
+               
+               //iter = find((clients[0].begin()), (clients[0].end()), tempPtr);
+               //              cout << "Nick: " << (*iter)->getNick() << endl;
+               clients[hv].remove(tempPtr);
+               for (unsigned long x = 0; x < U_TABLE_SIZE; x++)
+                 {
+                       for (iter = clients[x].begin(); iter != clients[x].end(); iter++)
+                         {
+                               cout << (*iter)->getNick() << endl;
+                         }
+                 }
+         
+         }
     {
-      string playername;
-      Player *p;
-      
-      cout << "Enter an name: ";
-      cin >> playername;
-      p = new Player(playername);
-      
-      cout << "You entered: " << p->name << endl;
-      item *testitem, *tempitem;
-      weapon *testweapon;
-      cout << "Enter a weapon name: ";
-      cin >> playername;
-      testitem = new weapon(playername);
-      testweapon = new weapon(playername, 10000);
-
-      cout << "You entered: " << testitem->getName() << endl;
-      cout << "Adding the item to your inventory" << endl;
-      p->inventory->addItem(testitem);
-
-      tempitem = p->inventory->Find(playername);
-      cout << "Name: " << tempitem->getName() << endl;
-      tempitem = p->inventory->Find(playername);
-      cout << "Name: " << tempitem->getName() << endl;
-      cout << "Testitem: " << &testitem << " Tempitem: " << &tempitem << endl;
-      
-
-      delete p;
+      // This is where you can test stuff
+      /*
+       string itemname;
+       item *tempitem;
+       
+       cout << "Enter an item name: ";
+       cin >> itemname;
+       char num[16];
+       for (int x = 1; x < 6000001; x++)
+       {
+       sprintf(num, "%d", x);
+       tempitem = new weapon((itemname + num));
+       items.push_back(tempitem);
+       }
+       
+       item *tester = items.front();
+       cout << tester->getName() << endl;
+       item *tester2 = items.back();
+       cout << tester2->getName() << endl;
+       items.clear();
+      */
     }
 
  end:    
@@ -168,7 +198,7 @@ int main(int argc, char *argv[])
     unload_config_file();
     return 0;
 }
-    
+
 aClient *find(char *nick)
 {
   return findbynick(nick);
@@ -183,7 +213,7 @@ aClient *find(const char *nick)
 
 aClient *findbyrealnick(char *realnick)
 {
-  ListNode <aClient> *newPtr;
+  ListNode <aClient*> *newPtr;
   unsigned long hv = sHASH((unsigned char *) realnick);
   newPtr = clients[hv].First();
   
@@ -211,139 +241,140 @@ aClient *findbyrealnick(char *realnick)
 
 aClient *findbynick(char *nick)
 {
-  ListNode <aClient> *newPtr;
+  list<aClient*>::iterator iter;
 #ifdef P10
   unsigned long hv = sHASH((unsigned char *) nick);
 #else
   unsigned long hv = iHASH((unsigned char *) nick);
 #endif
   
-  newPtr = clients[hv].First();
-  
   aClient *client = NULL;
   
-  while (newPtr)
-    {
-      client = newPtr->getData();
+  for(iter = clients[hv].begin(); iter != clients[hv].end(); iter++)
+       {
+         client = (*iter);
 #ifdef P10
-      if (strcmp(client->getNick(), nick) == 0)
+         if (strcmp(client->getNick(), nick) == 0)
+               {
 #else
-       if (stricmp(client->getNick(), nick) == 0)
+         if (stricmp(client->getNick(), nick) == 0)
+               {
 #endif
-         return client;
-      client = NULL;
-      newPtr = newPtr->Next();
-    }
-  return client;    
+                 return client;
+               }
+         client = NULL;
+       }
+  return client;
 }
-
+  
 aClient *findIRCplayer(const char *nick)
 {
-  ListNode <aClient> *newPtr;
+  list<aClient*>::iterator iter;
   aClient *p = NULL;
   
   p = find(nick);
   
   if (!is_playing(p))
-    return NULL;
+       return NULL;
   
-  unsigned long hv = iHASH((unsigned char *) p->stats->name.c_str());
+  unsigned long hv = iHASH((unsigned char *) p->stats->getName().c_str());
   
-  for (newPtr = players[hv].First(); newPtr; newPtr = newPtr->Next())
-    {
-      p = newPtr->getData();
+  for (iter = players[hv].begin(); iter != players[hv].end(); iter++)
+       {
+         p = (*iter);
 #ifdef P10
-      if (strcmp(p->getNick(), nick) == 0)
+         if (strcmp(p->getNick(), nick) == 0)
+               {
 #else
-       if (stricmp(p->getNick(), nick) == 0)
+         if (stricmp(p->getNick(), nick) == 0)
+               {
 #endif
-         return p;
-      p = NULL;
-    }
-  return NULL;
-}
-
-aClient *findplayer(const char *name)
-{
-  ListNode <aClient> *newPtr;
-  Player *p = NULL;
-  unsigned long hv = iHASH((unsigned char *) name);
-  for (newPtr = players[hv].First(); newPtr; newPtr = newPtr->Next())
-    {
-      p = newPtr->getData()->stats;
-      if (stricmp(p->name.c_str(), name) == 0)
-       return newPtr->getData();
-      p = NULL;
-    }
+                 return p;
+               }
+         p = NULL;
+       }
   return NULL;
 }
-
-void check_idles()
-{
-  ListNode <aClient> *newPtr;
-  Player *p = NULL;
-  
-  for (int x = 0; x < U_TABLE_SIZE; x++)
-    {
-      for (newPtr = players[x].First(); newPtr; newPtr = newPtr->Next())
+  aClient *findplayer(const char *name)
        {
-         p = newPtr->getData()->stats;
-         switch(p->level)
-           {
-           case 1:
-             if ((time(NULL) - p->lastlogin) / 86400 >= level1expire)
+         list<aClient*>::iterator iter;
+         Player *p = NULL;
+         unsigned long hv = iHASH((unsigned char *) name);
+         for (iter = players[hv].begin(); iter != players[hv].end(); iter++)
                {
-                 logout(newPtr->getData());
-                 players[x].remove(newPtr->getData());
-                 return;
+                 p = (*iter)->stats;
+                 if (stricmp(p->getName().c_str(), name) == 0)
+                       return (*iter);
+                 p = NULL;
                }
-             break;
-             
-           default:
-             if ((time(NULL) - p->lastlogin) / 86400 >= defaultexpire)
+         return NULL;
+       }
+  
+  void check_idles()
+       {
+         list<aClient*>::iterator iter;
+
+         Player *p = NULL;
+
+         for (int x = 0; x < U_TABLE_SIZE; x++)
                {
-                 logout(newPtr->getData());
-                 players[x].remove(newPtr->getData());
-                 return;
+                 for (iter = players[x].begin(); iter != players[x].end(); iter++)
+                       {
+                         p = (*iter)->stats;
+
+                         switch(p->getLevel())
+                               {
+                               case 1:
+                                 if ((time(NULL) - p->lastlogin) / 86400 >= level1expire)
+                                       {
+                                         logout((*iter));
+                                         players[x].remove((*iter));
+                                         return;
+                                       }
+                                 break;
+
+                               default:
+                                 if ((time(NULL) - p->lastlogin) / 86400 >= defaultexpire)
+                                       {
+                                         logout((*iter));
+                                         players[x].remove((*iter));
+                                         return;
+                                       }
+                                 break;
+                               }
+                         if (timedOut(p))
+                               {
+                                 timeOutEvent(p);
+                               }
+                       }
                }
-             break;
-           }
-         if (timedOut(p))
-           {
-             timeOutEvent(p);
-           }
        }
-    }
-}
-
-aClient *findbynick(const char *nick)
-{
-  ListNode <aClient> *newPtr;
+  
+  aClient *findbynick(const char *nick)
+       {
+         list<aClient*>::iterator iter;
 #ifdef P10
-  unsigned long hv = sHASH((unsigned char *) nick);
+         unsigned long hv = sHASH((unsigned char *) nick);
 #else
-  unsigned long hv = iHASH((unsigned char *) nick);
+         unsigned long hv = iHASH((unsigned char *) nick);
 #endif
-  
-  newPtr = clients[hv].First();
-  
-  aClient *client = NULL;
-  
-  while (newPtr)
-    {
-      client = newPtr->getData();
+
+         aClient *client = NULL;
+
+         for (iter = clients[hv].begin(); iter != clients[hv].end(); iter++)
+               {
+                 client = (*iter);
 #ifdef P10
-      if (strcmp(client->getNick(), nick) == 0)
+                 if (strcmp(client->getNick(), nick) == 0)
 #else
-       if (stricmp(client->getNick(), nick) == 0)
+                       if (stricmp(client->getNick(), nick) == 0)
 #endif
+                         return client;
+                 client = NULL;
+               }
          return client;
-      client = NULL;
-      newPtr = newPtr->Next();
-    }
-  return client;    
-}
-
+       }
+  
 void prettyIntro()
 {
   cout << endl;