Exemplo n.º 1
0
LVL_Npc *LevelScene::spawnNPC(LevelNPC npcData, NpcSpawnType sp_type, NpcSpawnDirection sp_dir, bool reSpawnable)
{
    if(!ConfigManager::lvl_npc_indexes.contains(npcData.id))
        return NULL;

    obj_npc* curNpcData = &ConfigManager::lvl_npc_indexes[npcData.id];
    LVL_Npc * npc = luaEngine.createLuaNpc(npcData.id);
    if(!npc)
        return NULL;

    npcData.array_id= ++data.npc_array_id;
    npc->setup = curNpcData;
    npc->reSpawnable=reSpawnable;
    npc->data = npcData;
    npc->init();
    npc->Activate();
    switch(sp_type)
    {
        case GENERATOR_WARP:
        switch(sp_dir)
        {
            case SPAWN_DOWN:
                npc->setWarpSpawn(LVL_Npc::WARP_TOP); break;
            case SPAWN_UP:
                npc->setWarpSpawn(LVL_Npc::WARP_BOTTOM); break;
            case SPAWN_LEFT:
                npc->setWarpSpawn(LVL_Npc::WARP_RIGHT); break;
            case SPAWN_RIGHT:
                npc->setWarpSpawn(LVL_Npc::WARP_LEFT); break;
        }
        break;
        case GENERATOR_PROJECTILE:

        break;
        default:
            break;
    }
    active_npcs.push_back(npc);
    npcs.push_back(npc);
    return npc;
}
Exemplo n.º 2
0
LVL_Npc *LevelScene::spawnNPC(const LevelNPC &npcData,
                              NpcSpawnType sp_type,
                              NpcSpawnDirection sp_dir,
                              bool reSpawnable)
{
    if(npcData.id <= 0)
        return nullptr;

    if(!ConfigManager::lvl_npc_indexes.contains(npcData.id))
        return nullptr;

    obj_npc *curNpcData = &ConfigManager::lvl_npc_indexes[npcData.id];
    LVL_Npc *npc = m_luaEngine.createLuaNpc(npcData.id);

    if(!npc)
        return nullptr;

    npc->setScenePointer(this);
    npc->setup = curNpcData;
    npc->reSpawnable = reSpawnable;
    npc->data = npcData;
    npc->data.meta.array_id = ++m_data.npc_array_id;
    npc->init();
    npc->m_spawnedGeneratorType = sp_type;
    npc->m_spawnedGeneratorDirection = sp_dir;

    switch(sp_type)
    {
    case GENERATOR_WARP:
        switch(sp_dir)
        {
        case SPAWN_DOWN:
            npc->setWarpSpawn(LVL_Npc::WARP_TOP);
            break;
        case SPAWN_UP:
            npc->setWarpSpawn(LVL_Npc::WARP_BOTTOM);
            break;
        case SPAWN_LEFT:
            npc->setWarpSpawn(LVL_Npc::WARP_RIGHT);
            break;
        case SPAWN_RIGHT:
            npc->setWarpSpawn(LVL_Npc::WARP_LEFT);
            break;
        }
        break;
    case GENERATOR_PROJECTILE:
        switch(sp_dir)
        {
        case SPAWN_DOWN:
            npc->setSpeedX(0.0);
            npc->setSpeedY(ConfigManager::g_setup_npc.projectile_speed);
            break;

        case SPAWN_UP:
            npc->setSpeedX(0.0);
            npc->setSpeedY(-ConfigManager::g_setup_npc.projectile_speed);
            break;

        case SPAWN_LEFT:
            npc->setSpeedX(-ConfigManager::g_setup_npc.projectile_speed);
            npc->setSpeedY(0.0);
            break;

        case SPAWN_RIGHT:
            npc->setSpeedX(ConfigManager::g_setup_npc.projectile_speed);
            npc->setSpeedY(0.0);
            break;
        }
        PGE_Audio::playSound(ConfigManager::g_setup_npc.projectile_sound_id);
        break;
    default:
        break;
    }

    npc->Activate();
    m_npcActive.push_back(npc);
    m_itemsNpc.push_back(npc);
    return npc;
}