Eris  1.3.19
Public Member Functions | Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Friends
Eris::Account Class Reference

Encapsulates all the state of an Atlas Account, and methods that operation on that state. More...

#include <Account.h>

List of all members.

Public Member Functions

 Account (Connection *con)
 Create a new Account associated with a Connection object.
Result login (const std::string &uname, const std::string &pwd)
 Login to the server using user-supplied account information.
Result createAccount (const std::string &uname, const std::string &fullName, const std::string &pwd)
 Attempt to create a new account on the server and log into it.
Result logout ()
 Request logout from the server.
bool isLoggedIn () const
 Check if the account is logged in.
const std::vector< std::string > & getCharacterTypes (void) const
 Returns a container of character types that the client is allowed to create.
const CharacterMap & getCharacters ()
 Get the characters owned by this account.
Result refreshCharacterInfo ()
 Update the character list (based on changes to play).
Result takeTransferredCharacter (const std::string &id, const std::string &key)
 Transfer all characters to this account and then do all steps in takeCharacter()
Result takeCharacter (const std::string &id)
 Enter the game using an existing character.
Result createCharacter (const Atlas::Objects::Entity::RootEntity &character)
 enter the game using a new character
bool canCreateCharacter ()
 pop up the game's character creation dialog, if present
const ActiveCharacterMap & getActiveCharacters () const
 Gets a list of active characters, i.e.
const SpawnPointMap & getSpawnPoints () const
 Gets the available spawn points from where the client can create new characters.
Result deactivateCharacter (Avatar *av)
 Request de-activation of a character.
const std::string & getId () const
 returns the account ID if logged in
const std::string & getUsername () const
 Return the username of this account.
const std::list< std::string > & getParents () const
 Gets the parent types of the account.
ConnectiongetConnection () const
 Access the underlying Connection for this account.
void avatarLogoutRequested (Avatar *avatar)
 Called when a logout of the avatar has been requested by the server.

Public Attributes

sigc::signal< void, const
Atlas::Objects::Entity::RootEntity & > 
GotCharacterInfo
 emitted when a character has been retrieved from the server
sigc::signal< void > GotAllCharacters
 emitted when the entire character list had been updated
sigc::signal< void, const
std::string & > 
LoginFailure
 Emitted when a server-side error occurs during account creation / login.
sigc::signal< void > LoginSuccess
 Emitted when login or character creation is successful.
sigc::signal< void, bool > LogoutComplete
 Emitted when a logout completes.
sigc::signal< void, Avatar * > AvatarSuccess
 Emitted when creating a character or taking an existing one succeeds.
sigc::signal< void, const
std::string & > 
AvatarFailure
 Emitted when creating or taking a character fails for some reason.
sigc::signal< void, Avatar * > AvatarDeactivated
 Emitted when an active avatar is deactivated.

Protected Types

enum  Status {
  DISCONNECTED = 0, LOGGING_IN, LOGGED_IN, LOGGING_OUT,
  TAKING_CHAR, CREATING_CHAR
}

Protected Member Functions

void sightCharacter (const Atlas::Objects::Operation::RootOperation &op)
void loginComplete (const Atlas::Objects::Entity::Account &p)
void loginError (const Atlas::Objects::Operation::Error &err)
Result internalLogin (const std::string &unm, const std::string &pwd)
void internalLogout (bool clean)
void netConnected ()
 Callback for network re-establishment.
bool netDisconnecting ()
 help! the plug is being pulled!
void netFailure (const std::string &msg)
void loginResponse (const Atlas::Objects::Operation::RootOperation &op)
void logoutResponse (const Atlas::Objects::Operation::RootOperation &op)
void avatarResponse (const Atlas::Objects::Operation::RootOperation &op)
void avatarLogoutResponse (const Atlas::Objects::Operation::RootOperation &op)
void handleLogoutTimeout ()
void handleLoginTimeout ()
void internalDeactivateCharacter (Avatar *av)
virtual void updateFromObject (const Atlas::Objects::Entity::Account &p)

Protected Attributes

Connectionm_con
 underlying connection instance
Status m_status
 what the Player is currently doing
AccountRouterm_router
std::string m_accountId
 the account ID
std::string m_username
 The player's username ( != account object's ID)
std::string m_pass
std::list< std::string > m_parents
std::vector< std::string > m_characterTypes
CharacterMap _characters
 characters belonging to this player
StringSet m_characterIds
bool m_doingCharacterRefresh
 set if we're refreshing character data
ActiveCharacterMap m_activeCharacters
std::auto_ptr< Timeoutm_timeout
SpawnPointMap m_spawnPoints
 A map of available spawn points.

Friends

class AccountRouter
class Avatar

Detailed Description

Encapsulates all the state of an Atlas Account, and methods that operation on that state.

An Account object represents the encapsulation of a server account, and it's binding to a character in the game world. Future versions of Eris will support multiple Account objects per Connection, allowing various configurations of interface, proxies and so forth.
Account is also the mechanism by which Lobby and Avatars objects are made available to the client, in response to login / create operations


Member Enumeration Documentation

enum Eris::Account::Status [protected]
Enumerator:
DISCONNECTED 

Default state, no server account active.

LOGGING_IN 

Login sent, waiting for initial INFO response.

LOGGED_IN 

Fully logged into a server-side account.

LOGGING_OUT 

Sent a logout op, waiting for the INFO response.

TAKING_CHAR 

sent a LOOK op for a character, awaiting INFO response

CREATING_CHAR 

send a character CREATE op, awaiting INFO response


Constructor & Destructor Documentation

Eris::Account::Account ( Connection con)

Create a new Account associated with a Connection object.

Create a new Account object : currently only one is assumed, but multiple Accounts might be supported in the future

Parameters:
conA valid (but not necessarily connected) Connection instance

References m_con, Eris::BaseConnection::Connected, netConnected(), and Eris::Connection::Failure.


Member Function Documentation

void Eris::Account::avatarLogoutRequested ( Avatar avatar)

Called when a logout of the avatar has been requested by the server.

Note:
The avatar instance will be deleted by this method.
Parameters:
avatarThe avatar which is being logged out. This instance will be destroyed once this method is done.

References AvatarDeactivated.

Referenced by Eris::Avatar::logoutRequested().

bool Eris::Account::canCreateCharacter ( ) [inline]

pop up the game's character creation dialog, if present

returns true if the game has defined a character creation dialog

Result Eris::Account::deactivateCharacter ( Avatar av)

Request de-activation of a character.

The 'AvatarDeactivated' signal will be emitted when the deactivation completes.

const ActiveCharacterMap & Eris::Account::getActiveCharacters ( ) const [inline]

Gets a list of active characters, i.e.

entities on the server which the account can control.

Returns:
A list of active characters on the server which the account can control.
const CharacterMap & Eris::Account::getCharacters ( )

Get the characters owned by this account.

Note you should call refreshCharacterInfo, and wait for the GotAllCharacters signal, prior to the initial call : otherwise, it will return an empty or incomplete list.

References m_status, LOGGED_IN, and _characters.

const std::list< std::string > & Eris::Account::getParents ( ) const [inline]

Gets the parent types of the account.

In normal operation this should be a list containing one element, which in most cases is either "player" or "admin".

Returns:
A vector of the parent types of the account.
const SpawnPointMap & Eris::Account::getSpawnPoints ( ) const [inline]

Gets the available spawn points from where the client can create new characters.

Returns:
A store of available spawn points.

References m_spawnPoints.

const std::string & Eris::Account::getUsername ( ) const [inline]

Return the username of this account.

References m_username.

bool Eris::Account::isLoggedIn ( ) const

Check if the account is logged in.

Many operations will produce errors if the account is not logged in.

References m_status, LOGGED_IN, TAKING_CHAR, and CREATING_CHAR.

Referenced by Eris::Lobby::Lobby(), and Eris::Lobby::join().

Result Eris::Account::login ( const std::string &  uname,
const std::string &  pwd 
)

Login to the server using user-supplied account information.

This is the basic way of logging into an existing account. Server-side failures during the login process, such as the account being unknown or an incorrect password being supplied, will result in the 'LoginFailure' signal being emitted with some vaugely helpful error message, and an error code. The LoginSuccess signal will be emitted upon sucessful completion of the login process.

Parameters:
unameThe username of the account
pwdThe correct password for the account

References m_con, Eris::BaseConnection::isConnected(), m_status, and DISCONNECTED.

Result Eris::Account::logout ( )

Request logout from the server.

Initiate a clean disconnection from the server. The LogoutComplete signal will be emitted when the process completes. Calling this on an Account which is not logged in will produce an error.

References m_con, Eris::BaseConnection::isConnected(), m_status, LOGGING_OUT, LOGGED_IN, m_accountId, and Eris::Connection::send().

Referenced by netDisconnecting().

Result Eris::Account::refreshCharacterInfo ( )

Update the character list (based on changes to play).

The intention here is that clients will call this method for some kind of'choose character' interface or menu, and wait for the GotAllCharacters signal before displaying the list. Alternatively, you can display the UI immediately, and add character entries based on the GotCharacterInfo signal, which will be emitted once for each character.

References m_con, Eris::BaseConnection::isConnected(), m_status, LOGGED_IN, m_doingCharacterRefresh, _characters, GotAllCharacters, m_accountId, and Eris::Connection::send().

Result Eris::Account::takeCharacter ( const std::string &  id)

Enter the game using an existing character.

Parameters:
idThe id of the game entity to activate; this must be owned by the account.
Returns:
The Avatar that represents the character. Note ownership of this passes to the caller.

References m_username, m_con, Eris::BaseConnection::isConnected(), m_status, LOGGED_IN, CREATING_CHAR, TAKING_CHAR, and Eris::Connection::send().

Result Eris::Account::takeTransferredCharacter ( const std::string &  id,
const std::string &  key 
)

Transfer all characters to this account and then do all steps in takeCharacter()

Parameters:
idThe id of the game entity to transfer and activate
keyThe possess_key to authenticate the game entity as ours

References m_con, Eris::BaseConnection::isConnected(), m_status, LOGGED_IN, CREATING_CHAR, TAKING_CHAR, getId(), and Eris::Connection::send().


Member Data Documentation

Emitted when an active avatar is deactivated.

Clients must not refer to the Avatar or View objects after this signal is emitted (it is safe to access them in a slot connected to this signal)

Referenced by avatarLogoutRequested().

sigc::signal<void, const std::string &> Eris::Account::AvatarFailure

Emitted when creating or taking a character fails for some reason.

String argument is the error message from the server.

sigc::signal<void, const std::string &> Eris::Account::LoginFailure

Emitted when a server-side error occurs during account creation / login.

The argument is an error message from the server - hopefully this will become something more useful such as an enum code, in the future.

sigc::signal<void> Eris::Account::LoginSuccess

Emitted when login or character creation is successful.

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

sigc::signal<void, bool> Eris::Account::LogoutComplete

Emitted when a logout completes.

Depending on whether the logout completed with a positive server acknowledgment or just timed out, the argument will be either true (success, clean logout) or false (failure, timeout or other problem)

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

SpawnPointMap Eris::Account::m_spawnPoints [protected]

A map of available spawn points.

These are points from which a new avatar can be created.

Referenced by getSpawnPoints().


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