Eris::Account Class Reference

An Account object represents the encapsulation of a server account, and it's binding to a character in the game world. More...

#include <Account.h>

List of all members.

Public Member Functions

 Account (Connection *con)
 Create a new Account object : currently only one is assumed, but multiple Accounts might be supported in the future.
Result login (const std::string &uname, const std::string &pwd)
 This is the basic way of logging into an existing account.
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 ()
 Initiate a clean disconnection from the server.
bool isLoggedIn () const
 Many operations will produce errors if the account is not 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 ()
 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.
Result refreshCharacterInfo ()
 Update the charcter list (based on changes to play).
Result takeCharacter (const std::string &id)
 
Parameters:
id The id of the game entity to activate; this must be owned by the account.

Result createCharacter (const Atlas::Objects::Entity::RootEntity &character)
 enter the game using a new character
bool canCreateCharacter ()
 returns true if the game has defined a character creation dialog
const ActiveCharacterMap & getActiveCharacters () const
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.
ConnectiongetConnection () const
 Access the underlying Connection for this account.

Public Attributes

sigc::signal< void, const
Atlas::Objects::Entity::RootEntity & > 
GotCharacterInfo
 emitted when a character has been retrived from the server
sigc::signal< void > GotAllCharacters
 emitted when the entire character list had been updated
sigc::signal< void, const
std::string & > 
LoginFailure
 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 > LoginSuccess
 Emitted when login or character creation is successful.
sigc::signal< void, bool > LogoutComplete
 Depending on whether the logout completed with a positive server acknowledgement or just timedout, the argument will be either true (success, clean logout) or false (failure, timeout or other problem).
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)
void updateFromObject (const Atlas::Objects::Entity::Account &p)

Protected Attributes

Connectionm_con
 underlying connection instance
Status m_status
 what the Player is currently doing
AccountRouter * m_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::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

Friends

class AccountRouter
class Avatar


Detailed Description

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 object : currently only one is assumed, but multiple Accounts might be supported in the future.

Parameters:
con A valid (but not necessarily connected) Connection instance


Member Function Documentation

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

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:
uname The username of the account
pwd The correct password for the account

Result Eris::Account::logout (  ) 

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.

bool Eris::Account::isLoggedIn (  )  const

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

Result Eris::Account::refreshCharacterInfo (  ) 

Update the charcter 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 immediatley, and add character entries based on the GotCharacterInfo signal, which will be emitted once for each character.

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

Parameters:
id The 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.

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

Request de-activation of a character.

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

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

Return the username of this account.


Member Data Documentation

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

Emitted when login or character creation is successful.

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 messgae from the server.

sigc::signal<void, Avatar*> Eris::Account::AvatarDeactivated

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)


The documentation for this class was generated from the following files:
Generated on Sun Dec 16 13:06:01 2007 for Eris by  doxygen 1.5.2