コード例 #1
0
ファイル: sound.cpp プロジェクト: Phaeodaria/abuse
song::song(char const * filename)
{
    data = NULL;
    Name = strdup(filename);
    song_id = 0;

    rw = NULL;
    music = NULL;

    char realname[255];
    strcpy(realname, get_filename_prefix());
    strcat(realname, filename);

    uint32_t data_size;
    data = load_hmi(realname, data_size);

    if (!data)
    {
        printf("Sound: ERROR - could not load %s\n", realname);
        return;
    }

    rw = SDL_RWFromMem(data, data_size);
    music = Mix_LoadMUS_RW(rw, 0);

    if (!music)
    {
        printf("Sound: ERROR - %s while loading %s\n",
               Mix_GetError(), realname);
        return;
    }
}
コード例 #2
0
ファイル: sound.cpp プロジェクト: Phaeodaria/abuse
//
// sound_init()
// Initialise audio
//
int sound_init( int argc, char **argv )
{
    char *sfxdir, *datadir;

    // Disable sound if requested.
    if( flags.nosound )
    {
        // User requested that sound be disabled
        printf( "Sound: Disabled (-nosound)\n" );
        return 0;
    }

    // Check for the sfx directory, disable sound if we can't find it.
    datadir = get_filename_prefix();
    sfxdir = (char *)malloc( strlen( datadir ) + 5 + 1 );
    sprintf( sfxdir, "%ssfx", datadir );
#ifdef WIN32
    // Attempting to fopen a directory under Windows will fail, and
    // opendir does not exist. Use GetFileAttributes instead.
    if( GetFileAttributes( sfxdir ) == INVALID_FILE_ATTRIBUTES )
#else
    FILE *fd = NULL;
    if( (fd = fopen( sfxdir,"r" )) == NULL )
#endif
    {
        // Didn't find the directory, so disable sound.
        printf( "Sound: Disabled (couldn't find the sfx directory %s)\n", sfxdir );
        return 0;
    }
    free( sfxdir );

    if (Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 1024) < 0)
    {
        printf( "Sound: Unable to open audio - %s\nSound: Disabled (error)\n", SDL_GetError() );
        return 0;
    }

    Mix_AllocateChannels(50);

    int tempChannels = 0;
    Mix_QuerySpec(&audioObtained.freq, &audioObtained.format, &tempChannels);
    audioObtained.channels = tempChannels & 0xFF;

    sound_enabled = SFX_INITIALIZED | MUSIC_INITIALIZED;

    printf( "Sound: Enabled\n" );

    // It's all good
    return sound_enabled;
}
コード例 #3
0
ファイル: fileman.cpp プロジェクト: JohnnyonFlame/abuse-sdl
int file_manager::rf_open_file(char const *&filename, char const *mode) {
	net_address *fs_server_addr = NULL;

	if (filename[0] == '/' && filename[1] == '/') // passive server file reference?
			{
		filename += 2;

		fs_server_addr = prot->get_node_address(filename, DEFAULT_COMM_PORT, 0);
		if (!fs_server_addr) {
			printf("couldn not get address for %s\n", filename);
			return -1;
		}
	} else if (default_fs)
		fs_server_addr = default_fs->copy();

	if (fs_server_addr) {
		net_socket *sock = proto->connect_to_server(fs_server_addr,
				net_socket::SOCKET_SECURE);
		delete fs_server_addr;

		if (!sock) {
			fprintf(stderr, "unable to connect\n");
			return -1;
		}

		remote_file *rf = new remote_file(sock, filename, mode, remote_list);
		if (rf->open_failure()) {
			delete rf;
			return -1;
		} else {
			remote_list = rf;
			return rf->sock->get_fd();
		}
	}

// FIXME: AK - Should we keep this?
//  secure_filename(filename,mode);
	if (filename[0] == 0)
		return -1;

	int flags = 0;
	while (*mode) {
		if (*mode == 'w')
			flags |= O_CREAT | O_RDWR;
		else if (*mode == 'r')
			flags |= O_RDONLY;
		mode++;
	}

	char tmp_name[200];
	if (get_filename_prefix() && filename[0] != '/')
		sprintf(tmp_name, "%s%s", get_filename_prefix(), filename);
	else
		strcpy(tmp_name, filename);

	int f = open(tmp_name, flags, S_IRWXU | S_IRWXG | S_IRWXO);
	if (f >= 0) {
		close(f);
		return -2;
	}

	return -1;
}