bool EntityManager::Initialize(iObjectRegistry* object_reg, 
                               ClientConnectionSet* clients,
                               UserManager* umanager,
                               GEMSupervisor* gemsupervisor,
                               psServerDR* psserverdr,
                               CacheManager* cachemanager)
{
    cacheManager = cachemanager;
    csRef<iEngine> engine2 = csQueryRegistry<iEngine> (psserver->GetObjectReg());
    engine = engine2; // get out of csRef;

    usermanager = umanager;

    Subscribe(&EntityManager::HandleUserAction, MSGTYPE_USERACTION, REQUIRE_READY_CLIENT | REQUIRE_ALIVE);
    Subscribe(&EntityManager::HandleWorld, MSGTYPE_PERSIST_WORLD_REQUEST, REQUIRE_ANY_CLIENT );
    Subscribe(&EntityManager::HandleActor, MSGTYPE_PERSIST_ACTOR_REQUEST, REQUIRE_ANY_CLIENT );
    Subscribe(&EntityManager::HandleAllRequest, MSGTYPE_PERSIST_ALL, REQUIRE_ANY_CLIENT);
    Subscribe(&EntityManager::SendMovementInfo, MSGTYPE_REQUESTMOVEMENTS, REQUIRE_ANY_CLIENT);

    EntityManager::clients = clients;

    gem = gemsupervisor;

    serverdr = psserverdr;
    if (!serverdr->Initialize())
    {
        delete serverdr;
        serverdr = NULL;
        return false;
    }

    LoadFamiliarAffinityAttributes();
    LoadFamiliarTypes();
    CreateMovementInfoMsg();

    gameWorld = new psWorld();        
    gameWorld->Initialize( object_reg );

    return true;
}
Exemple #2
0
bool EntityManager::Initialize(iObjectRegistry* object_reg, 
                               ClientConnectionSet* clients,
                               UserManager* umanager)
{
    csRef<iEngine> engine2 = csQueryRegistry<iEngine> (psserver->GetObjectReg());
    engine = engine2; // get out of csRef;

    usermanager = umanager;

    psserver->GetEventManager()->Subscribe(this, new NetMessageCallback<EntityManager>(this,&EntityManager::HandleUserAction), MSGTYPE_USERACTION,REQUIRE_READY_CLIENT|REQUIRE_ALIVE);
    psserver->GetEventManager()->Subscribe(this, new NetMessageCallback<EntityManager>(this,&EntityManager::HandleWorld)     , MSGTYPE_PERSIST_WORLD_REQUEST,REQUIRE_ANY_CLIENT );
    psserver->GetEventManager()->Subscribe(this, new NetMessageCallback<EntityManager>(this,&EntityManager::HandleActor)     , MSGTYPE_PERSIST_ACTOR_REQUEST,REQUIRE_ANY_CLIENT );    
    psserver->GetEventManager()->Subscribe(this, new NetMessageCallback<EntityManager>(this,&EntityManager::HandleAllRequest), MSGTYPE_PERSIST_ALL,REQUIRE_ANY_CLIENT);
    psserver->GetEventManager()->Subscribe(this, new NetMessageCallback<EntityManager>(this,&EntityManager::SendMovementInfo), MSGTYPE_REQUESTMOVEMENTS,REQUIRE_ANY_CLIENT);

    EntityManager::clients = clients;

    gem = new GEMSupervisor(object_reg,psserver->GetDatabase());

    serverdr = new psServerDR;
    if (!serverdr->Initialize())
    {
        delete serverdr;
        serverdr = NULL;
        return false;
    }

    LoadFamiliarAffinityAttributes();
    LoadFamiliarTypes();
    CreateMovementInfoMsg();

    gameWorld = new psWorld();        
    gameWorld->Initialize( object_reg );

    return true;
}