4 #include <Eris/Types.h> 6 #include "TransferInfo.h" 8 #include <Atlas/Objects/ObjectsFwd.h> 10 #include <sigc++/signal.h> 26 typedef std::map<std::string, Atlas::Objects::Entity::RootEntity> CharacterMap;
28 typedef std::map<std::string, Avatar*> ActiveCharacterMap;
33 typedef std::map<std::string, SpawnPoint> SpawnPointMap;
44 class Account :
virtual public sigc::trackable
67 Result
login(
const std::string &uname,
const std::string &pwd);
81 const std::string &fullName,
82 const std::string &pwd);
94 Result
createAccount(Atlas::Objects::Entity::Account accountOp);
143 Result
createCharacter(
const Atlas::Objects::Entity::RootEntity &character);
170 const std::string&
getId()
const;
181 const std::list<std::string>&
getParents()
const;
245 void sightCharacter(
const Atlas::Objects::Operation::RootOperation& op);
247 void loginComplete(
const Atlas::Objects::Entity::Account &p);
248 void loginError(
const Atlas::Objects::Operation::Error& err);
250 Result internalLogin(
const std::string &unm,
const std::string &pwd);
251 void internalLogout(
bool clean);
258 void netFailure(
const std::string& msg);
260 void loginResponse(
const Atlas::Objects::Operation::RootOperation& op);
261 void logoutResponse(
const Atlas::Objects::Operation::RootOperation& op);
262 void avatarResponse(
const Atlas::Objects::Operation::RootOperation& op);
263 void avatarLogoutResponse(
const Atlas::Objects::Operation::RootOperation& op);
265 void handleLogoutTimeout();
268 void handleLoginTimeout();
281 void internalDeactivateCharacter(
Avatar* av);
282 virtual void updateFromObject(
const Atlas::Objects::Entity::Account &p);
292 std::list< std::string > m_parents;
293 std::vector< std::string > m_characterTypes;
295 StringSet m_characterIds;
298 ActiveCharacterMap m_activeCharacters;
299 std::unique_ptr<Timeout> m_timeout;
315 return m_activeCharacters;
Connection * getConnection() const
Access the underlying Connection for this account.
Definition: Account.h:334
Result takeCharacter(const std::string &id)
Enter the game using an existing character.
Definition: Account.cpp:313
Result createCharacter(const Atlas::Objects::Entity::RootEntity &character)
enter the game using a new character
Definition: Account.cpp:238
void avatarLogoutRequested(Avatar *avatar)
Called when a logout of the avatar has been requested by the server.
Definition: Account.cpp:452
Default state, no server account active.
Definition: Account.h:272
const std::list< std::string > & getParents() const
Gets the parent types of the account.
Definition: Account.h:328
Result refreshCharacterInfo()
Update the character list (based on changes to play).
Definition: Account.cpp:203
Login sent, waiting for initial INFO response.
Definition: Account.h:273
const std::vector< std::string > & getCharacterTypes(void) const
Returns a container of character types that the client is allowed to create.
Definition: Account.cpp:190
Result deactivateCharacter(Avatar *av)
Request de-activation of a character.
Definition: Account.cpp:345
Connection * m_con
underlying connection instance
Definition: Account.h:284
sigc::signal< void, const std::string & > AvatarFailure
Emitted when creating or taking a character fails for some reason.
Definition: Account.h:232
send a character CREATE op, awaiting INFO response
Definition: Account.h:278
sent a LOOK op for a character, awaiting INFO response
Definition: Account.h:277
const std::string & getId() const
returns the account ID if logged in
Definition: Account.h:318
Account(Connection *con)
Create a new Account associated with a Connection object.
Definition: Account.cpp:79
sigc::signal< void > GotAllCharacters
emitted when the entire character list had been updated
Definition: Account.h:203
const SpawnPointMap & getSpawnPoints() const
Gets the available spawn points from where the client can create new characters.
Definition: Account.h:339
sigc::signal< void, Avatar * > AvatarSuccess
Emitted when creating a character or taking an existing one succeeds.
Definition: Account.h:226
sigc::signal< void > LoginSuccess
Emitted when login or character creation is successful.
Definition: Account.h:213
SpawnPointMap m_spawnPoints
A map of available spawn points.
Definition: Account.h:305
Result login(const std::string &uname, const std::string &pwd)
Login to the server using user-supplied account information.
Definition: Account.cpp:107
const std::string & getUsername() const
Return the username of this account.
Definition: Account.h:323
Definition: Account.cpp:35
CharacterMap _characters
characters belonging to this player
Definition: Account.h:294
Status m_status
what the Player is currently doing
Definition: Account.h:285
bool canCreateCharacter()
pop up the game's character creation dialog, if present
Definition: Account.h:308
Definition: Account.cpp:33
Sent a logout op, waiting for the INFO response.
Definition: Account.h:275
Underlying Atlas connection, providing a send interface, and receive (dispatch) system.
Definition: Connection.h:37
Fully logged into a server-side account.
Definition: Account.h:274
sigc::signal< void, Avatar * > AvatarDeactivated
Emitted when an active avatar is deactivated.
Definition: Account.h:239
Status
Definition: Account.h:270
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.
Definition: Account.cpp:122
bool m_doingCharacterRefresh
set if we're refreshing character data
Definition: Account.h:296
Encapsulates all the state of an Atlas Account, and methods that operation on that state...
Definition: Account.h:44
std::string m_username
The player's username ( != account object's ID)
Definition: Account.h:289
std::string m_accountId
the account ID
Definition: Account.h:288
sigc::signal< void, const std::string & > LoginFailure
Emitted when a server-side error occurs during account creation / login.
Definition: Account.h:210
Result logout()
Request logout from the server.
Definition: Account.cpp:159
const ActiveCharacterMap & getActiveCharacters() const
Gets a list of active characters, i.e.
Definition: Account.h:313
Result takeTransferredCharacter(const std::string &id, const std::string &key)
Transfer all characters to this account and then do all steps in takeCharacter()
Definition: Account.cpp:285
void netConnected()
Callback for network re-establishment.
Definition: Account.cpp:671
const CharacterMap & getCharacters()
Get the characters owned by this account.
Definition: Account.cpp:195
bool isLoggedIn() const
Check if the account is logged in.
Definition: Account.cpp:351
sigc::signal< void, bool > LogoutComplete
Emitted when a logout completes.
Definition: Account.h:220
The player's avatar representation.
Definition: Avatar.h:31
bool netDisconnecting()
help! the plug is being pulled!
Definition: Account.cpp:680
sigc::signal< void, const Atlas::Objects::Entity::RootEntity & > GotCharacterInfo
emitted when a character has been retrieved from the server
Definition: Account.h:200