示例#1
0
int main(int argc, char **argv)
{
    StreamPlayer *player;
    int i;

    /* Print out usage if no file was specified */
    if(argc < 2)
    {
        fprintf(stderr, "Usage: %s <filenames...>\n", argv[0]);
        return 1;
    }

    if(InitAL() != 0)
        return 1;

    if(alIsExtensionPresent("AL_SOFT_buffer_samples"))
    {
        printf("AL_SOFT_buffer_samples supported!\n");
        alBufferSamplesSOFT = alGetProcAddress("alBufferSamplesSOFT");
        alIsBufferFormatSupportedSOFT = alGetProcAddress("alIsBufferFormatSupportedSOFT");
    }
    else
        printf("AL_SOFT_buffer_samples not supported\n");

    player = NewPlayer();

    /* Play each file listed on the command line */
    for(i = 1;i < argc;i++)
    {
        if(!OpenPlayerFile(player, argv[i]))
            continue;

        printf("Playing %s (%s, %s, %dhz)\n", argv[i],
               TypeName(player->type), ChannelsName(player->channels),
               player->rate);
        fflush(stdout);

        if(!StartPlayer(player))
        {
            ClosePlayerFile(player);
            continue;
        }

        while(UpdatePlayer(player))
            Sleep(10);

        /* All done with this file. Close it and go to the next */
        ClosePlayerFile(player);
    }
    printf("Done.\n");

    /* All files done. Delete the player, and close OpenAL */
    DeletePlayer(player);
    player = NULL;

    CloseAL();

    return 0;
}
示例#2
0
/************************
* End
* 	Termina una multiconferencia
*************************/
int MultiConf::End()
{
	Log(">End multiconf\n");

	//End watchers
	StopBroadcaster();

	//End mixers
	audioMixer.EndMixer(watcherId);
	textMixer.EndMixer(watcherId);

	//Stop encoding
	audioEncoder.StopEncoding();
	textEncoder.StopEncoding();

	//End encoders
	audioEncoder.End();
	textEncoder.End();

	//End mixers
	audioMixer.DeleteMixer(watcherId);
	textMixer.DeleteMixer(watcherId);

	//Get lock
	participantsLock.WaitUnusedAndLock();
	
	//Destroy all participants
	for(Participants::iterator it=participants.begin(); it!=participants.end(); it++)
		//Destroy it
		DestroyParticipant(it->first,it->second);

	//Clear list
	participants.clear();
	
	//Unlock
	participantsLock.Unlock();

	//Remove all players
	while(players.size()>0)
		//Delete the first one
		DeletePlayer(players.begin()->first);

	Log("-End conference mixers\n");

	//Terminamos los mixers
	videoMixer.End();
	audioMixer.End();
	textMixer.End();

	//No inicado
	inited = 0;

	Log("<End multiconf\n");
}
示例#3
0
int32_t CRoom::DeleteAllPlayers()
{
	RoleID arrRoleID[MaxUserCountPerRoom];
	int32_t nPlayerCount = 0;

	GetAllPlayers(arrRoleID, MaxUserCountPerRoom, nPlayerCount);

	for(int32_t i = 0; i < nPlayerCount; ++i)
	{
		DeletePlayer(arrRoleID[i]);
	}

	return S_OK;
}
示例#4
0
void
War2Wiz::ReceiveDisconnect
	(
	JBroadcaster*	sender,
	const JBoolean	timeout
	)
{
	JIndex senderIndex;
	GetSender(sender, &senderIndex);
	DeletePlayer(senderIndex);

	ostrstream data;
	data << senderIndex << ' ' << timeout;
	SendMessage(kWWAllPlayersIndex, kWWPlayerLeft, data);
}
示例#5
0
int main(int argc, char* argv[])
{
    struct Library *RealTimeBase = OpenLibrary("realtime.library", 40);
    struct Hook myHook;

    struct TagItem tags[] = { { PLAYER_Name     , (IPTR)"Test player" },
			      { PLAYER_Hook     , (IPTR)&myHook },
			      { PLAYER_Conductor, (IPTR)"Test conductor" },
			      { TAG_DONE        , (IPTR)NULL } };

    struct Player *player;

    myHook.h_Entry = (HOOKFUNC)myFunc;
    myHook.h_SubEntry = NULL;
    myHook.h_Data  = NULL;

    if (RealTimeBase == NULL)
    {
	printf("Couldn't open realtime.library\n");
	exit(1);
    }

    player = CreatePlayerA(tags);

    if (player == NULL)
    {
	printf("Couldn't create player\n");
	CloseLibrary(RealTimeBase);
	exit(1);
    }

    SetConductorState(player, CONDSTATE_RUNNING, 0);

    {
	struct TagItem tags[] = { { PLAYER_Ready, TRUE },
				  { TAG_DONE,     0 } };

	SetPlayerAttrsA(player, tags);
    }

    Wait(SIGBREAKF_CTRL_C);

    DeletePlayer(player);

    CloseLibrary(RealTimeBase);

    return 0;
}
示例#6
0
int main()
{
    PlayerList players;
    if (!Read(players))
        Save(players); // creates an empty file

    while (true)
    {
        std::cout << "*** Euromilhoes - Gestao de Jogadores ***" << std::endl << std::endl;

        std::cout << "Introduza a letra respectiva:" << std::endl;
        std::cout << "R - Registar um jogador." << std::endl;
        std::cout << "C - Consultar o saldo de um jogador." << std::endl;
        std::cout << "A - Carregar saldo de um jogador." << std::endl;
        std::cout << "E - Eliminar um jogador." << std::endl;
        std::cout << "L - Listar jogadores." << std::endl;
        std::cout << "S - Sair." << std::endl;

        char task = ReadVal<char>("");

        std::cout << std::endl;

        switch(ToUpper(task))
        {
            case RegisterPlayer:
            {
                std::cout << "* Registar jogador" << std::endl;

                std::string name = ReadString("Nome: ", NAME_WIDTH - 1);
                double amount = ReadVal<double>("Saldo inicial: ");

                int id = CreatePlayer(players, name, amount);
                std::cout << "Sucesso, atribuido numero " << id << "." << std::endl;
                std::cout << std::endl;

                break;
            }
            case CheckBalance:
            {
                std::cout << "* Consultar saldo" << std::endl;

                int id = ReadVal<int>("Numero do jogador: ");

                if (Player* player = SearchPlayerById(players, id))
                    std::cout << "Saldo de " << player->Name << ": " << std::fixed << std::setprecision(2) << player->Balance << "E." << std::endl;
                else
                    std::cout << "Jogador " << id << " nao encontrado." << std::endl;
                std::cout << std::endl;

                break;
            }
            case IncreaseBalance:
            {
                std::cout << "* Aumentar saldo" << std::endl;

                int id = ReadVal<int>("Numero do jogador: ");

                if (Player* player = SearchPlayerById(players, id))
                {
                    double amount = ReadVal<double>("Quantidade: ");

                    double oldAmount = player->Balance;

                    if (IncreasePlayerBalance(player, amount))
                    {
                        std::cout << player->Name << ": anterior: " << oldAmount << "E, aumento: ";
                        std::cout << amount << "E, actual: " << player->Balance << "E." << std::endl;
                    }
                    else
                        std::cout << "Valor invalido." << std::endl;
                }
                else
                    std::cout << "Jogador " << id << " nao encontrado." << std::endl;
                std::cout << std::endl;

                break;
            }
            case RemovePlayer:
            {
                std::cout << "* Remove jogador" << std::endl;

                int id = ReadVal<int>("Numero do jogador: ");
                if (Player* player = SearchPlayerById(players, id))
                {
                    std::string name = player->Name;
                    DeletePlayer(players, id);
                    std::cout << "Jogador " << name << " eliminado." << std::endl;
                }
                else
                    std::cout << "Jogador " << id << " nao encontrado." << std::endl;
                std::cout << std::endl;

                break;
            }
            case ListPlayers:
            {
                std::cout << "* Lista de jogadores" << std::endl;

                if (players.first.size() == 0)
                    std::cout << "Lista de jogadores vazia." << std::endl;
                else
                    for (size_t i = 0; i < players.first.size(); ++i)
                    {
                        std::cout << "|";

                        char prevFill = std::cout.fill(ID_FILL_CHAR);
                        std::streamsize prevWidth = std::cout.width(ID_WIDTH);
                        std::cout << std::right << players.first[i].Id;
                        std::cout.fill(prevFill);
                        std::cout.width(prevWidth);

                        prevWidth = std::cout.width(NAME_WIDTH);
                        std::cout << std::left << "| " << players.first[i].Name << " |" << std::endl;
                        std::cout.width(prevWidth);
                    }

                std::cout << std::endl;

                break;
            }
            case Exit:
            {
                char answer = ReadVal<char>("Tem a certeza que deseja sair (S/N)? ");

                if (ToUpper(answer) == 'S')
                    ExitAndSave(players);
                else if (ToUpper(answer) == 'N')
                    break;
                else
                    std::cout << std::endl; // Fall to default
            }
            default:
            {
                std::cout << "Opcao invalida. Por favor, tente outra vez." << std::endl;
                break;
            }
        }

        PauseScreen();
        ClearScreen();
    }

    PauseScreen();
}