# Source: GGZCoreRoom.h |
Annotated List
Files
Globals
Hierarchy
Index

    /////////////////////////////////////////////////////////////////////
    //                                                                 ///
    // GGZCore++ - C++ API wrapper for the ggzcore library              ///
    // Copyright (C) 2001, 2002 Josef Spillner                           ///
    // dr_maux@users.sourceforge.net                                      ///
    // The MindX Open Source Project                                      ///
    // http://mindx.sourceforge.net/                                     ///
    //                                                                  ///
    // This library may be distributed under the terms of the GNU GPL. ///
    //                                                                ///
    ////////////////////////////////////////////////////////////////////

    ///// GGZ Room ///////////////////////////////////////////////////

    #ifndef GGZROOM_H
    #define GGZROOM_H

    #include
    #include
    #include
    #include

    /**
    * A GGZCoreRoom stands for a room on a server, which is connected to a
    * certain game type.
    */

    class GGZCoreRoom
    {
    	public:
    		/**
    		 * Possible events which can occur when entering rooms and staying in them. */
    		enum GGZCoreRoomEvent
    		{
    			playerlist,
    			tablelist,
    			chatnormal,
    			chatannounce,
    			chatprivate,
    			chatbeep,
    			enter,
    			leave,
    			tableupdate,
    			tablelaunched,
    			tablelaunchfail,
    			tablejoined,
    			tablejoinfail,
    			tableleft,
    			tableleavefail,
    			tabledata
    		};

    		/**
    		 * Constructor */
    		GGZCoreRoom();
    		/**
    		 * Constructor, overloaded to assign an existant room. */
    		GGZCoreRoom(GGZRoom* room);
    		/**
    		 * Destructor */
    		~GGZCoreRoom();

    		/**
    		 * Add a simple callback to the room. */
    		int addHook(const GGZCoreRoomEvent event, const GGZHookFunc func);
    		/**
    		 * Add a callback with arguments. */
    		int addHook(const GGZCoreRoomEvent event, const GGZHookFunc func, void* data);

    		/**
    		 * Remove a callback from the room. */
    		int removeHook(const GGZCoreRoomEvent event, const GGZHookFunc func);
    		/**
    		 * Overloaded: Remove a callback on its id. */
    		int removeHook(const GGZCoreRoomEvent event, const unsigned int id);

    		/**
    		 * Initialize a room with the required information. */
    		int init(const GGZServer* server, const unsigned int id, const char* name, const unsigned int game, const char* description, const char *category);

    		/**
    		 * Return the name of the room. */
    		char* name();
    		/**
    		 * Return its description. */
    		char* description();
    		/**
    		 * Return its category */
    		char* category();
    		/**
    		 * Return the associated game type. */
    		GGZCoreGametype* gametype();

    		/**
    		 * Return the number of players in this room. */
    		int countPlayers();
    		/**
    		 * Return specified player. */
    		GGZPlayer* player(const unsigned int number);

    		/**
    		 * Count number of launched tables. */
    		int countTables();
    		/**
    		 * Return the specified table. */
    		GGZCoreTable* table(const unsigned int number);
    		/**
    		 * Launch a table */
    		int launchTable(GGZTable* table);
    		/**
    		 * Join an already launched table. */
    		int joinTable(const unsigned int number);
    		/**
    		 * Leave a table again. */
    		int leaveTable();

    		/**
    		 * Invoke player listing. */
    		int listPlayers();
    		/**
    		 * Invoke tables listing. */
    		int listTables(const int type, const char global);

    		/**
    		 * Send a chat message to the other players. */
    		int chat(const GGZChatOp opcode, const char* player, const char* message);
    		/**
    		 * Send other data. */
    		int sendData(char* buffer);

    		/**
    		 * Return the internal GGZRoom structure */
    		GGZRoom* room();

    		/**
    		 * Get a reference on itself. */
    		void selfRegister(GGZCoreRoom **room);

    	private:
    		GGZRoom *m_room;
    		GGZGameType *m_gametype, *m_tmpgametype;
    		GGZCoreGametype *m_coregametype;
    		GGZTable *m_table, *m_tmptable;
    		GGZCoreTable *m_coretable;
    		GGZCoreRoom **m_register;
    		int m_destructive;
    };

    #endif

Generated by: josef on athlon500 on Tue Mar 19 23:18:22 2002, using kdoc 2.0a53.