예제 #1
0
int
main(int argc, char **argv)
{
    int last_track = -1;

    if (argc == 2 && strcmp(argv[1], "--always") == 0) {
	always = 1;
    } else if (argc > 1) {
	fprintf(stderr, "usage: [--always]\n");
	exit(1);
    }

    if (wb_init() < 0) {
	fprintf(stderr, "failed to initialize wb\n");
	exit(1);
    }

    set_flash(false);

    load_tracks();

    while (1) {
	int track;
	int bolt;

	if (! always) {
	    ween_time_wait_until_valid(ween_time_constraints, n_ween_time_constraints);
	}

	ms_sleep(random_number_in_range(2000, 5000));

	do {
	    track = random_number_in_range(0, N_TRACKS-1);
	} while (track == last_track);
	last_track = track;

	track_set_volume(tracks[track], ween_time_is_valid(&is_halloween_constraint, 1) ? 100 : 75);

	track_play_asynchronously(tracks[track], NULL);

	for (bolt = 0; bolt < N_BOLTS && bolt_times[track][bolt]; bolt++) {
	    int flashes = random_number_in_range(1, 2);
	    int ms_left = bolt_times[track][bolt];

	    while (flashes-- && ms_left) {
		set_flash(true);
		ms_left -= do_sleep(200, ms_left);
		set_flash(false);
		ms_left -= do_sleep(50, ms_left);
	    }
	    if (ms_left) ms_sleep(ms_left);
	}
    }
}
예제 #2
0
Music::Music() {
    Mix_OpenAudio(22050, MIX_DEFAULT_FORMAT, 2, 4096);
	Mix_VolumeMusic(MIX_MAX_VOLUME/4);
    
    cout << "Loading music" << endl;
    sceneintensity = 0;
    shouldbeplaying = false;
    
    ambient_tracks.resize(10);
    track_numbers.resize(10);
    
    for(unsigned int i = 0; i < track_numbers.size(); i++){
        track_numbers[i] = 0;
    }
    
    load_tracks();
    start_playback();
}
예제 #3
0
bool XplodifyPlaylist::load(sp_playlist * pl) {
    if(!pl) {
        return false;
    }

    m_playlist = pl;
    sp_playlist_add_callbacks(pl, const_cast<sp_playlist_callbacks *>(&cbs), this);

    if(!sp_playlist_is_loaded(pl))
    {
        m_loading = true;
    } else {
        m_loading = false; //already loaded.
        load_tracks();
    }

    return true;
}
예제 #4
0
void XplodifyPlaylist::playlist_state_changed(){

    boost::shared_ptr<XplodifySession> sess(m_session.lock());

    //Has the state changed cause we're done loading?
#ifdef _DEBUG
    std::cout << "Playlist state changed" << std::endl;
#endif
    if(sp_playlist_is_loaded(m_playlist))
    {
        if(m_loading) {
            m_loading = false;
            //we should now create shared_ptr and insert into cache.
            sess->get_pl_container()->add_playlist(this);
        }
        load_tracks();
#ifdef _DEBUG
        std::cout << "Playlist " << get_name() << " completed loading." << std::endl;
#endif
    }

    sess->update_state_ts();
    return;
}
예제 #5
0
void
view_tile(data_of_thread /*tile_threads* data*/ *local)
{
	gchar filename[256];

	local->x_glob=global_x;
	local->y_glob=global_y;//Чтобы отследить изменилось ли положение карты
	local->zoom=global_zoom;
	local->repo=global_curr_repo->data;
	number_threads = update_thread_number(1);
	printf("\n\n # of threads: %i \n\n", number_threads );

	if(!pixmap)
	{
		printf("no drawable -> NULL\n");
		return;
	}
	int mercator_x,mercator_y;	
//--------Yandex offset----------
	mercator_offset(local->zoom, local->x_glob, local->y_glob, &mercator_x, &mercator_y);
//--------Yandex offset----------

	printf("---repo dir: %s \n",g_strdup(local->repo->dir));

   	if (strcasestr(local->repo->name,"Yandex")!=NULL)
	{
		local->offset_x = - (mercator_x) % TILESIZE;
		local->offset_y = - (mercator_y) % TILESIZE;
		local->x =  floor((float)mercator_x / (float)TILESIZE) + local->i;
		local->y =  floor((float)mercator_y / (float)TILESIZE) + local->j;
	}
	else
	{
		local->offset_x = - global_x % TILESIZE;
		local->offset_y = - global_y % TILESIZE;
		local->x =  floor((float)(local->x_glob) / (float)TILESIZE) + local->i;
		local->y =  floor((float)(local->y_glob) / (float)TILESIZE) + local->j;
	}
	if (local->offset_x > 0) local->offset_x -= 256;
	if (local->offset_y > 0) local->offset_y -= 256;
	local->offset_x += TILESIZE*local->i;
	local->offset_y += TILESIZE*local->j;

//	if (load_tile(&local))
//	{
//number_threads = update_thread_number(-1);
//		return;
//	}
	load_tile(local);
/*
gdk_threads_enter();
	showed_tiles=g_slist_append(showed_tiles,filename);
gdk_threads_leave();
*/
	gchar* key;
	key = g_strdup_printf("%s/%d/%d/%d", local->repo->dir, local->zoom, local->x, local->y);
	g_hash_table_replace(ht,key,"MAP showing okay");

//----------Trafic visualization---------------
	if (global_trf_show)
	{
		printf("\n----------Trafic visualization---------------\n");
		printf("\n\nshow=%d ,auto=%d ,down=%d\n",global_trf_show,global_trf_auto,global_auto_download);

		if (strcasestr(curr_trf->name,"Yandex")!=NULL)
		{
			local->offset_x = - (mercator_x) % TILESIZE;
			local->offset_y = - (mercator_y) % TILESIZE;
			local->x =  floor((float)mercator_x / (float)TILESIZE) + local->i;
			local->y =  floor((float)mercator_y / (float)TILESIZE) + local->j;
		}
		else
		{
			local->offset_x = - local->x_glob % TILESIZE;
			local->offset_y = - local->y_glob % TILESIZE;
			local->x =  floor((float)(local->x_glob) / (float)TILESIZE) + local->i;
			local->y =  floor((float)(local->y_glob) / (float)TILESIZE) + local->j;
		}
		if (local->offset_x > 0) local->offset_x -= 256;
		if (local->offset_y > 0) local->offset_y -= 256;
		local->offset_x += TILESIZE*local->i;
		local->offset_y += TILESIZE*local->j;

		if (load_trf(local)==LOAD_OK)
		{
			load_tile(local);
			load_trf(local);
		}
//----------Trafic visualization---------------
	}

	if (number_threads==1)
	{
		printf ("load_tracks returned %d",load_tracks(local));
		printf ("load_tracks returned %d",load_current_track(local));
	}

//g_object_unref(data);
number_threads = update_thread_number(-1);
}