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

📄 eventwindow.java

📁 国外人写的操作感挺好的一款滑雪游戏.结构也比较清楚
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
			setState_skating( iState, iCurrentTime );
			break;
//#ifndef _LIMITED_EVENTS
//		case EVENT_SKI_JUMP:
//			setState_skiJump( iState, iCurrentTime );
//			break;
//#endif
		case 1/*@EVENT_BIATHLON*/:
			setState_biathlon( iState, iCurrentTime );
			break;
		case 2/*@EVENT_SKIING*/:
			setState_skiing( iState, iCurrentTime );
			break;
		}		

		m_canvas.m_bNeedPaint = true;	
	}
	
	private void createAthlete( int iAthlete )  throws IOException
	{
		switch ( m_data.iEvent )
		{
		case 0/*@EVENT_SKATING*/:
			createAthlete_skating( );
			break;
//#ifndef _LIMITED_EVENTS
//		case EVENT_SKI_JUMP:
//			createAthlete_skiJump( iAthlete );
//			break;
//#endif
		case 1/*@EVENT_BIATHLON*/:
			createAthlete_biathlon( iAthlete );
			break;
		case 2/*@EVENT_SKIING*/:
			createAthlete_skiing( iAthlete );
			break;
		}		
	}
	
	public void onIdle() throws IOException
	{
		if (m_canvas.m_iLoadStatus < 100)
			return;

		if ( m_bPaused )
			return;
		
		switch ( m_data.iEvent )
		{
		case 0/*@EVENT_SKATING*/:
			onIdle_skating( );
			break;
//#ifndef _LIMITED_EVENTS
//		case EVENT_SKI_JUMP:
//			onIdle_skiJump( );
//			break;
//#endif
		case 1/*@EVENT_BIATHLON*/:
			onIdle_biathlon( );
			break;
		case 2/*@EVENT_SKIING*/:
			onIdle_skiing( );
			break;
		}
	}
	
	public void keyPressed( int iKeyCode, int iGameAction ) throws IOException
	{
		if (m_canvas.m_iLoadStatus < 100)
			return;
			
		// do this to "clear" key presses during init
		if (m_canvas.getCurrentTime() - m_iInitTime < 100)
			return;
	
		if (m_bPaused && iGameAction != 0x400000/*@VKEY_BACK*/)
		{
			unpause();
			return;
		}
		
		if (iGameAction == 0x400000/*@VKEY_BACK*/)
		{
			m_data.bWasPaused = true;
			m_canvas.m_iPauseReturn = -1;
			m_canvas.openMenu( MenuWindow.MENU_EVENTMENU );
// JCC - I don't think this is needed
//			if (m_data.iEvent == EVENT_BIATHLON)
//				m_data.aiFrame[PLAYER]=m_aSprites[PLAYER][m_data.iCurrentSprite[PLAYER]].m_iCurrentFrame;
			return;
		}		
	
		switch ( m_data.iEvent )
		{
		case 0/*@EVENT_SKATING*/:
			handleKey_skating( iKeyCode,iGameAction );
			break;
//#ifndef _LIMITED_EVENTS
//		case EVENT_SKI_JUMP:
//			handleKey_skiJump( iKeyCode, iGameAction );
//			break;
//#endif
		case 1/*@EVENT_BIATHLON*/:
			handleKey_biathlon( iKeyCode, iGameAction );
			break;
		case 2/*@EVENT_SKIING*/:
			handleKey_skiing( iKeyCode, iGameAction );
			break;
		}			
	}
	
	private void update( int iCurrentTime ) throws IOException
	{
		switch ( m_data.iEvent )
		{
		case 0/*@EVENT_SKATING*/:
			update_skating( iCurrentTime );
			break;
//#ifndef _LIMITED_EVENTS
//		case EVENT_SKI_JUMP:
//			update_skiJump( iCurrentTime );
//			break;
//#endif
		case 1/*@EVENT_BIATHLON*/:
			update_biathlon( iCurrentTime );
			break;
		case 2/*@EVENT_SKIING*/:
			update_skiing( iCurrentTime );
			break;
		}			
	}
	
	public void paint( Graphics g )
	{
		switch ( m_data.iEvent )
		{
		case 0/*@EVENT_SKATING*/:
			paint_skating( g );
			break;
//#ifndef _LIMITED_EVENTS
//		case EVENT_SKI_JUMP:
//			paint_skiJump( g );
//			break;
//#endif
		case 1/*@EVENT_BIATHLON*/:
			paint_biathlon( g );
			break;
		case 2/*@EVENT_SKIING*/:
			paint_skiing( g );
			break;
		}			
	}
		
////////////Skating Window Begin///////////////
	private void init_skating( ) 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;
		}				
		
		int iStartOffset = (m_canvas.getWidth()>>1);
		int iEndOffset = iStartOffset;
	    m_iMaxScrollX = 8000/*@MAX_DIST_PIXELS_COMMON*/ - iEndOffset + iStartOffset;
	
		// Set initial human position
		m_aiSkaterXPos[0/*@PLAYER*/] = iStartOffset - 30/*@P1_XOFFSET*/;
		m_aiSkaterYPos[0/*@PLAYER*/] = m_canvas.getCanvasHeight() - 53/*@P1_YOFFSET*/;
		// Set initial CPU position or ghost position

		m_aiSkaterXPos[1/*@AI_PLAYER*/] = iStartOffset - 38/*@P2_XOFFSET*/;
		m_aiSkaterYPos[1/*@AI_PLAYER*/] = m_canvas.getCanvasHeight() - 66/*@P2_YOFFSET*/;

		// create athletes first(takes more memory)
		m_aSprites = new Sprite[2/*@NUM_ATHLETES*/][SPRITE_COUNT_SKATING];
		
		// this now creates both athletes and the background in one call
		
		createAthlete( 0 );	
		
		m_canvas.updateLoadStatus(30);
	
		
		// create interface
		//////////INIT TIMING BAR BEGIN///////////////
		m_iBarXPos = 0;
		m_iBarYPos = m_canvas.getCanvasHeight() - 9;// -8 - 1;
				
		m_iTimePeriod = 833/*@MAX_TIME_WINDOW_SKATING*/<<1;

//#ifdef _IS_NokiaS60
//		m_timingBarFill = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 5/*@RES_BARFILL*/ );
//		m_timingBarLeft = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 6/*@RES_BARLEFT*/ );
//		m_timingBarRight = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 7/*@RES_BARRIGHT*/ );
//#else
		m_timingBarFill = TorinoCanvas.loadPackedImage( RESFILE_GFX, 5/*@RES_BARFILL*/ );
		m_timingBarLeft = TorinoCanvas.loadPackedImage( RESFILE_GFX, 6/*@RES_BARLEFT*/ );
		m_timingBarRight = TorinoCanvas.loadPackedImage( RESFILE_GFX, 7/*@RES_BARRIGHT*/ );
//#endif
	
		m_iBarWidth = ( m_timingBarLeft.getWidth() << 1 ) + ( NUM_BAR_FILL * m_timingBarFill.getWidth() ); 
		m_iBarXPos = (m_canvas.getWidth()>>1) - (m_iBarWidth>>1);
	
//#ifndef _SIMPLE_TIMING_BAR
//#ifdef _IS_NokiaS60
//		Image src = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 38/*@RES_BARHILR*/ );
//#else
//		Image src = TorinoCanvas.loadPackedImage( RESFILE_GFX, 38/*@RES_BARHILR*/ );
//#endif
//
//		m_sTimingBarHiliteR = new Sprite( src );
//		m_sTimingBarHiliteR.setPosition( m_iBarXPos + m_iBarWidth - src.getWidth(), m_iBarYPos );
//		m_sTimingBarHiliteR.m_bVisible = false;
//		addToFront( m_sTimingBarHiliteR );
//		
//#ifdef _IS_NokiaS60
//		src = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 37/*@RES_BARHILL*/ );
//#else
//		src = TorinoCanvas.loadPackedImage( RESFILE_GFX, 37/*@RES_BARHILL*/ );
//#endif
//
//		m_sTimingBarHiliteL = new Sprite( src );
//		m_sTimingBarHiliteL.setPosition( m_iBarXPos, m_iBarYPos );
//		m_sTimingBarHiliteL.m_bVisible = false;
//		addToFront( m_sTimingBarHiliteL );
//
//#ifdef _IS_NokiaS60
//		src = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 9/*@RES_BARMAXHIT*/ );
//#else
//		src = TorinoCanvas.loadPackedImage( RESFILE_GFX, 9/*@RES_BARMAXHIT*/ );
//#endif
//#else
//#ifdef _IS_NokiaS60
//		Image src = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 9/*@RES_BARMAXHIT*/ );
//#else
		Image src = TorinoCanvas.loadPackedImage( RESFILE_GFX, 9/*@RES_BARMAXHIT*/ );
//#endif
//#endif

//#ifdef _IS_NokiaS60
//		m_sMaxHit = new Sprite( src, 12, 12 );
//#else


		m_sMaxHit = new Sprite( src, 8, 8 );
//#endif
		m_sMaxHit.m_bVisible = false;
//#ifdef _SIMPLE_TIMING_BAR
		m_sMaxHit.setFPS( 6 );
//#else
//		m_sMaxHit.setFPS( 10 );
//#endif
		addToFront( m_sMaxHit );
	
//#ifdef _IS_NokiaS60
//		src = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 8/*@RES_BARMARKER*/ );
//#else
		src = TorinoCanvas.loadPackedImage( RESFILE_GFX, 8/*@RES_BARMARKER*/ );
//#endif

//#ifdef _IS_NokiaS60
//		m_sMarker = new Sprite( src, 6, 10 );
//#else


		m_sMarker = new Sprite( src, 3, 6 );
//#endif
		m_sMarker.m_bVisible = false;
		addToFront( m_sMarker );
	
//#ifdef _IS_NokiaS60
//		src = TorinoCanvas.loadPackedImage( RESFILE_SKATING, 4/*@RES_BARCURSOR*/ );
//#else
		src = TorinoCanvas.loadPackedImage( RESFILE_GFX, 4/*@RES_BARCURSOR*/ );
//#endif

		m_sCursor = new Sprite( src );
		addToFront( m_sCursor );		
		//////////INIT TIMING BAR END///////////////
		
		m_canvas.updateLoadStatus(40);	
		
		//int iFlags = Flag_Hundredths|Flag_Minutes;
		initClock(Flag_Hundredths|Flag_Minutes, 0);
		
		m_canvas.updateLoadStatus(50);
//#ifndef _SIMPLE_LABELS		
//		m_label = new Label(m_canvas.m_largeFont, 0, 0, 0, 0x9DACFD/*@COLOR_GAME_TEXT*/, 0x000000/*@COLOR_BLACK*/, Label.STYLE_OUTLINE);
//#else
		m_label = new Label(m_canvas.m_largeFont, 0, 0, 0, 0x000000/*@COLOR_BLACK*/, 0x000000/*@COLOR_BLACK*/, 0);
//#endif

		m_label.setAlignment( Drawable.ALIGNH_CENTER );
		m_label.m_iY = m_clockShelf[0].m_iY + m_clockShelf[0].m_iHeight;
		addToFront(m_label);
		
		m_label.m_bVisible = false;
		if( m_data.bInitialized )
		{
			/*if( m_data.iState > STATE_FAULT )
			{
				// restore AI calcs after resume
				m_data.iCPUDeltaV = m_data.iCPUDeltaV;
				m_data.iCPUDeltaTime = m_data.iCPUDeltaTime;
			}*/
			updateLabel_skating();
		}

//#ifndef _NO_GHOST
//		if( m_data.iGameMode == 3/*@GAMEMODE_CHALLENGE*/ )
//		{
//#ifndef _SIMPLE_LABELS
//			m_GhostName = new Label(m_canvas.m_menuFont, 0, 0, 0, 0xFFFF00/*@COLOR_YELLOW*/, 0x000000/*@COLOR_BLACK*/, Label.STYLE_OUTLINE);
//#else
//			m_GhostName = new Label(m_canvas.m_menuFont, 0, 0, 0, 0x000000/*@COLOR_BLACK*/, 0x000000/*@COLOR_BLACK*/, 0);
//#endif
//			m_GhostName.setText( m_data.sGhostName );
//		}
//#endif
	
		m_canvas.updateLoadStatus(80);
	
//#if defined(_IS_NokiaS60) && !defined(_MMAPI)
//		m_canvas.loadSound( 2/*@SOUND_FAULT*/, true );
//		m_canvas.loadSound( 3/*@SOUND_GUNSHOT*/, true );
//#else
		m_canvas.loadSound( 2/*@SOUND_FAULT*/ );
		m_canvas.loadSound( 3/*@SOUND_GUNSHOT*/ );
//#endif
		init_common();
		
		m_canvas.updateLoadStatus(90);
	}
	
	private void init_common() throws IOException
	{		
		createPauseLabels();
		
		if (!m_data.bInitialized)
		{
			m_data.iLastUpdateTime = 0;
			setState( STATE_READY, 0 );
			m_data.bInitialized = true;
			if ( m_data.iGameMode != 2/*@GAMEMODE_COMPETITION*/ )
			{
				unpause();
				if( m_data.iState <= STATE_GO )
					m_label.m_bVisible = true;
			}
		}
		else
			update( m_data.iLastUpdateTime );

//#if defined(_USE_THREAD) || defined(_USE_KEY_QUEUE)
//		m_canvas.clearKeyEvents();
//#endif

		m_iInitTime = m_canvas.getCurrentTime();
		m_canvas.m_bNeedPaint = true;
	}
	
	
	private void createAthlete_skating() throws IOException
	{				
		for( int iAthlete = 0; iAthlete < 2/*@NUM_ATHLETES*/; iAthlete++ )
		{			
			m_data.aSimData[iAthlete].bInitialized = m_data.bInitialized;
				
			m_aSim[iAthlete] = new Simulator( m_data.aSimData[iAthlete] );
			m_aSim[iAthlete].setPosConstraint( 1/*@AXIS_Y*/, 0, Simulator.CONSTRAINT_ABOVE);
			
			// determine the nation for the AI opponent
			if (!m_data.bInitialized)
			{
				if ( iAthlete != 0/*@PLAYER*/ )
				{
//#ifndef _NO_GHOST
//					if( m_data.iGameMode != 3/*@GAMEMODE_CHALLENGE*/ )
//					{
//#endif
						int iPlayer = m_data.iNumPlayers + m_data.iCurrentPlayer;
						if (iPlayer < m_data.iMaxPlayers && m_data.iGameMode == 2/*@GAMEMODE_COMPETITION*/
//#ifndef _NO_ONLINE
//							&& !m_data.bOnline
//#endif
							 )
						{
							m_data.iAINation = m_data.aiCountry[iPlayer];
						}
						else
						{
							do
							{
								m_data.iAINation = m_canvas.getRand(11/*@NATION_COUNT*/);
							} 
							while ( (m_data.iGameMode == 2/*@GAMEMODE_COMPETITION*/ && m_data.iAINation == 
								m_data.aiCountry[m_data.iCurrentPlayer]) 
								|| ( m_data.iGameMode == 1/*@GAMEMODE_PRACTICE*/ && m_data.iAINation == 10/*@NATION_EPYX*/ ));
						}
//#ifndef _NO_GHOST
//					}
//#endif
				}
			}
			
			// load palettes
			int iPal = getPalette( iAthlete );
		
			// load the sprites	
			// load the skating sprite
			
//#ifdef _IS_NokiaS60
//			short src[] = TorinoCanvas.loadPackedPalPixels( RESFILE_SKATING, 1/*@RES_SKATECYCLE*/,
//															RESFILE_SKATING, iPal );
//			byte abyData[] = TorinoCanvas.loadPackedResource( RESFILE_SKATING, 3/*@RES_CYCLEDAT*/ );
//#else
			Image src = TorinoCanvas.loadPackedPalImage( RESFILE_GFX, 1/*@RES_SKATECYCLE*/, RESFILE_COUNTRY, 2/*@RES_SKATEPAL*/ + iPal );
			byte abyData[] = TorinoCanvas.loadPackedResource( RESFILE_GFX, 3/*@RES_CYCLEDAT*/ );
		
//#endif
			
	
			m_aSprites[iAthlete][SPRITE_SKATING] = new Sprite( src,	abyData );
			
			m_aSprites[iAthlete][SPRITE_SKATING].setPosition((FP.toInt(m_aSim[iAthlete].getPos(0/*@AXIS_X*/)) * 16/*@PIXEL_PER_M*/)
															  + m_aiSkaterXPos[iAthlete], m_aiSkaterYPos[iAthlete]);
															  
//#ifdef _SHORT_ANIM
			int shortCycle[] = {0,1,2,3,0,4,5,6};
			m_aSprites[iAthlete][SPRITE_SKATING].setFrameSequence( shortCycle );
			m_aSprites[iAthlete][SPRITE_SKATING].setFPS(5);
//#else
//			m_aSprites[iAthlete][SPRITE_SKATING].setFPS(6);
//#endif

⌨️ 快捷键说明

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