⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventwindow.java

📁 国外人写的操作感挺好的一款滑雪游戏.结构也比较清楚
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
		setClockTime( (iRaceTime!=(-1)/*@TIME_INVALID*/)?iRaceTime:m_aSim[0/*@PLAYER*/].getTime(), 0 );
		//}
		//else
		//{
		//	setClockTime( 0, 0 );
		//}
	
//#ifndef _NO_GHOST
//		if ( m_data.iGameMode == 3/*@GAMEMODE_CHALLENGE*/ && m_data.iState >= STATE_GO )
//		{
//			if ( 32768000/*@MAX_DIST_M_COMMON*/ > m_aSim[GHOST].getPos(0/*@AXIS_X*/) && m_data.iGhostScore > m_aSim[GHOST].getTime() )
//			{
//				int fpTimeSec;
//				fpTimeSec = (m_data.iGhostScore - m_aSim[GHOST].getTime() ) * FP.MILLI;
//				m_aSim[GHOST].setVelConstraint(0/*@AXIS_X*/, 0, FP.div( 32768000/*@MAX_DIST_M_COMMON*/ - m_aSim[GHOST].getPos(0/*@AXIS_X*/),
//											   fpTimeSec ) );
//			}
//		}
//#endif
	
		m_data.iLastUpdateTime = iCurrentTime;
		m_canvas.m_bNeedPaint = true;
	}
	
	private void updateLabel_skating()
	{
		//boolean bVisible = (m_data.iState <= STATE_GO);
		m_label.m_bVisible = ((m_data.iState <= STATE_GO || m_bPlayerDone[0/*@PLAYER*/] ) && !m_bPaused);
		
		m_clockShelf[0].m_bVisible = !(m_data.iState <= STATE_GO);
		m_label.setText( STRING_READY );
//#ifndef _SIMPLE_LABELS
//		m_label.m_iFgColor = 0x9DACFD/*@COLOR_GAME_TEXT*/;
//#endif
			
		switch (m_data.iState)
		{
		case STATE_SET:
			m_label.setText( STRING_SET );
			break;
		case STATE_GO:
//#ifndef _SIMPLE_LABELS
//			m_label.m_iFgColor = 0x30E200/*@COLOR_GAME_GO*/;
//#endif
			m_label.setText( STRING_GO );
			break;
		case STATE_FAULT:
//#ifndef _SIMPLE_LABELS
//			m_label.m_iFgColor = 0xFF1E00/*@COLOR_GAME_FAULT*/;
//#endif
			m_label.setText( STRING_FAULT );
			break;			
		}
		
		if ( m_bPlayerDone[0/*@PLAYER*/] )
		{
			m_label.setAlignment( Drawable.ALIGNH_CENTER | Drawable.ALIGNV_MIDDLE );
			String szText = null;
//#ifndef _SIMPLE_LABELS
//			m_label.m_iFgColor = 0x9DACFD/*@COLOR_GAME_TEXT*/;
//#endif
			szText = m_canvas.convertResultToText( m_data.iEvent,
				m_aSim[0/*@PLAYER*/].getCrossingTime( 0/*@AXIS_X*/ ) );
	
			if (szText != null)
			{
				m_label.setText( szText );
			}
		}
		else
		{
			m_label.setAlignment( Drawable.ALIGNH_CENTER );
			m_label.m_iY = m_clockShelf[0].m_iY + m_clockShelf[0].m_iHeight;
		}
		
	}
	
	private void updateTimingBar( int iCurrentTime )
	{
//#ifndef _SIMPLE_TIMING_BAR
//		if ( m_iHiliteTime != (-1)/*@TIME_INVALID*/ && iCurrentTime - m_iHiliteTime > (HIGHLIGHT_TIME>>1) )
//		{
//			m_sTimingBarHiliteR.m_bVisible = false;
//			m_sTimingBarHiliteL.m_bVisible = false;
//		}
//#endif
	
		if ( m_iHiliteTime != (-1)/*@TIME_INVALID*/ && iCurrentTime - m_iHiliteTime > HIGHLIGHT_TIME )
		{
			m_sMaxHit.m_bVisible = false;
		}
	
		else
			m_sMaxHit.setTime( iCurrentTime - m_iHiliteTime );
	}
	
	private void paint_skating( Graphics g )
	{
		int iXD = m_iXD;
		if (iXD > m_iMaxScrollX)
		{			
			iXD = m_iMaxScrollX;
		}
	
		/////////PAINT SKATING BACKGROUND BEGIN////////
		int xPos;
		
//#ifndef _LOW_DETAIL
//		if (m_sky != null)
//		{
//					
//			if (m_iSkyY > 0)
//			{
//				// fill above the sky
//				g.setColor( 0xf3f7ff/*@COLOR_SKY*/ );
//				g.fillRect( 0, 0, m_canvas.getWidth(), m_iSkyY );
//			}
//				
//			// paint the sky
//			for( xPos = 0; xPos < m_canvas.getWidth(); xPos += m_sky.getWidth() )
//				g.drawImage( m_sky, xPos, m_iSkyY, TOPLEFT );
//		}
//#else	
		// fill above the sky
		g.setColor( 0xf3f7ff/*@COLOR_SKY*/ );
		g.fillRect( 0, 0, m_canvas.getWidth(), m_iFarTreesY );
//#endif
	
		if (m_farTrees != null)
		{
			// paint the background trees
			xPos = (-(iXD>>1)%m_farTrees.getWidth());
			if (xPos > 0)
				xPos -= m_farTrees.getWidth();
			for( ; xPos < m_canvas.getWidth(); xPos += m_farTrees.getWidth() )
				g.drawImage( m_farTrees, xPos, m_iFarTreesY, TOPLEFT );
		}
	
		if (m_tree != null)
		{
			// paint the tree bitmaps
			xPos = (-iXD%96/*@TREE_REPEAT_SKATING*/);
			if (xPos > 0)
				xPos -= 96/*@TREE_REPEAT_SKATING*/;
			boolean bTree = ((iXD/96/*@TREE_REPEAT_SKATING*/)&1) == 1;
			
			for( ; xPos < m_canvas.getWidth(); xPos += 96/*@TREE_REPEAT_SKATING*/, bTree=!bTree )
				g.drawImage( m_tree, xPos, m_iTreeY + ((bTree)?4/*@TREE_YOFF_COMMON*/:0), TOPLEFT );
		}
		
//#ifndef _LOW_DETAIL
//		// paint the crowd bitmaps
//		xPos = (-iXD%m_crowd.getWidth());
//		if (xPos > 0)
//			xPos -= m_crowd.getWidth();
//		for( ; xPos < m_canvas.getWidth(); xPos += m_crowd.getWidth() )
//			g.drawImage( m_crowd, xPos, m_iCrowdY, TOPLEFT );
//#endif
	
		// paint the sign bitmaps
		xPos = (-iXD%m_sign1.getWidth());
		if (xPos > 0)
			xPos -= m_sign1.getWidth();
		
//#ifndef _LOW_DETAIL
//		boolean bSign = (((iXD/m_sign1.getWidth())&1) == 1 );	// alternate signs
//#endif	
		
		for( ; xPos < m_canvas.getWidth(); xPos += m_sign1.getWidth()
//#ifndef _LOW_DETAIL
//		, bSign=!bSign
//#endif
		)
			g.drawImage( 
//#ifndef _LOW_DETAIL
//			bSign?m_sign1:m_sign2,
//#else
			m_sign1,
//#endif
			xPos, m_iSignY, TOPLEFT );
	
		// paint the ice as a solid fill
		g.setColor( 0xD0E0F0/*@COLOR_ICE*/ );
		g.fillRect( 0, m_iIceY, m_canvas.getWidth(), 42/*@ICE_HEIGHT*/ );
	
		// draw the lines on the ice
		g.setColor( 0xE0A0B0/*@COLOR_ICE_LINE_SKATING*/ );
		g.drawLine( 0, m_canvas.getCanvasHeight() - 13/*@ICE_LINE1_YOFF*/,
					    m_canvas.getWidth(), m_canvas.getCanvasHeight() - 13/*@ICE_LINE1_YOFF*/ );
		g.drawLine( 0, m_canvas.getCanvasHeight() - 25/*@ICE_LINE2_YOFF*/,
					    m_canvas.getWidth(), m_canvas.getCanvasHeight() - 25/*@ICE_LINE2_YOFF*/ );
		g.drawLine( 0, m_canvas.getCanvasHeight() - 37/*@ICE_LINE3_YOFF*/, 
						m_canvas.getWidth(), m_canvas.getCanvasHeight() - 37/*@ICE_LINE3_YOFF*/ );
		////////PAINT SKATING BACKGROUND END/////////

		// draw the diagonal lines for start and end
		g.setColor( 0xE0A0B0/*@COLOR_ICE_LINE_SKATING*/ );
		for( int i = 0; i < 4; i++ )
		{
			g.drawLine( ((m_canvas.getWidth()>>1) + i) - iXD, m_canvas.getCanvasHeight()-13/*@ICE_LINE1_YOFF*/, 
				((m_canvas.getWidth()>>1) - 16/*@STARTLINE_XRUN*/ + i) - iXD, m_canvas.getCanvasHeight()-37/*@ICE_LINE3_YOFF*/ );

			g.drawLine( (m_iMaxScrollX + (m_canvas.getWidth()>>1) + i) - iXD,
						 m_canvas.getCanvasHeight() - 13/*@ICE_LINE1_YOFF*/, 
						(m_iMaxScrollX + (m_canvas.getWidth()>>1) - 16/*@STARTLINE_XRUN*/ + i) - iXD,
						 m_canvas.getCanvasHeight() - 37/*@ICE_LINE3_YOFF*/ );
		}
	
		m_aSprites[1/*@AI_PLAYER*/][m_aiCurrentSprite[1/*@AI_PLAYER*/]].translatePaint( g, -iXD, 0 );
		m_aSprites[0/*@PLAYER*/][m_aiCurrentSprite[0/*@PLAYER*/]].translatePaint( g, -iXD, 0 );

//#ifndef _NO_GHOST
//		if( m_data.iGameMode == 3/*@GAMEMODE_CHALLENGE*/ )
//		{
//			int iGhostX = m_aSprites[GHOST][m_aiCurrentSprite[GHOST]].m_iX + GHOST_NAME_OFFSET_X_SKATING;
//			int iGhostY = m_aSprites[GHOST][m_aiCurrentSprite[GHOST]].m_iY - GHOST_NAME_OFFSET_Y_SKATING;
//			if ( iGhostY < 0 )
//				iGhostY = 0;
//			m_GhostName.setPosition( (iGhostX - (m_GhostName.m_iWidth>>1)), iGhostY );
//			m_GhostName.translatePaint( g, -iXD, 0 );
//		}
//#endif
		
		////////DRAW TIMING BAR BEGIN////////////
		xPos = m_iBarXPos;
		g.drawImage( m_timingBarLeft, xPos, m_iBarYPos, TOPLEFT );
		xPos += m_timingBarLeft.getWidth();
		for ( int i = 0; i < NUM_BAR_FILL; i++ )
		{
			g.drawImage( m_timingBarFill, xPos, m_iBarYPos, TOPLEFT );
			xPos += m_timingBarFill.getWidth();
		}
		g.drawImage( m_timingBarRight, xPos, m_iBarYPos, TOPLEFT );
		
		// paint markers and animations
		if( m_sMarker.m_bVisible )
			m_sMarker.paint( g );
		
		if( m_sCursor.m_bVisible )
			m_sCursor.paint( g );	
		
//#ifndef _SIMPLE_TIMING_BAR
//		if( m_sTimingBarHiliteL.m_bVisible )
//		{
//			m_sTimingBarHiliteL.paint( g );
//		}
//		
//		if( m_sTimingBarHiliteR.m_bVisible )
//		{
//			m_sTimingBarHiliteR.paint( g );
//		}			
//#endif
		
		if( m_sMaxHit.m_bVisible )
		{
			m_sMaxHit.paint( g );
		}		
		////////DRAW TIMING BAR END////////////
			
		super.paint( g );		
	}

	private void athleteReady_skating( int iAthlete )
	{
		// Set "finished" booleans to false
		m_bPlayerDone[iAthlete] = false;
		m_data.iCursorTime = 417/*@TIME_DELAY_SKATING*/;
		
		// Make sure player 1 starts with right leg(action right)
		m_data.iNextButton = 0x2000/*@VKEY_RIGHT*/;

		m_data.iTimeWindow[iAthlete] = 0;
			
		m_aSim[iAthlete].resetCrossings();
		m_aSim[iAthlete].setPosition(0,0);
		m_aSim[iAthlete].setTime(0);
		m_aSim[iAthlete].setPosConstraint( 0/*@AXIS_X*/, 32768000/*@MAX_DIST_M_COMMON*/, Simulator.CONSTRAINT_NONE);
		m_aSim[iAthlete].setVelConstraint(1/*@AXIS_Y*/,0,0);
		m_data.aiAthleteState[iAthlete] = ATHLETE_READY;
		m_aSim[iAthlete].setVelocity(0,0);

		
//#ifndef _NO_GHOST
//		if ( ( m_data.iGameMode != 3/*@GAMEMODE_CHALLENGE*/) || (iAthlete == 0/*@PLAYER*/) )
//		{
//#endif
			m_aSim[iAthlete].setVelConstraint(0/*@AXIS_X*/,0,0);
			m_aSim[iAthlete].setAcceleration(0,0);
			m_data.aiAthleteState[iAthlete] = ATHLETE_READY;
//#ifndef _NO_GHOST
//		}
//#endif
	
		// change the athlete sprite and set frame
		int startAnimation[] = {0,1,2,3,4};		// Reset the start animation to all frames
		m_aSprites[iAthlete][SPRITE_START].setFrameSequence( startAnimation );
		
		// Reset current sprite
		m_aiCurrentSprite[iAthlete] = SPRITE_START;
		
		m_data.iTimeWindow[iAthlete] = 0;
		
//#ifndef _NO_GHOST
//		if ( m_data.iGameMode == 3/*@GAMEMODE_CHALLENGE*/ )
//		{
//			int fpTimeSec;
//	
//			fpTimeSec =  m_data.iGhostScore * FP.MILLI;
//			m_aSim[GHOST].setAcceleration( GHOST_ACCEL_SKATING, 0 );
//			m_aSim[GHOST].setVelConstraint(0/*@AXIS_X*/, 0, FP.div( 32768000/*@MAX_DIST_M_COMMON*/, fpTimeSec ) );
//		}
//#endif
	}
	
	private void athleteStart_skating( int iAthlete, int iCurrentTime )
	{
		m_data.aiAthleteState[iAthlete] = ATHLETE_STARTING;
//#ifndef _NO_GHOST
//		if ((m_data.iGameMode != 3/*@GAMEMODE_CHALLENGE*/) || (iAthlete == 0/*@PLAYER*/) )
//		{
//#endif
			m_aSim[iAthlete].setVelConstraint(0/*@AXIS_X*/,262144/*@SKATE_VMIN*/,1048576/*@SKATE_VMAX*/);
			m_aSim[iAthlete].setAcceleration(-65536/*@SKATE_DECEL*/,0);
//#ifndef _NO_GHOST
//		}
//#endif
	

		// change the AI athlete sprite and set frame
		// apply impulse to get the AI athlete moving
		m_iDeltaV = m_aSim[iAthlete].getVelMax(0/*@AXIS_X*/);
		m_aSim[iAthlete].applyImpulse( 0/*@AXIS_X*/, (m_iDeltaV*3)>>3 );
		int startAnimation[] = {2,3,4};
		m_aSprites[iAthlete][SPRITE_START].setFrameSequence( startAnimation );
		m_aSprites[iAthlete][SPRITE_START].setFrame( 0 );
		
		m_data.iGoTime[iAthlete] = iCurrentTime;
	}	
	
	private void setCursor( int iTime )
	{
		int xPos = getCursorPos( iTime );
		m_sCursor.setPosition( xPos, m_iBarYPos + 1 );
	}
	
	private int getCursorPos( int iTime )
	{
		int iCursorTime = (iTime % m_iTimePeriod);
		int halfTimePeriod = (m_iTimePeriod>>1);
		
		if ( iCursorTime >= halfTimePeriod )
			iCursorTime = m_iTimePeriod - iCursorTime;
	
		int xPos = (( iCursorTime * ( m_iBarWidth - m_sCursor.m_iWidth ) ) / halfTimePeriod);
		xPos =  ( ( (xPos) <= (0) ) ? (0) : ( ( (xPos) >= (m_iBarWidth - m_sCursor.m_iWidth) ) ? (m_iBarWidth - m_sCursor.m_iWidth) : (xPos) ) )  ; 
		return xPos + m_iBarXPos;
	}
	
	private void setMarker( int iTime, int iCurrentTime )
	{
		m_sMarker.m_bVisible = true;
	
		int xPos = getCursorPos( iTime );
		
		m_sMarker.setPosition( xPos, m_iBarYPos + 1 );
	
		final int iWidthHalf = (m_iBarWidth>>1);
		final int iWidthFourth = (m_iBarWidth>>2);
		final int iWidthEighth = (m_iBarWidth>>3);
	
		xPos = (xPos - (m_canvas.getWidth()>>1)) + iWidthHalf+1;
		
		if ( ( xPos < ( iWidthHalf + iWidthFourth ) ) &&
			 ( xPos > ( iWidthFourth ) ) )
		{
			m_sMarker.setFrame(2);
		}
		else if ( ( xPos < ( iWidthHalf + iWidthFourth + iWidthEighth ) ) &&
				  ( xPos > ( iWidthEighth ) ) )
		{
			m_sMarker.setFrame(1);
		}
		else
		{
			if ( xPos <= MAX_HIT_RANGE || xPos >= m_iBarWidth - MAX_HIT_RANGE - m_sCursor.m_iWidth )
			{
				m_iHiliteTime = iCurrentTime;
				m_sMaxHit.m_bVisible = true;
				m_sMaxHit.setPosition( getCursorPos( iTime ) - 3, m_iBarYPos );
				m_sMarker.m_bVisible = false;
//#ifndef _SIMPLE_TIMING_BAR
//				if ( xPos <= MAX_HIT_RANGE )
//					m_sTimingBarHiliteL.m_bVisible = true;
//				else
//					m_sTimingBarHiliteR.m_bVisible = true;
//#endif
			}
			else
			{
				m_sMarker.setFrame(0);
				m_sMarker.m_bVisible = true;
			}
		}
	}
		
////////////Skating Window End///////////////


////////////Ski Jump Window Begin///////////////
//#ifndef _LIMITED_EVENTS
//	private void init_skiJump( ) throws IOException
//	{
//		if (!m_data.bInitialized)
//		{
//			m_data.iElapsedTime = 0;
//			m_data.iLastUpdateTime = (-1)/*@TIME_INVALID*/;
//			m_data.iStateStartTime = (-1)/*@TIME_INVALID*/;
//			m_data.iState = STATE_INVALID;
//			m_data.bFault = false;
//		}				
//				
//		// initialize the spline control points (ramp piece positions)
//		int i;
//		int fpTemp = 29 * 4096/*@M_PER_PIXEL*/;
//		for( i = 0; i < RAMP_SECTIONS+1; i++ )
//			m_afpRampX[i] = i * fpTemp;
//	
//		fpTemp = 25 * 4096/*@M_PER_PIXEL*/;
//		for( i = 0; i < RAMP_SECTIONS - 5; i++ )
//			m_afpRampY[i] = i * fpTemp;
//	
//		m_afpRampY[42] = m_afpRampY[41] + (19 * 4096/*@M_PER_PIXEL*/);
//		m_afpRampY[43] = m_afpRampY[42] + (14 * 4096/*@M_PER_PIXEL*/);
//		m_afpRampY[44] = m_afpRampY[43] + (10 * 4096/*@M_PER_PIXEL*/);
//		m_afpRampY[45] = m_afpRampY[44] + (6 * 4096/*@M_PER_PIXEL*/);
//		m_afpRampY[46] = m_afpRampY[45] + (2 *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -