eris  1.4.0
A WorldForge client library.
Eris::Room Class Reference

#include <Room.h>

Inheritance diagram for Eris::Room:
Collaboration diagram for Eris::Room:

Public Types

enum  RouterResult { IGNORED = 0 , HANDLED }
 

Public Member Functions

 Room (Lobby *l, const std::string &id)
 
void say (const std::string &tk)
 Send a piece of text to this room. More...
 
void emote (const std::string &em)
 
void leave ()
 
RoomcreateRoom (const std::string &name)
 
std::string getName () const
 Obtain the human-readable name of this room. More...
 
std::string getTopic () const
 
std::vector< Person * > getPeople () const
 obtain an array of pointers to everyone in this room More...
 
std::vector< Room * > getRooms () const
 Obtain a list of rooms within this room. More...
 
std::string getId () const
 
PersongetPersonByUID (const std::string &uid)
 
virtual RouterResult handleObject (const Atlas::Objects::Root &obj)
 
virtual RouterResult handleEntity (const Atlas::Objects::Entity::RootEntity &ent)
 

Public Attributes

sigc::signal< void, Room * > Entered
 
sigc::signal< void, Room *, Person *, const std::string & > Speech
 
sigc::signal< void, Room *, Person *, const std::string & > Emote
 
sigc::signal< void, Room *, Person * > Appearance
 
sigc::signal< void, Room *, Person * > Disappearance
 Similarly, emitted when the specifed person leaves the room. More...
 

Protected Types

typedef std::unordered_map< std::string, std::unique_ptr< Person > > IdPersonMap
 

Protected Member Functions

RouterResult handleOperation (const Atlas::Objects::Operation::RootOperation &op) override
 
void handleSoundTalk (Person *p, const std::string &speech)
 
void handleEmote (Person *p, const std::string &desc)
 

Protected Attributes

std::string m_roomId
 

Friends

class Lobby
 

Detailed Description

The out-of-game (OOG) heirarchy is composed of Rooms, containing Persons and other Rooms. Generally rooms corespond to chanels in IRC, and the interface and commands should be clear if you are familiar with that medium.

Definition at line 25 of file Room.h.

Constructor & Destructor Documentation

◆ Room()

Eris::Room::Room ( Lobby l,
const std::string &  id 
)
explicit

standard constructor. Issues a LOOK against the specified ID, and sets up the necessary signals to drive the Room if id arg is provided

Definition at line 29 of file Room.cpp.

References Eris::Lobby::getConnection().

Member Function Documentation

◆ createRoom()

Room * Eris::Room::createRoom ( const std::string &  name)

create a child room of this one, with the specified name. Note that most attributes, including the ID will not be valid until the new room emits the 'Entered' signal. If you need a unique, referenceable indentifier earlier than that point, use the pointer value.

Definition at line 112 of file Room.cpp.

References Eris::Lobby::getAccount(), Eris::Lobby::getConnection(), Eris::Account::getId(), Eris::getNewSerialno(), Eris::BaseConnection::isConnected(), and Eris::Connection::send().

◆ emote()

void Eris::Room::emote ( const std::string &  em)

Send an emote ( /me ) to the room. This is transmitted as an IMAGINARY op in Atlas, with args[0]["id"] = "emote".

Definition at line 69 of file Room.cpp.

References Eris::Lobby::getAccount(), Eris::Lobby::getConnection(), Eris::Account::getId(), Eris::getNewSerialno(), Eris::BaseConnection::isConnected(), and Eris::Connection::send().

◆ getId()

std::string Eris::Room::getId ( ) const
inline

Get the Atlas object ID of the Room; note that this may return an empty value if called prior to entering the Lobby

Definition at line 74 of file Room.h.

Referenced by Eris::Lobby::~Lobby().

◆ getName()

std::string Eris::Room::getName ( ) const
inline

Obtain the human-readable name of this room.

Definition at line 53 of file Room.h.

◆ getPeople()

std::vector< Person * > Eris::Room::getPeople ( ) const

obtain an array of pointers to everyone in this room

Definition at line 141 of file Room.cpp.

◆ getRooms()

std::vector<Room*> Eris::Room::getRooms ( ) const
inline

Obtain a list of rooms within this room.

Definition at line 67 of file Room.h.

◆ leave()

void Eris::Room::leave ( )

Leave the room - no more signals will be emitted for this room again (validity of Room pointer after this call?)

Definition at line 92 of file Room.cpp.

References Eris::Lobby::getAccount(), Eris::Lobby::getConnection(), Eris::Account::getId(), Eris::getNewSerialno(), Eris::BaseConnection::isConnected(), and Eris::Connection::send().

◆ say()

void Eris::Room::say ( const std::string &  tk)

Member Data Documentation

◆ Appearance

sigc::signal<void, Room*, Person*> Eris::Room::Appearance

Emitted when a person enters the room; argument is the account ID. Note that Appearance is not generated for the local player when entering/leaving; use the Entered signal instead.

Definition at line 96 of file Room.h.

◆ Disappearance

sigc::signal<void, Room*, Person*> Eris::Room::Disappearance

Similarly, emitted when the specifed person leaves the room.

Definition at line 99 of file Room.h.

◆ Emote

sigc::signal<void, Room*, Person*, const std::string&> Eris::Room::Emote

Emote (/me) callback. The arguments are identical to those for Talk above

Definition at line 91 of file Room.h.

◆ Entered

sigc::signal<void, Room*> Eris::Room::Entered

Emitted when entry into the room (after a Join) is complete, i.e the user list has been transferred and resolved.

Definition at line 84 of file Room.h.

◆ Speech

sigc::signal<void, Room*, Person*, const std::string&> Eris::Room::Speech

The primary talk callback. The arguments are the source room, the person talking, and the message itself

Definition at line 88 of file Room.h.


The documentation for this class was generated from the following files: