eris
1.4.0
A WorldForge client library.
|
#include <TypeService.h>
Public Member Functions | |
TypeService (Connection &con) | |
void | init () |
TypeInfo * | getTypeByName (const std::string &tynm) |
TypeInfo * | getTypeForAtlas (const Atlas::Objects::Root &obj) |
TypeInfo * | findTypeByName (const std::string &tynm) |
void | handleOperation (const Atlas::Objects::Operation::RootOperation &) |
void | sendRequest (const std::string &id) |
void | setTypeProviderId (std::string id) |
Set another provider of type data than the connection. More... | |
Public Attributes | |
sigc::signal< void, TypeInfo * > | BoundType |
sigc::signal< void, TypeInfo * > | BadType |
Protected Member Functions | |
void | recvTypeInfo (const Atlas::Objects::Root &atype) |
void | recvError (const Atlas::Objects::Operation::Get &get) |
void | recvTypeUpdate (const Atlas::Objects::Root &atype) |
TypeInfo * | defineBuiltin (const std::string &name, TypeInfo *parent) |
Protected Attributes | |
std::unordered_map< std::string, std::unique_ptr< TypeInfo > > | m_types |
Connection & | m_con |
bool | m_inited |
std::string | m_type_provider_id |
A service class querying and caching types.
Definition at line 23 of file TypeService.h.
TypeInfo * Eris::TypeService::findTypeByName | ( | const std::string & | tynm | ) |
Lookup the requested type, by name, and return nullptr if it's unknown.
Definition at line 51 of file TypeService.cpp.
Referenced by Eris::TypeInfo::processTypeData().
TypeInfo * Eris::TypeService::getTypeByName | ( | const std::string & | tynm | ) |
find the TypeInfo for the named type; this may involve a search, or a map lookup. The returned TypeInfo node may not be bound, and the caller should verify this before using the type.
Definition at line 61 of file TypeService.cpp.
References sendRequest().
Referenced by getTypeForAtlas(), Eris::TypeInfo::processTypeData(), and Eris::TypeInfo::resolveChildren().
TypeInfo * Eris::TypeService::getTypeForAtlas | ( | const Atlas::Objects::Root & | obj | ) |
retrive the TypeInfo for an object; this should be faster (hopefully constant time) since it can take advantage of integer typeids
Definition at line 77 of file TypeService.cpp.
References getTypeByName(), and sendRequest().
Referenced by Eris::View::taskRateChanged().
void Eris::TypeService::sendRequest | ( | const std::string & | id | ) |
request the information about a type from the server.
id | The ID of the type to lookup |
Definition at line 155 of file TypeService.cpp.
References BadType, Eris::getNewSerialno(), m_type_provider_id, and Eris::Connection::send().
Referenced by getTypeByName(), getTypeForAtlas(), and Eris::TypeInfo::refresh().
void Eris::TypeService::setTypeProviderId | ( | std::string | id | ) |
Set another provider of type data than the connection.
This should be set to the external mind once an entity has been possessed, since the external mind has access to more type data (for example the type of the entity itself).
id |
Definition at line 213 of file TypeService.cpp.
References m_type_provider_id.
Referenced by Eris::Avatar::Avatar().
sigc::signal<void, TypeInfo*> Eris::TypeService::BadType |
emitted when a type is confirmed as being undefined
Definition at line 47 of file TypeService.h.
Referenced by sendRequest().
sigc::signal<void, TypeInfo*> Eris::TypeService::BoundType |
emitted when a new type is available and bound to it's parents
Definition at line 44 of file TypeService.h.
Referenced by Eris::TypeInfo::refresh().
|
protected |
An optional type provider, to which requests for types are sent.
Definition at line 85 of file TypeService.h.
Referenced by sendRequest(), and setTypeProviderId().
|
protected |
The easy bit : a simple map from 'string-id' (e.g 'look' or 'farmer') to the corresponding TypeInfo instance. This could be a hash_map in the future, if efficiency considerations indicate it would be worthwhile
Definition at line 77 of file TypeService.h.