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

📄 cscene.cpp

📁 一个3D的保龄球的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}
		else
		{
		++m_frameIndex;
		}
		break;
		}*/ // removed by MILO 04-22
		
		if(withAI == 0) //without AI
		{
			if(!m_bMoving )
			{
				if(m_frameIndex>=15)
				{				
				SetStage(DS_ROTATION_POWER_CONFIRM, withAI);
				if( m_bIsTutStage )
				{
					m_iTutorialStage += TUTORIAL_DIRECTION;	
					m_bIsTutStage = false;
				}
				}
			}
			else
			{
				if(m_frameIndex == 1 && m_player->GetCurrentPower() == 80)
				{
					m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_FLAMES),0);	//Milo			
				}
				
				int step = m_player->GetCurrentPower()/8+8;
				m_ancPos += step;//the speed of the moving arrow depends on 
				if(m_player->GetIsFouls(m_ball.m_weight) == FOUL_TYPE_FASTER_DIRECTION)
				{
					m_ancPos += step*2;								
				}
				if (m_ancPos > (240+(GET_PRECISION(m_player->m_precision)*2)))//m_player->m_strength*8)
				{
					m_ancPos = 0;		
				}
				if (m_pInput->KeyPressed(VKEY_MENU_SELECT) )//|| m_m_pInput->KeyHold(VKEY_MENU_SELECT)) {
				{
					m_bMoving = false;	
					m_frameIndex = 0;
					if( m_player->GetIsFouls(m_ball.m_weight) != FOUL_TYPE_FASTER_DIRECTION )
					{
						SetStage(DS_ROTATION_POWER_CONFIRM, withAI);
						if( m_bIsTutStage )
						{
							m_iTutorialStage += TUTORIAL_DIRECTION;	
							m_bIsTutStage = false;
						}
					}
				}
			}			
		}
		else //with AI
		{		
			//m_bMoving = false;
			SetStage(DS_ROTATION_POWER_CONFIRM, withAI);
		}		
		
		++m_frameIndex;
		break;
	case DS_ROTATION_POWER_CONFIRM:		
		{
			int i = m_player->PlayingAnimation(TRUE);
			if ( i == PLAYER_ANI_FINISH || i == PLAYER_ANI_FOUL_FINISH)
			{
				if(i == PLAYER_ANI_FINISH) //normal
				{
					if(m_frameIndex > m_player->GetStopFrame() + 1)
					{
						SetStage(DS_BALL_RUNNING, withAI);	
					}
					else
					{
						++m_frameIndex;
					}
				}
				else //foul
				{
					if( m_player->m_iFoulAnimType == FOUL_LINE_ANIM )
					{
						setFoulStage(DS_PLAYER_FOULS, withAI);
					}
					else
					{
						setFoulStage(DS_PLAYER_FOULS2, withAI);
					}
				}
			}
			else 
			{
				m_ball.StepWithPlayer(m_player, &m_vHandPos, FALSE);//ball follows the player...
			}
			saveReplayData(m_iSaveFrameCnt);
			++m_iSaveFrameCnt;			
		}		
		break;
		
	case DS_PLAYER_FOULS:
		if (m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FINISH 
			|| m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FOUL_FINISH)
		{				
			SetStage(DS_WAITING_TEN_SECOND);
		}
		++m_iBonusAni;
		break;
	case DS_PLAYER_FOULS2:
		m_frameIndex++;
		if( m_frameIndex > 20 )
		{
			if (m_frameIndex == 21)
			{
				m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_AUD3),0);//ID_SOUND_AUD3),0); //ConvertSoundID(ID_SOUND_AUD_DEPRESS//SDF_MID_FOOT_FAULT
			}
			++m_iBonusAni;
		}	
		
		
		if (m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FINISH 
			|| m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FOUL_FINISH)
		{
			if( m_frameIndex > 53 )
			{
				m_frameIndex = 0;
				switchToWaiting();//SetStage(DS_WAITING_TEN_SECOND);
			}
		}
		break;
	case DS_BALL_RUNNING:
		{				
			//for tutorial
			if(m_frameIndex == 0 && !(m_iTutorialStage & TUTORIAL_SPIN_CONTROL))
			{
				setCurTutorialStage(TUTORIAL_SPIN_CONTROL, withAI);
				m_frameIndex = 1;	
				break;
			}
			/*			else
			{		
			if( m_bIsTutStage && withAI == 0)
			{
			m_bIsTutStage = true;
			if(m_pInput->KeyPressed(VKEY_MENU_SELECT))
			{
			m_frameIndex = 0;
			m_iTutorialStage += TUTORIAL_SPIN_CONTROL;//TUTORIAL_FINISH;//TUTORIAL_DONE_SPIN_CONTROL;
			m_bIsTutStage = false;
			}
			break;
			}
			
			  }
			*/			
			
			if(m_bIsTutStage && withAI == 0)
			{
				if(m_pInput->KeyPressed(gk_NUM4 | gk_NUM6) 
					|| (m_ball.GetPosition().y ) > LANE_LENGTH || m_ball.m_ballState != BALL_ONLANE)
				{
					m_iTutorialStage += TUTORIAL_SPIN_CONTROL;
					m_bIsTutStage = false;
				}
				//break;			
			}
			
			if(	m_bWitheScreen == TRUE)
			{
				m_bWitheScreen = FALSE; 
			}
			
			if(step(withAI))////in Game
			{
				m_bIsCollisionFinish = true;
				
				
				
				break;
			}
			
			if ( (m_ball.GetPosition().y ) < LANE_WIDTH +LANE_LENGTH )
			{		
				m_ball.SetRenderingProperty(m_nFrame);
			}
			else
			{
				m_object[RENDER_BALL]->SetHideProperty(TRUE);		
			}
			
			int check = 0x0001;
			for (i = 0; i < 10; ++i) 
			{				
				if ( ( (m_currentTenpinState & check) >> i == 1)) 
				{					
					if (m_tenpin[i].m_tenpinState == TENPIN_STATE_OUTSIDE)
					{	
						m_object[i]->SetHideProperty(TRUE);
					}
				}					
				check = check << 1;
			}
			
			coinCollisionOnLane();
			
			//for FOV changing //Milo 12-28
			//Qiu Li, 2005/1/14
			if( !m_changeFOV )
				//Qiu Li end
			{
				if(m_cCamera->m_bFinished )
				{
					if( !m_bReplay && m_collideLookType==0 )
					{
						int i=getRandomNumber(3);
						m_collideLookType = i+1;
						switch( m_collideLookType )
						{
						case COLLIDE_LOOK_FORWARD:
							m_frameIndex += 6;
							m_render3D.GetG3d()->setZDist(FOV_OTHERS - m_frameIndex); //Milo 12-28					
							break;
						case COLLIDE_LOOK_CENTER:
							if(!m_bIsDraw)
							{
								m_object[RENDER_SCENE]->SetHideProperty(true);
								setCameraStage(CCSS_COLLIDE_CENTER);
							}
							else
							{
								//setCameraStage(CCSS_COLLIDE_RIGHT);
							}
							break;
						case COLLIDE_LOOK_RIGHT:
							setCameraStage(CCSS_COLLIDE_RIGHT);
							break;
						case COLLIDE_LOOK_BACK:
							m_object[RENDER_PLAYER]->SetHideProperty(false);
							setCameraStage(CCSS_COLLIDE_BACK);
							break;
						}
					}
					else if( m_collideLookType == COLLIDE_LOOK_FORWARD && m_frameIndex <= (FOV_OTHERS - FOV_FORWARD))	
					{
						m_frameIndex += 6;
						m_render3D.GetG3d()->setZDist(FOV_OTHERS - m_frameIndex); //Milo 12-28					
					}
				}
			}
			saveReplayData(m_iSaveFrameCnt);
			++m_iSaveFrameCnt;
		}
		break;
		
		/*case DS_TUTORIAL:
		{
		if(m_pInput->KeyPressed(VKEY_MENU_SELECT))
		{
		m_curStage = m_lastStage;
		m_iTutorialStage += 1;//DO TO NEXT TUTORIAL ; TUTORIAL_DONE;
		}			
		}
		break;	*/	
	case DS_COLLISION_FINISH:
	case DS_COLLISION_FINISH_WITH_PLAYER_ANI:
		{	
			int stage ;
			if(((m_bAutoReplay == TRUE && m_bReplay == FALSE)
				|| m_pInput->KeyPressed(gk_LSOFT)) && withAI ==0)//gk_POUND
			{			
				m_iPlayerFinshAni = m_player->GetAnimationOption();
				SetStage(DS_DELIVERY_REPLAY);	
			}
			else
			{
				++m_frameIndex;
			}
			if (m_frameIndex > STOP_ON_FOULS_FEET * 2 ) /*with AI*/
			{
				stage = m_curStage == DS_COLLISION_FINISH ? DS_SHOW_GRABBING_ANIMATION
					:DS_SHOW_GRABBING_ANIMATION_WITH_PLAYER_ANI;
				SetStage(stage, withAI);
			}
			
		}	
		break;		
		
	case DS_PLAYER_FINISH_ANI:
		{
			if(m_pInput->KeyPressed(gk_NUM5|gk_MSOFT))
			{
				m_colAni = WITHOUT_ANI;
				switchToWaiting();
			}
			else
			{
				if(m_pInput->KeyPressed(gk_LSOFT) && withAI ==0 && //gk_POUND
					(m_colAni == ANI_FENCE_COLLISION || m_colAni == ANI_IN_GUTTER))
				{				
					m_iPlayerFinshAni = m_player->GetAnimationOption();
					SetStage(DS_DELIVERY_REPLAY);
				}
				else
				{
					if (m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FINISH
						|| m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FOUL_FINISH)
					{			
						if(m_frameIndex >  m_player->GetStopFrame() + STOP_ON_FOULS_FEET)
						{
							m_colAni = WITHOUT_ANI;
							SetStage(DS_WAITING_TEN_SECOND);
						}
						else
						{
							++m_frameIndex;
						}
					}	
				}
			}
		}
		break;
		
	case DS_WAITING_TEN_SECOND:
		{
		/*if(((m_bAutoReplay == TRUE && m_bReplay == FALSE)
		|| m_pInput->KeyPressed(gk_POUND)) && withAI ==0)
		{		
		//SetStage(DS_DELIVERY_REPLAY);	
		
		  }
		  else
		  {
		  
		}	*/
			++m_frameIndex;		
			if (m_frameIndex > STOP_ON_FOULS_FEET * 2) /*with AI*/
			{
				switchToWaiting();
			}
			
		}
		break;
		
	case DS_SHOW_GRABBING_ANIMATION:
	case DS_SHOW_GRABBING_ANIMATION_WITH_PLAYER_ANI:
		{	
			if(m_pInput->KeyPressed(gk_LSOFT) && withAI ==0)//gk_POUND
			{				
				if(m_colAni == ANI_COLLISION_STRIKE || m_colAni == ANI_TURKEY_STRIKE)
				{	
					m_iPlayerFinshAni = PLAYER_ANI_CHEER2;
				}
				m_currFrame = 0;
				SetStage(DS_DELIVERY_REPLAY);
			}
			else
			{
				if(m_colAni == ANI_COLLISION_STRIKE || m_colAni == ANI_TURKEY_STRIKE)
				{//play 3 strike shows 
					//strike
					bool b = strikeRelaying();		
					//STRIKE FINISH
					if(b)
					{
						int i = 0;
						for (i=0;i<10;++i)
						{
							//if(m_tenpin[i].m_tenpinState != TENPIN_STATE_STAND) 
							{
								m_tenpin[i].SetHideProperty(FALSE);
							}
						}
						if(m_curCamera == CCSS_COLLIDE_RIGHT)// CCSS_COLLIDE_BACK)//Milo 04-11
						{				
							//m_bAutoReplay = FALSE;
							//m_object[RENDER_GRABBING_TENPIN]->SetHideProperty(FALSE);
							//grabbingTenpins(FALSE,withAI);
							//++m_iBonusAni;
							
							//new Milo 03-31
							//if(m_colAni == ANI_COLLISION_STRIKE || m_colAni == ANI_TURKEY_STRIKE)
							m_bAutoReplay = TRUE;							
							m_currFrame = 0;
							m_object[RENDER_BALL]->SetHideProperty(TRUE);
							for(i=0;i<10;++i)// FOR TENPIN
							{		
								m_tenpin[i].SetHideProperty(TRUE);
							}							
							m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_STRIKE),0);	//sound for STRIKE	
							m_iPlayerFinshAni = m_player->GetAnimationOption();
							if(withAI == 0)
							{
								SetStage(DS_DELIVERY_REPLAY);//DS_PLAYER_FINISH_ANI, withAI);	
							}
							else
							{								
								SetStage(DS_PLAYER_FINISH_ANI, withAI);
							}
						}
						else
						{			
							m_currFrame = 0;
							++m_curCamera;
							if(m_curCamera == CCSS_COLLIDE_RIGHT)
							{
								if(m_pEngine->GetSound()->GetVibOn() != false)  //the strike did not have called it
								{
									m_pEngine->GetSound()->PlayVibrate();							
								}
							}
							setCameraStage(m_curCamera);
						}
					}
				}
				else if(m_colAni == ANI_COLLISION_SPARE)
				{
					m_bAutoReplay = TRUE;							
					m_currFrame = 0;
					m_object[RENDER_BALL]->SetHideProperty(TRUE);
					for(i=0;i<10;++i)// FOR TENPIN
					{		
						m_tenpin[i].SetHideProperty(TRUE);
					}
					m_iPlayerFinshAni= m_player->GetAnimationOption();
					if(withAI == 0)
					{
						SetStage(DS_DELIVERY_REPLAY);//DS_PLAYER_FINISH_ANI, withAI);							
					}
					else
					{						
						SetStage(DS_PLAYER_FINISH_ANI, withAI);
					}
				}
				else
				{
					grabbingTenpins(FALSE,withAI);
					++m_iBonusAni;
				}
			}					
			
		}
		break;
		
	case DS_DELIVERY_REPLAY:
		if(m_pInput->KeyPressed(VKEY_MENU_NEXT) && !(m_bIsTutStage))// back
		{
			//switchToWaiting();
			if(m_bTvOn == TV_ANI_SHOW)
			{
				setTvRollBack(1);
				//for jump to next frame 
				//m_pEngine->GetSound()->stopMIDI();
				//m_object[RENDER_TV]->SetCurrentFrame(TV_END);
				//playingTvAni();
			}
			else
			{				
				if(m_bTvAniPlaying)
				{
					//--m_iBonusAni;
					//setTvRollBack(1);
					m_pEngine->GetSound()->stopMIDI();
					m_bTvAniPlaying = false;
				}
				else
				{
					setTvRollBack(0);
				}
				
			}
			break;
		}
		
		if(m_bTvOn == TV_ANI_SHOW)
		{
			playingTvAni();
		}
		else if(m_bTvOn == TV_ANI_SHOW_DONE)
		{				
			if(!m_bTvAniPlaying)
			{				
			/*if (m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FINISH 
			|| m_player->PlayingAnimation(TRUE) == PLAYER_ANI_FOUL_FINISH)

⌨️ 快捷键说明

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