void WED_GISBoundingBox::ResizeSide(GISLayer_t l,int side, const Vector2& delta, bool symetric) { MoveSide(l,side, delta); if(symetric) MoveSide(l,(side+2)%4,-delta); }
int tetris_exec( int fdfb, int fdrc, int fdlcd, char *cfgfile ) { struct timeval tv; int x; int i; int fd; FILE *fp; char *line; char *p; if ( FBInitialize( 720, 576, 8, fdfb ) < 0 ) return -1; setup_colors(); if ( RcInitialize( fdrc ) < 0 ) return -1; /* load setup */ fp = fopen( CONFIGDIR "/games.cfg", "r" ); if ( fp ) { line=malloc(128); isalloc=1; #ifdef HAVE_CURL proxy_addr=0; proxy_user=0; #endif hscore=0; while( fgets( line, 128, fp ) ) { if ( *line == '#' ) continue; if ( *line == ';' ) continue; p=strchr(line,'\n'); if ( p ) *p=0; p=strchr(line,'='); if ( !p ) continue; *p=0; p++; #ifdef HAVE_CURL if ( !strcmp(line,"proxy") ) proxy_addr=strdup(p); else if ( !strcmp(line,"proxy_user") ) proxy_user=strdup(p); else if ( !strcmp(line,"hscore") ) hscore=strdup(p); #endif } fclose(fp); free(line); } fd = open( GAMESDIR "/tetris.hscore", O_RDONLY ); if ( fd == -1 ) { mkdir( GAMESDIR, 567 ); for( i=0; i < 8; i++ ) { strcpy(hsc[i].name,"nobody"); hsc[i].points=30; } } else { read( fd, hsc, sizeof(hsc) ); close(fd); } #ifdef HAVE_CURL if ( hscore ) { LoadHScore(); } #endif #if defined(HAVE_DBOX_HARDWARE) || defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) Fx2ShowPig( 480, 400, 176, 144 ); #endif while( doexit != 3 ) { BoardInitialize(); DrawBoard( ); /* 0 = all */ NextItem(); #ifdef HAVE_DREAMBOX_HARDWARE Fx2ShowPig(480, 400, 176, 144 ); #endif doexit=0; while( !doexit ) { tv.tv_sec = 0; tv.tv_usec = 10000; x = select( 0, 0, 0, 0, &tv ); /* 10ms pause */ RcGetActCode( ); if ( doexit ) break; tv.tv_sec = 0; tv.tv_usec = 10000; x = select( 0, 0, 0, 0, &tv ); /* 10ms pause */ RcGetActCode( ); if ( doexit ) break; MoveSide(); if ( !FallDown() ) { RemoveCompl(); if ( !NextItem() ) doexit=1; } #if defined(USEX) || defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FBFlushGrafic(); #endif RcGetActCode( ); } if ( doexit != 3 ) { actcode=0xee; DrawGameOver(); #if defined(USEX) || defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FBFlushGrafic(); #endif doexit=0; SaveGame(); #ifdef HAVE_CURL if ( use_ihsc ) ShowIHScore(); #endif ShowHScore(hsc); Fx2PigPause(); #if defined(USEX) || defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FBFlushGrafic(); #endif i=0; actcode=0xee; while(( actcode != RC_OK ) && !doexit ) { tv.tv_sec = 0; tv.tv_usec = 100000; x = select( 0, 0, 0, 0, &tv ); /* 100ms pause */ RcGetActCode( ); i++; if ( i == 50 ) { FBDrawString( 190, 480, 48, "press OK for new game",GRAY,0); #if defined(USEX) || defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) FBFlushGrafic(); #endif } } Fx2PigResume(); } } Fx2StopPig(); #if defined(HAVE_DBOX_HARDWARE) || defined(HAVE_SPARK_HARDWARE) || defined(HAVE_DUCKBOX_HARDWARE) /* fx2 */ /* buffer leeren, damit neutrino nicht rumspinnt */ realcode = RC_0; while( realcode != 0xee ) { tv.tv_sec = 0; tv.tv_usec = 300000; x = select( 0, 0, 0, 0, &tv ); /* 300ms pause */ RcGetActCode( ); } #endif RcClose(); FBClose(); /* save hscore */ fd = open( GAMESDIR "/tetris.hscore", O_CREAT|O_WRONLY, 438 ); if ( fd != -1 ) { write( fd, hsc, sizeof(hsc) ); close(fd); } if ( isalloc ) { #ifdef HAVE_CURL if ( proxy_addr ) free ( proxy_addr ); if ( proxy_user ) free ( proxy_user ); #endif if ( hscore ) free ( hscore ); } return 0; }
void CameraController::Update() { if ( m_ZoomDirection == ZOOM_DIRECTION_NONE ) { return; } float targetY = 0; float targetViewY = 0; switch ( m_ZoomStatus ) { case ZOOM_STATUS_NEAREST: targetY = NEAREST_Y; targetViewY = NEAREST_VIEW_Y; break; case ZOOM_STATUS_DEGREE_1: targetY = DEGREE_1_Y; targetViewY = DEGREE_1_VIEW_Y; break; case ZOOM_STATUS_DEGREE_2: targetY = DEGREE_2_Y; targetViewY = DEGREE_2_VIEW_Y; break; case ZOOM_STATUS_DEGREE_3: targetY = DEGREE_3_Y; targetViewY = DEGREE_3_VIEW_Y; break; case ZOOM_STATUS_FARTHEST: default: targetY = FARTHEST_Y; targetViewY = FARTHEST_VIEW_Y; break; } float time = static_cast<float>( Timer::GetInstance()->GetElapsedTime() ) / 1000; float delta = time * 10.0f; D3DXVECTOR3 view = m_LookAtPoint - m_EyePoint; D3DXVec3Normalize( &view, &view ); float dotView = D3DXVec3Dot( &view, &( -m_UpVector ) ); // Log( "%-8f도!!! %-8f \n", dotView, targetViewY ); // Log( "목표 = %f, 현위치 = %f \n", targetY, m_EyePoint.y ); // 카메라 업 if ( m_ZoomDirection == ZOOM_DIRECTION_BACK ) { if ( dotView < targetViewY ) { RotateUp( delta * dotView / ( m_EyePoint.y / 10 ) ); } MoveElevate( delta * 10 ); MoveForward( -delta * 10, true ); if ( targetY < m_EyePoint.y ) { m_ZoomDirection = ZOOM_DIRECTION_NONE; return; } } // 카메라 다운 else if ( m_ZoomDirection == ZOOM_DIRECTION_FOWARD ) { if ( dotView > targetViewY ) { RotateUp( -delta * dotView / ( m_EyePoint.y / 10 ) ); } MoveElevate( -delta * 10 ); MoveForward( delta * 10, true ); if ( targetY > m_EyePoint.y ) { m_ZoomDirection = ZOOM_DIRECTION_NONE; return; } } if ( m_ZoomPointX > 0 ) { m_ZoomPointX = __min( m_ZoomPointX, 50 ); m_ZoomPointX -= delta; MoveSide( delta ); } else if ( m_ZoomPointX < 0 ) { m_ZoomPointX = __max( m_ZoomPointX, -50 ); m_ZoomPointX += delta; MoveSide( -delta ); } if ( m_ZoomPointY > 0 ) { m_ZoomPointY = __min( m_ZoomPointY, 50 ); m_ZoomPointY -= delta; MoveForward( -delta ); } else if ( m_ZoomPointY < 0 ) { m_ZoomPointY = __max( m_ZoomPointY, -50 ); m_ZoomPointY += delta; MoveForward( delta ); } }