int main() { Setup::SetupProgram(KEYBOARD | MOUSE ); Setup::SetupScreen( 1050, 650,WINDOWED, 8 ); Settings::SetAntialiasing( true ); install_joystick(JOY_TYPE_AUTODETECT); calibrate_joystick_name(0); install_timer(); LOCK_VARIABLE(ticks); LOCK_FUNCTION(ticker); install_int_ex(ticker , ticker_rate); LOCK_VARIABLE(ticks_move); LOCK_FUNCTION(ticker_move); if(install_int_ex(ticker_move , ticker_rate)!=0){sprintf(string_joystick_state,"Error Initializing Joystick !");}; if(!num_joysticks){sprintf(string_joystick_state,"No Joystick detected!");} else { sprintf(string_joystick_state,"%d Joysticks detected",num_joysticks);} Load_Fonts(); if(set_display_switch_mode(SWITCH_BACKGROUND)) {set_display_switch_mode(SWITCH_BACKAMNESIA);} Load_Tracker(); prepare_move_values(dock_move_selected);//prepa Prepare_Cross_Spline(dock_move_selected); char udp_buffer[UDPMAX_CAR]; int sinsize; int nbrbytessended=0; SOCKET sock; char broadcast='1'; WSADATA wsa; WSAStartup(MAKEWORD(2,0),&wsa); SOCKADDR_IN sin; sin.sin_family=AF_INET; sin.sin_addr.s_addr=inet_addr(ip); sin.sin_port=htons(udp_port); sock=socket(AF_INET,SOCK_DGRAM,0); //On initialise le socket avec SOCK_DGRAM pour dire qu'on est en UDP sprintf(string_Last_Order,"INIT socket"); if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &broadcast, sizeof broadcast) == -1) { perror("\a\nsetsockopt (SO_BROADCAST)"); exit(1); } bind(sock,(SOCKADDR*)&sin,sizeof(sin)); //Liaison entre la structure et la socket sprintf(string_Last_Order,"BIDING socket"); sinsize=sizeof(sin); memset(udp_buffer,0,sizeof(udp_buffer)); int old_iris=0; int old_focus=0; int old_zoom=0; int old_iris_fine=0; int old_focus_fine=0; int old_zoom_fine=0; sprintf(string_infos,"Compilation 14nov 09 / Pan= %d Tilt= %d Iris= %d Focus= %d Zoom= %d/ IP: %s / Port: %d",xadress,yadress,irisadress,focusadress,zoomadress,ip, udp_port); while(index_quit!=1) { while(ticks == 0) {rest(1);} ticks_passed = ticks; ticks = 0; poll_joystick(); Canvas::Fill(CouleurFond); petitchiffre.Print(string_infos,10,10); tracker_box(xtrack_window, ytrack_window); if(Thetracker_X!=old_trackerX || Thetracker_Y!=old_trackerY || Thetracker_X_fine!=old_trackerX_fine || Thetracker_Y_fine!=old_trackerY_fine || iris_state!= old_iris || focus_state!=old_focus || zoom_state!=old_zoom ) { if(index_rescale_signal==0) { udp_buffer[xadress-1]=buffer_tracker[xadress]+position_defaut[0]; udp_buffer[yadress-1]=buffer_tracker[yadress]+position_defaut[1]; if (buffer_tracker[xadress]+position_defaut[0]<0) {udp_buffer[xadress-1]=0;} if (buffer_tracker[xadress]+position_defaut[0]>255) {udp_buffer[xadress-1]=255;} if (buffer_tracker[yadress]+position_defaut[1]<0) {udp_buffer[yadress-1]=0;} if (buffer_tracker[yadress]+position_defaut[1]>255) {udp_buffer[yadress-1]=255;} } else if(index_rescale_signal==1) {udp_buffer[xadress-1]=buffer_tracker_rescaled[xadress]; udp_buffer[yadress-1]=buffer_tracker_rescaled[yadress];} if(tracker_mode==1){udp_buffer[xadress]=buffer_tracker[xadress+1]; udp_buffer[yadress]=buffer_tracker[yadress+1];} udp_buffer[irisadress-1]=iris_state; udp_buffer[focusadress-1]=focus_state; udp_buffer[zoomadress-1]=zoom_state; nbrbytessended=sendto(sock,udp_buffer,UDPMAX_CAR,0,(SOCKADDR*)&sin,sinsize); old_trackerX=Thetracker_X; old_trackerY=Thetracker_Y; old_trackerX_fine=Thetracker_X_fine; old_trackerY_fine=Thetracker_Y_fine; old_iris=iris_state; old_focus=focus_state; old_zoom=zoom_state; old_iris_fine=iris_state_fine; old_focus_fine=focus_state_fine; old_zoom_fine=zoom_state_fine; } Line( Vec2D( mouse_x-1,mouse_y-1), Vec2D( mouse_x+20,mouse_y+30),3.0).Draw( CouleurFader ); Line( Vec2D( mouse_x+20,mouse_y+30), Vec2D( mouse_x+30,mouse_y+10),3.0).Draw( CouleurFader ); Line( Vec2D( mouse_x+30,mouse_y+10), Vec2D( mouse_x-1,mouse_y-1),3.0).Draw( CouleurFader ); triangle(screen,mouse_x,mouse_y, mouse_x+20,mouse_y+30,mouse_x+30,mouse_y+10,makecol(255,255,255)); if(mouse_b) {triangle(screen,mouse_x,mouse_y, mouse_x+20,mouse_y+30,mouse_x+30,mouse_y+10,makecol(0,0,0)); } Canvas::Refresh(); } remove_timer(); shutdown(sock,2); closesocket(sock); allegro_exit(); return 0; }