]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/devel.cpp
Refactored playerGO a bit
[irc/gameservirc.git] / gameserv / devel.cpp
index 70e9fc799abfd2251632474a63bec4d6df1cde17..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,26 @@
 
 #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();
-void testitems();
 
 int main(int argc, char *argv[])
 {
@@ -123,15 +124,41 @@ int main(int argc, char *argv[])
       connected = 1;
       load_lastrefresh();
  
-    {
-      testitems();
-      item *tester = items.front();
-      cout << tester->getName() << endl;
-      item *tester2 = items.back();
-      cout << tester2->getName() << endl;
-      items.clear();
-    }
-
+         {
+           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;
+                         }
+                 }
+         
+         }
     {
       // This is where you can test stuff
       /*
@@ -172,31 +199,6 @@ int main(int argc, char *argv[])
     return 0;
 }
 
-void testitems()
-{
-      // This is where you can test stuff
-      string itemname;
-      item *tempitem;
-
-      cout << "Enter an item name: ";
-      cin >> itemname;
-      char num[16];
-      char *testing;
-      testing = new char[80];
-      strncpy(testing, "1~1~Stick~200~-1~15~0~0~0", 80);
-      for (int x = 1; x < 6000001; x++)
-       {
-         sprintf(num, "%d", x);
-         tempitem = new weapon("blah");
-         if (!tempitem->setData(testing))
-           {
-             cout << "Error in setData()" << endl;
-             break;
-           }
-         items.push_back(tempitem);
-       }
-}
-    
 aClient *find(char *nick)
 {
   return findbynick(nick);
@@ -211,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();
   
@@ -239,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;