📄 eventwindow.java
字号:
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 + -