eris 1.4.0
A WorldForge client library.
|
Encapsulates all the state of an Atlas Account, and methods that operation on that state. More...
#include <Account.h>
Public Member Functions | |
Account (Connection &con) | |
Create a new Account associated with a Connection object. More... | |
Result | login (const std::string &uname, const std::string &pwd) |
Login to the server using user-supplied account information. More... | |
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. More... | |
Result | createAccount (const Atlas::Objects::Entity::Account &accountOp) |
Result | logout () |
Request logout from the server. More... | |
bool | isLoggedIn () const |
Check if the account is logged in. More... | |
const CharacterMap & | getCharacters () |
Get the characters owned by this account. More... | |
Result | refreshCharacterInfo () |
Result | takeTransferredCharacter (const std::string &id, const std::string &key) |
Transfer all characters to this account and then do all steps in takeCharacter() More... | |
Result | takeCharacter (const std::string &id) |
Enter the game using an existing character. More... | |
Result | createCharacterThroughEntity (const Atlas::Objects::Entity::RootEntity &character) |
enter the game using a new character More... | |
Result | createCharacterThroughOperation (const Atlas::Objects::Operation::Create &c) |
bool | canCreateCharacter () |
pop up the game's character creation dialog, if present More... | |
const ActiveCharacterMap & | getActiveCharacters () const |
Gets a list of active characters, i.e. entities on the server which the account can control. More... | |
const std::vector< SpawnPoint > & | getSpawnPoints () const |
Gets the available spawn points from where the client can create new characters. More... | |
const std::string & | getId () const |
returns the account ID if logged in More... | |
const std::string & | getUsername () const |
const std::string & | getParent () const |
Gets the parent type of the account. More... | |
Connection & | getConnection () const |
Access the underlying Connection for this account. More... | |
void | avatarLogoutRequested (Avatar *avatar) |
Called when a logout of the avatar has been requested by the server. More... | |
Public Attributes | |
sigc::signal< void, const Atlas::Objects::Entity::RootEntity & > | GotCharacterInfo |
emitted when a character has been retrieved from the server More... | |
sigc::signal< void > | GotAllCharacters |
emitted when the entire character list had been updated More... | |
sigc::signal< void, const std::string & > | LoginFailure |
Emitted when a server-side error occurs during account creation / login. More... | |
sigc::signal< void > | LoginSuccess |
sigc::signal< void, bool > | LogoutComplete |
Emitted when a logout completes. More... | |
sigc::signal< void, Avatar * > | AvatarSuccess |
sigc::signal< void, const std::string & > | AvatarFailure |
sigc::signal< void, const std::string & > | AvatarDeactivated |
sigc::signal< void, const std::string & > | ErrorMessage |
Protected Types | |
enum class | Status { DISCONNECTED = 0 , LOGGING_IN , LOGGED_IN , LOGGING_OUT , TAKING_CHAR , CREATING_CHAR , CREATED_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. More... | |
bool | netDisconnecting () |
help! the plug is being pulled! More... | |
void | netFailure (const std::string &msg) |
void | loginResponse (const Atlas::Objects::Operation::RootOperation &op) |
void | logoutResponse (const Atlas::Objects::Operation::RootOperation &op) |
void | possessResponse (const Atlas::Objects::Operation::RootOperation &op) |
void | avatarCreateResponse (const Atlas::Objects::Operation::RootOperation &op) |
void | avatarLogoutResponse (const Atlas::Objects::Operation::RootOperation &op) |
void | destroyAvatar (const std::string &avatarId) |
Destroys the avatar with the specified id, if available. More... | |
void | handleLogoutTimeout () |
void | handleLoginTimeout () |
void | internalDeactivateCharacter (const std::string &avatarId) |
virtual void | updateFromObject (const Atlas::Objects::Entity::Account &p) |
Protected Attributes | |
Connection & | m_con |
underlying connection instance More... | |
Status | m_status |
what the Player is currently doing More... | |
std::unique_ptr< AccountRouter > | m_router |
std::string | m_accountId |
the account ID More... | |
std::string | m_username |
The player's username ( != account object's ID) More... | |
std::string | m_pass |
std::string | m_parent |
CharacterMap | _characters |
characters belonging to this player More... | |
std::set< std::string > | m_characterIds |
bool | m_doingCharacterRefresh |
set if we're refreshing character data More... | |
ActiveCharacterMap | m_activeAvatars |
std::unique_ptr< TimedEvent > | m_timeout |
std::vector< SpawnPoint > | m_spawnPoints |
A map of available spawn points. These are points from which a new avatar can be created. More... | |
Friends | |
class | AccountRouter |
class | Avatar |
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
|
strongprotected |
|
explicit |
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
con | A valid (but not necessarily connected) Connection instance |
Definition at line 89 of file Account.cpp.
References Eris::BaseConnection::Connected, Eris::Connection::Failure, m_con, and netConnected().
|
virtual |
Definition at line 98 of file Account.cpp.
|
protected |
Definition at line 620 of file Account.cpp.
void Eris::Account::avatarLogoutRequested | ( | Avatar * | avatar | ) |
Called when a logout of the avatar has been requested by the server.
avatar | The avatar which is being logged out. This instance will be destroyed once this method is done. |
Definition at line 418 of file Account.cpp.
References destroyAvatar(), and Eris::Avatar::getId().
|
protected |
Definition at line 709 of file Account.cpp.
|
inline |
Result Eris::Account::createAccount | ( | const Atlas::Objects::Entity::Account & | accountOp | ) |
Definition at line 144 of file Account.cpp.
Result Eris::Account::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.
Definition at line 128 of file Account.cpp.
References createAccount(), and m_username.
Referenced by createAccount().
Result Eris::Account::createCharacterThroughEntity | ( | const Atlas::Objects::Entity::RootEntity & | character | ) |
enter the game using a new character
Definition at line 235 of file Account.cpp.
References m_accountId, and m_username.
Result Eris::Account::createCharacterThroughOperation | ( | const Atlas::Objects::Operation::Create & | c | ) |
Definition at line 246 of file Account.cpp.
|
protected |
Destroys the avatar with the specified id, if available.
A check is made if the avatar is registered with the account.
Also emits AvatarDeactivated.
avatarId | The avatar id. |
Definition at line 422 of file Account.cpp.
References AvatarDeactivated.
Referenced by avatarLogoutRequested(), and Eris::Avatar::logoutRequested().
|
inline |
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.
Definition at line 194 of file Account.cpp.
References _characters, LOGGED_IN, and m_status.
|
inline |
Access the underlying Connection for this account.
Definition at line 338 of file Account.h.
References m_con.
Referenced by Eris::Avatar::Avatar(), Eris::Lobby::getConnection(), and Eris::Avatar::send().
|
inline |
returns the account ID if logged in
Definition at line 325 of file Account.h.
References m_accountId.
Referenced by Eris::Room::createRoom(), Eris::Room::emote(), Eris::Lobby::join(), Eris::Room::leave(), Eris::Person::msg(), and Eris::Room::say().
|
inline |
|
inline |
Gets the available spawn points from where the client can create new characters.
Definition at line 342 of file Account.h.
References m_spawnPoints.
|
inline |
Return the username of this account.
Definition at line 329 of file Account.h.
References m_username.
|
protected |
Definition at line 560 of file Account.cpp.
|
protected |
Definition at line 700 of file Account.cpp.
|
protected |
Definition at line 630 of file Account.cpp.
|
protected |
Definition at line 329 of file Account.cpp.
|
protected |
Definition at line 358 of file Account.cpp.
bool Eris::Account::isLoggedIn | ( | ) | const |
Check if the account is logged in.
Many operations will produce errors if the account is not logged in.
Definition at line 324 of file Account.cpp.
References CREATING_CHAR, LOGGED_IN, m_status, and TAKING_CHAR.
Referenced by Eris::Lobby::join(), and Eris::Lobby::Lobby().
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.
uname | The username of the account |
pwd | The correct password for the account |
Definition at line 114 of file Account.cpp.
References Eris::ALREADY_LOGGED_IN, DISCONNECTED, Eris::BaseConnection::isConnected(), m_con, and m_status.
|
protected |
Definition at line 389 of file Account.cpp.
|
protected |
Definition at line 542 of file Account.cpp.
|
protected |
Definition at line 379 of file Account.cpp.
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.
Definition at line 163 of file Account.cpp.
References Eris::getNewSerialno(), Eris::BaseConnection::isConnected(), LOGGED_IN, LOGGING_OUT, m_accountId, m_con, m_status, Eris::NOT_LOGGED_IN, and Eris::Connection::send().
Referenced by netDisconnecting().
|
protected |
Definition at line 351 of file Account.cpp.
|
protected |
Callback for network re-establishment.
Definition at line 679 of file Account.cpp.
References DISCONNECTED, m_status, and m_username.
Referenced by Account().
|
protected |
help! the plug is being pulled!
Definition at line 687 of file Account.cpp.
References Eris::Connection::lock(), LOGGED_IN, logout(), m_con, and m_status.
|
protected |
Definition at line 696 of file Account.cpp.
|
protected |
Definition at line 567 of file Account.cpp.
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.
Definition at line 201 of file Account.cpp.
References _characters, Eris::getNewSerialno(), GotAllCharacters, Eris::BaseConnection::isConnected(), LOGGED_IN, m_accountId, m_con, m_doingCharacterRefresh, m_status, Eris::NOT_LOGGED_IN, and Eris::Connection::send().
|
protected |
Definition at line 639 of file Account.cpp.
Result Eris::Account::takeCharacter | ( | const std::string & | id | ) |
Enter the game using an existing character.
id | The id of the game entity to activate; this must be owned by the account. |
Definition at line 296 of file Account.cpp.
References CREATED_CHAR, CREATING_CHAR, Eris::getNewSerialno(), Eris::BaseConnection::isConnected(), LOGGED_IN, m_accountId, m_con, m_status, Eris::NOT_LOGGED_IN, Eris::Connection::send(), and TAKING_CHAR.
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()
id | The id of the game entity to transfer and activate |
key | The possess_key to authenticate the game entity as ours |
Definition at line 267 of file Account.cpp.
References CREATING_CHAR, Eris::getNewSerialno(), Eris::BaseConnection::isConnected(), LOGGED_IN, m_accountId, m_con, m_status, Eris::NOT_LOGGED_IN, Eris::Connection::send(), and TAKING_CHAR.
|
protectedvirtual |
Definition at line 431 of file Account.cpp.
|
friend |
|
protected |
characters belonging to this player
Definition at line 303 of file Account.h.
Referenced by getCharacters(), and refreshCharacterInfo().
sigc::signal<void, const std::string &> Eris::Account::AvatarDeactivated |
Emitted when an active avatar has been deactivated.
Definition at line 224 of file Account.h.
Referenced by destroyAvatar().
sigc::signal<void, const std::string &> Eris::Account::AvatarFailure |
sigc::signal<void, Avatar *> Eris::Account::AvatarSuccess |
sigc::signal<void, const std::string &> Eris::Account::ErrorMessage |
sigc::signal<void> Eris::Account::GotAllCharacters |
emitted when the entire character list had been updated
Definition at line 190 of file Account.h.
Referenced by refreshCharacterInfo().
sigc::signal<void, const Atlas::Objects::Entity::RootEntity &> Eris::Account::GotCharacterInfo |
sigc::signal<void, const std::string &> Eris::Account::LoginFailure |
sigc::signal<void> Eris::Account::LoginSuccess |
Emitted when login or character creation is successful.
Definition at line 200 of file Account.h.
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)
Definition at line 207 of file Account.h.
Referenced by Eris::Lobby::Lobby().
|
protected |
the account ID
Definition at line 298 of file Account.h.
Referenced by createCharacterThroughEntity(), getId(), logout(), refreshCharacterInfo(), takeCharacter(), and takeTransferredCharacter().
|
protected |
|
protected |
|
protected |
underlying connection instance
Definition at line 294 of file Account.h.
Referenced by Account(), getConnection(), login(), logout(), netDisconnecting(), refreshCharacterInfo(), takeCharacter(), and takeTransferredCharacter().
|
protected |
set if we're refreshing character data
Definition at line 305 of file Account.h.
Referenced by refreshCharacterInfo().
|
protected |
|
protected |
A map of available spawn points. These are points from which a new avatar can be created.
Definition at line 314 of file Account.h.
Referenced by getSpawnPoints().
|
protected |
what the Player is currently doing
Definition at line 295 of file Account.h.
Referenced by getCharacters(), isLoggedIn(), login(), logout(), netConnected(), netDisconnecting(), refreshCharacterInfo(), takeCharacter(), and takeTransferredCharacter().
|
protected |
|
protected |
The player's username ( != account object's ID)
Definition at line 299 of file Account.h.
Referenced by createAccount(), createCharacterThroughEntity(), getUsername(), and netConnected().