예제 #1
0
void gfx_loop(int target_frame_rate, void (*render_func)(unsigned int)) {
    int b_end = 0;
    
    unsigned int last_render_t = time_ticks();
    
    while(!b_end) {

        gfx_handleWindowEvents(&b_end);
        
        unsigned int current_time = time_ticks();
        if ((current_time - last_render_t) * target_frame_rate >= 1000) {
            render_func(current_time - last_render_t);
            gfx_swapBuffers();
            last_render_t = current_time;
        }
    }
}
예제 #2
0
파일: sim.c 프로젝트: fouf/RAL
void simulation_tick(float delta_time) // Simulation loop
{
	SDL_Rect r_dest;
	switch(simulation.state)
	{
		case 0:
			// Configuration
			r_dest.x = (Application->Window->w / 2) - Logo->w / 2;
			r_dest.y = (Application->Window->h / 2) - Logo->h / 2;
			SDL_BlitSurface(Logo, NULL, Application->Window, &r_dest);	                      // Menu
			simulation.generation = simulation.total_prey = simulation.total_pred = amount = 0;
		break;
		case 1:
		if(time_ticks(Gametimer) > simulation.tickdelay)
		{
			if(!Gametimer->t_paused)
			{
				int i = 0;
				for(i = 0; i < simulation.generations; i++)
				{
					simulation_process(delta_time);
				}
				simulation.update = 1;
			}
			time_start(Gametimer);
		}
		if(simulation.update)
		{
			simulation_render(delta_time);
			simulation.update = 0;
		}
		
		// Update Variables
		char buff[512];
		int pbreed, pstarve, prbreed;
		pbreed = pstarve = prbreed = 0;
		pbreed = SendDlgItemMessage(simulation.Config, IDC_PRED_BREED, TBM_GETPOS, 0,0);
		pstarve = SendDlgItemMessage(simulation.Config, IDC_PRED_STARVE, TBM_GETPOS, 0,0);
		prbreed = SendDlgItemMessage(simulation.Config, IDC_PREY_BREED, TBM_GETPOS, 0,0);
		if(pbreed != simulation.g_pred_breed)
		{
			simulation.g_pred_breed = pbreed;
			snprintf(buff, 512, "%d", simulation.g_pred_breed);
			SetDlgItemText(simulation.Config, IDC_PRED_BREED_V, buff);
		}
		if(pstarve != simulation.g_pred_starve)
		{
			simulation.g_pred_starve = pstarve;
			snprintf(buff, 512, "%d", simulation.g_pred_starve);
			SetDlgItemText(simulation.Config, IDC_PRED_STARVE_V, buff);	
		}
		if(prbreed != simulation.g_prey_breed)
		{
			
			simulation.g_prey_breed = prbreed;		
			snprintf(buff, 512, "%d", simulation.g_prey_breed);
			SetDlgItemText(simulation.Config, IDC_PREY_BREED_V, buff);		
		}

		//
		break;
	}
}