Planeshift
groupmanager.h
Go to the documentation of this file.
1 /*
2  * groupmanager.h by Anders Reggestad <andersr@pvv.org>
3  *
4  * Copyright (C) 2001 Atomic Blue (info@planeshift.it, http://www.atomicblue.org)
5  *
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation (version 2 of the License)
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17  *
18  */
19 #ifndef __GROUPMANAGER_H__
20 #define __GROUPMANAGER_H__
21 
22 //=============================================================================
23 // Crystal Space Includes
24 //=============================================================================
25 #include <csutil/ref.h>
26 #include <csutil/refarr.h>
27 #include <csutil/array.h>
28 
29 //=============================================================================
30 // Project Includes
31 //=============================================================================
32 
33 //=============================================================================
34 // Local Includes
35 //=============================================================================
36 #include "msgmanager.h" // Subscriber class
37 #include "playergroup.h"
38 
39 class gemActor;
40 class GroupManager;
41 class Client;
42 class ChatManager;
44 
45 //---------------------------------------------------------------------------
46 
47 
48 //---------------------------------------------------------------------------
49 class PendingGroupInvite;
50 class PendingGroupChallenge;
51 
56 class GroupManager : public MessageManager<GroupManager>
57 {
58 public:
59 
61  virtual ~GroupManager();
62 
63  void HandleJoinGroup(PendingGroupInvite* invite);
64 
70  void HandleChallengeGroup(PendingGroupChallenge* invite);
71 
72 protected:
73  friend class PlayerGroup;
74 
75  void HandleGroupCommand(MsgEntry* pMsg,Client* client);
76 
77  void Invite(psGroupCmdMessage &msg,Client* client);
78  void Disband(psGroupCmdMessage &msg,gemActor* client);
79  void Leave(psGroupCmdMessage &msg,gemActor* client);
80  void ListMembers(psGroupCmdMessage &msg,gemActor* client);
82  void Leader(psGroupCmdMessage &msg,gemActor* client);
83 
90  void Challenge(psGroupCmdMessage &msg,Client* Challenger);
97  void Yield(psGroupCmdMessage &msg,Client* Yielder);
98 
104  bool AddGroupChallenge(PlayerGroup* ChallengerGroup, PlayerGroup* ChallengedGroup);
105 
106  void SendGroup(gemActor* client);
107  void SendLeave(gemActor* client);
108  csPtr<PlayerGroup> NewGroup(gemActor* leader);
109  bool AddPlayerToGroup(PlayerGroup* group, gemActor* client);
110  void Remove(PlayerGroup* group);
111  void GroupChat(gemActor* client, const char* fmt, ...);
112  PlayerGroup* FindGroup(int id);
113 
114 
117  csRef<EventManager> eventmanager;
118  csRefArray<PlayerGroup> groups;
119 };
120 
121 #endif
void Yield(psGroupCmdMessage &msg, Client *Yielder)
Handles /groupyield and yields to all the group in duel with the one requesting it after checking all...
csRefArray< PlayerGroup > groups
Definition: groupmanager.h:118
void HandleChallengeGroup(PendingGroupChallenge *invite)
Handles the answer to the request of challenge.
bool AddGroupChallenge(PlayerGroup *ChallengerGroup, PlayerGroup *ChallengedGroup)
Makes two group be in challenge each other.
void Invite(psGroupCmdMessage &msg, Client *client)
void Leave(psGroupCmdMessage &msg, gemActor *client)
void Disband(psGroupCmdMessage &msg, gemActor *client)
csPtr< PlayerGroup > NewGroup(gemActor *leader)
virtual ~GroupManager()
The structure of 1 queue entry (pointer to a message)
Definition: message.h:143
void Remove(PlayerGroup *group)
void HandleGroupCommand(MsgEntry *pMsg, Client *client)
Main PlayerGroup Manager that holds all the groups.
Definition: groupmanager.h:56
void Leader(psGroupCmdMessage &msg, gemActor *client)
void SendGroup(gemActor *client)
void Challenge(psGroupCmdMessage &msg, Client *Challenger)
Handles /groupchallenge and challenges another group after checking all requirements are in order...
void RemovePlayerFromGroup(psGroupCmdMessage &msg, gemActor *client)
GroupManager(ClientConnectionSet *pCCS, ChatManager *chat)
bool AddPlayerToGroup(PlayerGroup *group, gemActor *client)
Any semi-autonomous object, either a player or an NPC.
Definition: gem.h:1170
void SendLeave(gemActor *client)
csRef< EventManager > eventmanager
Definition: groupmanager.h:117
An existing group.
Definition: playergroup.h:36
This class collects data of a netclient.
Definition: client.h:95
void ListMembers(psGroupCmdMessage &msg, gemActor *client)
This class is a list of several CLient objects, it&#39;s designed for finding clients very fast based on ...
Definition: clients.h:58
ClientConnectionSet * clients
Definition: groupmanager.h:116
PlayerGroup * FindGroup(int id)
void HandleJoinGroup(PendingGroupInvite *invite)
ChatManager * chatserver
Definition: groupmanager.h:115
Group commands.
Definition: messages.h:1223
void GroupChat(gemActor *client, const char *fmt,...)
Provides a manager to facilitate subscriptions.
Definition: msgmanager.h:106