/[fgs]/fgs/src/roomproc.cc
ViewVC logotype

Diff of /fgs/src/roomproc.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by drysdam, Sat Sep 6 00:15:17 2003 UTC revision 1.7 by drysdam, Sat Sep 6 13:20:15 2003 UTC
# Line 108  enum RoomCode Line 108  enum RoomCode
108    MakeGameOffer = 12,    MakeGameOffer = 12,
109    GameOffer = 13,    GameOffer = 13,
110    DoDeclineGame = 14,    DoDeclineGame = 14,
111    DeclineGame = 15    DeclineGame = 15,
112      ListMembers = 16,
113      ListAdmins = 17,
114      ListSilenced = 18,
115      ListBanned = 19
116  };  };
117    
118  struct room  struct room
# Line 180  int rooms_init() Line 184  int rooms_init()
184    
185        rm.name = roomname;        rm.name = roomname;
186    
187          in >> std::skipws >> member >> comma;
188        while(in.good()) {        while(in.good()) {
         in >> std::skipws >> member >> comma;  
189          rm.members.push_back(member);          rm.members.push_back(member);
190            /*
191          std::cout << member;          std::cout << member;
192          std::cout << "\n";          std::cout << "\n";
193          std::cout.flush();          std::cout.flush();
194            */
195          if(comma == ';') break;          if(comma == ';') break;
196            in >> std::skipws >> member >> comma;
197        }        }
198    
199          in >> std::skipws >> admin >> comma;
200        while(in.good()) {        while(in.good()) {
         in >> std::skipws >> admin >> comma;  
201          rm.admins.push_back(admin);          rm.admins.push_back(admin);
         std::cout << admin;  
         std::cout << "\n";  
         std::cout.flush();  
202          if(comma == ';') break;          if(comma == ';') break;
203            in >> std::skipws >> admin >> comma;
204        }        }
205    
206          in >> std::skipws >> silenced >> comma;
207        while(in.good()) {        while(in.good()) {
         in >> std::skipws >> silenced >> comma;  
208          rm.silenced.push_back(silenced);          rm.silenced.push_back(silenced);
         std::cout << silenced;  
         std::cout << "\n";  
         std::cout.flush();  
209          if(comma == ';') break;          if(comma == ';') break;
210            in >> std::skipws >> silenced >> comma;
211        }        }
212    
213          in >> std::skipws >> banned >> comma;
214        while(in.good()) {        while(in.good()) {
         in >> std::skipws >> banned >> comma;  
215          rm.banned.push_back(banned);          rm.banned.push_back(banned);
         std::cout << banned;  
         std::cout << "\n";  
         std::cout.flush();  
216          if(comma == ';') break;          if(comma == ';') break;
217            in >> std::skipws >> banned >> comma;
218        }        }
219    
220        rarray.insert(std::pair<int, room>(r, rm));        rarray.insert(std::pair<int, room>(r, rm));
# Line 459  int com_roomlistoccupants(int p, param_l Line 460  int com_roomlistoccupants(int p, param_l
460    }    }
461    
462    return COM_OK;    return COM_OK;
463    }
464    
465    /* These four commands, particularly the silenced
466       and banned lists, should probably fall under
467       gov't policy rules.  Imagine the fun of a
468       police stateroom where you don't even know who
469       has been...eliminated.  (Gosh, what does that
470       remind me of?)
471    */
472    int com_roomlistmembers(int p, param_list param)
473    {
474      int r = param[0].val.integer;
475      char login[MAX_NAME];
476      
477      // lookup room
478      std::map<int, room>::iterator rmi = rarray.find(r);
479      if(rmi == rarray.end()) return COM_NOSUCHROOM;
480      room& rm = rmi->second;
481    
482      //remember that we are storing UIDs, not parray
483      //indices here!
484      for(std::vector<int>::iterator i = rm.members.begin();
485          i != rm.members.end(); ++i) {
486        if(find_name(*i, login) != 0) return COM_NOTIFYADMIN;
487        std::string s = login;
488        s += "\n";
489        ReplyOccupant(r, p, ROOM + ListMembers, s);
490      }
491    
492      return COM_OK;
493    }
494    
495    int com_roomlistadmins(int p, param_list param)
496    {
497      int r = param[0].val.integer;
498      char login[MAX_NAME];
499      
500      // lookup room
501      std::map<int, room>::iterator rmi = rarray.find(r);
502      if(rmi == rarray.end()) return COM_NOSUCHROOM;
503      room& rm = rmi->second;
504    
505      //remember that we are storing UIDs, not parray
506      //indices here!
507      for(std::vector<int>::iterator i = rm.admins.begin();
508          i != rm.admins.end(); ++i) {
509        if(find_name(*i, login) != 0) return COM_NOTIFYADMIN;
510        std::string s = login;
511        s += "\n";
512        ReplyOccupant(r, p, ROOM + ListAdmins, s);
513      }
514    
515      return COM_OK;
516    }
517    
518    int com_roomlistsilenced(int p, param_list param)
519    {
520      int r = param[0].val.integer;
521      char login[MAX_NAME];
522      
523      // lookup room
524      std::map<int, room>::iterator rmi = rarray.find(r);
525      if(rmi == rarray.end()) return COM_NOSUCHROOM;
526      room& rm = rmi->second;
527    
528      //remember that we are storing UIDs, not parray
529      //indices here!
530      for(std::vector<int>::iterator i = rm.silenced.begin();
531          i != rm.silenced.end(); ++i) {
532        if(find_name(*i, login) != 0) return COM_NOTIFYADMIN;
533        std::string s = login;
534        s += "\n";
535        ReplyOccupant(r, p, ROOM + ListSilenced, s);
536      }
537    
538      return COM_OK;
539    }
540    
541    int com_roomlistbanned(int p, param_list param)
542    {
543      int r = param[0].val.integer;
544      char login[MAX_NAME];
545      
546      // lookup room
547      std::map<int, room>::iterator rmi = rarray.find(r);
548      if(rmi == rarray.end()) return COM_NOSUCHROOM;
549      room& rm = rmi->second;
550    
551      //remember that we are storing UIDs, not parray
552      //indices here!
553      for(std::vector<int>::iterator i = rm.banned.begin();
554          i != rm.banned.end(); ++i) {
555        if(find_name(*i, login) != 0) return COM_NOTIFYADMIN;
556        std::string s = login;
557        s += "\n";
558        ReplyOccupant(r, p, ROOM + ListBanned, s);
559      }
560    
561      return COM_OK;
562  }  }
563    
564  int com_roomlistrooms(int p, param_list param){  int com_roomlistrooms(int p, param_list param){

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26