📄 cscene.cpp
字号:
// if (m_frameIndex < m_playerAI.power)
// {
// ++m_frameIndex;
// }
else
{
SetStage(DS_AIM_SPOT_CONFIRM, withAI);
return;
}
}
m_player->StrengthChanging(m_ball.m_weight);
movingHand(TRUE, TRUE);
m_ball.StepWithPlayer(m_player, &m_vHandPos, TRUE);
}
void CScene::rotationPowerAdjust()
{
if(m_bReplay == TRUE)
{
if( m_aRotRec[m_iRecCount][0] == m_nFrame)
{
m_rotationPower = m_aRotRec[m_iRecCount][1];
++m_iRecCount;
}
}
else
{
if(m_cnIsFreeze)return;
//int rotationFlag=0;
if((m_pInput->KeyPressed(VKEY_SCROLL_RIGHT)|| (m_pInput->KeyHold(VKEY_SCROLL_RIGHT) && m_frameIndex%4 ==0))&& m_iRotationFlag<=0)
{
--m_iRotationFlag;
}
if((m_pInput->KeyPressed(VKEY_SCROLL_LEFT) || (m_pInput->KeyHold(VKEY_SCROLL_LEFT) && m_frameIndex%4 ==0))&& m_iRotationFlag>=0)
{
++m_iRotationFlag;
}
if( m_iRotationFlag && m_bIsTutStage)
{
m_frameIndex = 0;
m_iTutorialStage += TUTORIAL_SPIN_CONTROL;//TUTORIAL_FINISH;//TUTORIAL_DONE_SPIN_CONTROL;
m_bIsTutStage = false;
}
if(m_cnIsReverse)
m_iRotationFlag=-m_iRotationFlag;
if(m_iRotationFlag<0)
{
if (m_rotationPower > -MAX_PLAYER_ROTATION)//-m_player->m_rotation)//(MAX_PLAYER_ROTATION - m_player->GetStrength()/10 )) //(-(m_scene.getPlayer().getRotation())))
{
m_rotationPower = m_iRotationFlag;//--m_rotationPower; //decrease the rotation power
setRotPower(-1);
m_aRotRec[m_iRecCount][0] = m_nFrame;
m_aRotRec[m_iRecCount][1] = m_rotationPower;
++m_iRecCount;
}
}
if(m_iRotationFlag>0)
{
if (m_rotationPower < MAX_PLAYER_ROTATION)//m_player->m_rotation)//(MAX_PLAYER_ROTATION - m_player->GetStrength()/10 ))//m_scene.m_player->m_rotation)
{
m_rotationPower = m_iRotationFlag;//++m_rotationPower; //increase the rotation power
setRotPower(1);
m_aRotRec[m_iRecCount][0] = m_nFrame;
m_aRotRec[m_iRecCount][1] = m_rotationPower;
++m_iRecCount;
}
}
}
++m_frameIndex;
}
void CScene::Paint(CUI *pUI)
{
if(m_bTvOn == TV_ANI_SHOW || m_bTvOn == TV_ANI_ROLL_BACK)
{
/*if((m_colAni == ANI_COLLISION_STRIKE || m_colAni == ANI_COLLISION_SPARE || m_colAni == ANI_TURKEY_STRIKE)
&& m_bTvOn == TV_ANI_SHOW)
{
m_oldBuf = m_render3D.SetColorBuffer(m_hand2DBuf);
m_render3D.SetColorBuffer(m_oldBuf);
m_render3D.StartRender3D(); //Milo;forRender3D
//renderScene();
m_render3D.GetG3d()->m_renderParam = RP_EXTENDED|RP_FLAT|RP_NOFRUSTUM;
m_object[RENDER_TV]->Render(&m_render3D); //for TV
m_render3D.EndRender3D(); //Milo;forRender3D
//draw2DStuff(pUI);
}
else*/
PaintingTVAni();
}
else
{
m_render3D.StartRender3D(); //Milo;forRender3D
renderScene();
m_render3D.EndRender3D(); //Milo;forRender3D
draw2DStuff(pUI);
}
}
///set ball , player property
void CScene::setRoundInitInformation()
{
// m_pDM->LoadPlayerInfo( m_pMatch->GetCurPlayerID(), m_player);
LinkPlayer(m_pMatch->GetCurPlayer());
m_player->restart();
m_ball.initBall();
m_player->m_ballIndex = m_pMatch->GetCurBallID();
m_pDM->LoadBallInfo(m_pEngine,m_player->m_ballIndex, &m_ball);
((CGame *)m_pEngine->m_pGame)->GetUI()->DrawBmp2Buf(m_ball.m_Texture, 0, 0, m_pMatch->GetCurBallIconID(), 0, 0);
}
void CScene::MatchInit()
{
//set scene MODEL id, floor id, pin id
const Bg *pBg = m_pDM->GetBgInfo(m_pMatch->GetLane());
m_object[RENDER_SCENE]->SetModelID(pBg->modelIndex);
m_object[RENDER_FLOOR]->SetModelID(pBg->floorModelIndex);
//Milo 01-18
m_object[RENDER_FREEZE_AUDIENCE]->SetModelID(pBg->audienceIndex);//SetModelID(MODEL_FREEZE_AUD);
m_object[RENDER_FURNITURE]->SetModelID(pBg->furnitureIndex);//SetModelID(MODEL_FREEZE_AUD); //Milo 01-17
m_object[RENDER_SKYBOX]->SetModelID(pBg->skyboxModelIndex);
/*for (int i=0; i<10; i++)
{
//m_tenpin[i].SetModelID(MODEL_TENPIN); //11-22 by Milo
m_tenpin[i].SetModelID(MODEL_2D_TENPIN);
}*/
m_object[RENDER_GRABBING_TENPIN]->SetModelID(MODEL_GRBBING);
m_object[RENDER_SETTING_TENPIN]->SetModelID(MODEL_SETTING_PINS);
// m_object[RENDER_HANDS]->SetModelID(MODEL_HANDS);
m_object[RENDER_FIRST_AUDIENCE]->SetModelID(MODEL_AUD1);
m_object[RENDER_SECOND_AUDIENCE]->SetModelID(MODEL_AUD2);
m_object[RENDER_THIRD_AUDIENCE]->SetModelID(MODEL_AUD3);
// m_object[RENDER_FORTH_AUDIENCE]->SetModelID(MODEL_AUD3);
// for(int i=0;i<COINS_COUNT;i++)
m_object[RENDER_COIN]->SetModelID(MODEL_COIN);
m_object[RENDER_TV]->SetModelID(MODEL_TV);
m_bIsDraw = false;
}
void CScene::DeliveryInit()
{
//RESTART
setRoundInitInformation();
// m_ball.initBall();
// m_player->restart();
m_physics->InitializeObjects(TENPIN_INIT_POS);
m_time = 0;
m_bMovementFinished=false;
m_isInTenpinArea = false;
m_nFrame = 0;
int i,j;
for(i =0; i<10;++i)
{
m_iCheatPin[i] = 0;
m_tenpin[i].Restart();
for(j=0;j<3;++j)
{
m_tenpin[i].m_tenpinVelocity[j] = 0;
}
if (m_tenpin[i].m_tenpinState != TENPIN_STATE_STAND)
{
m_tenpin[i].m_tenpinState = TENPIN_STATE_OUTSIDE;
}
m_tenpin[i].SetModelID(MODEL_2D_TENPIN);///11-22 by Milo
}
/////clear the rotation record for replay
for(i =0; i<75;++i)
{
for(j =0; j<2;++j)
{
m_aRotRec[i][j] = 0;
}
}
m_rotationPower = 0;
m_frameIndex = 0;
//m_frameCount = m_render3D.m_Models[m_player->GetModelID()].getFrameCount();
m_bReplay = FALSE;
m_vBallStartPosition = Vector4s(0,0,0);
//set init positions that ball will reach
m_ballDestinationPosition = Vector4s(0,0,0);
m_iRecCount = 0;
setInitTenpinState(m_pMatch->GetCurPinMode());
m_isTransparent = FALSE;
m_iSoundPlay = WITHOUT_ANI;
m_bWholeScoreBoard = FALSE;
m_colAni = WITHOUT_ANI;
m_iHandFrame = 0;
m_bDirectResult = FALSE;
m_iIsCheat = WITHOUT_CHEAT;
//m_iMulBonusScore=1;
m_iBonusScore=0;
m_iBonusAni = 0;
m_bAutoReplay = FALSE;
m_bIsVSWin = FALSE;
m_bWitheScreen = FALSE;
m_bIsShaking = false;
m_iSoundFlag = 0;
m_iPlayerMoving = 0;
if(m_pMatch->GetCurPlayer() == 0 && m_pMatch->GetPlayerScore(0)->m_isSecondBall == FALSE)
{
m_iCoinMode = 0;
}
m_vCoinPos = Vector4s(0,0,12);
for(i=0; i<3; ++i)
m_iCheatCode[i] = 0;
//m_object[RENDER_PLAYER]->SetHideProperty(TRUE);
m_curHint =0;
//reset player AI
m_playerAI.aimSpot = 0;
m_playerAI.position = 0;
m_playerAI.power = 0;
m_playerAI.rotation = 0;
//END
//setRoundInitInformation(); // commented by Milo 01-25
setInitTenpinState(m_pMatch->GetCurPinMode());
m_frameIndex = 0;
m_cCamera->SetReplay(FALSE);
//m_curHint = ID_HINT_WAITING;
m_curHint = m_pMatch->m_iMatchType == MATCH_TYPE_BONUS ? ID_HINT_BONUS_WAITING : ID_HINT_WAITING;
Vector4s vec = Vector4s(0,40,0);
//vec.Clear();
m_object[RENDER_SETTING_TENPIN]->SetPosition(vec);
m_object[RENDER_GRABBING_TENPIN]->SetPosition(vec);
for(i = 0; i<10;++i)
{
if(m_tenpin[i].m_tenpinState == TENPIN_STATE_STAND)
{
m_object[i]->SetHideProperty(FALSE);
}
else
{
m_object[i]->SetHideProperty(TRUE);
}
}
getPlayerFlag();
m_object[RENDER_SCENE]->SetHideProperty(FALSE);
m_object[RENDER_FLOOR]->SetHideProperty(FALSE);
m_object[RENDER_SKYBOX]->SetHideProperty(FALSE);
m_object[RENDER_GRABBING_TENPIN]->SetHideProperty(TRUE);
m_object[RENDER_SETTING_TENPIN]->SetHideProperty(FALSE);
// m_object[RENDER_HANDS]->SetHideProperty(FALSE);
m_object[RENDER_BALL]->SetHideProperty(FALSE);
m_object[RENDER_PLAYER]->SetHideProperty(TRUE);
//AUDIENCE
m_object[RENDER_FIRST_AUDIENCE]->SetHideProperty(FALSE);
m_object[RENDER_SECOND_AUDIENCE]->SetHideProperty(FALSE);
m_object[RENDER_THIRD_AUDIENCE]->SetHideProperty(FALSE);
// m_object[RENDER_FORTH_AUDIENCE]->SetHideProperty(FALSE);
m_object[RENDER_FREEZE_AUDIENCE]->SetHideProperty(FALSE);
m_object[RENDER_FURNITURE]->SetHideProperty(FALSE);
if(m_object[RENDER_PLAYER2])
m_object[RENDER_PLAYER2]->SetHideProperty(TRUE);
// for(i=0;i<COINS_COUNT;i++)
m_object[RENDER_COIN]->SetHideProperty(TRUE);
m_object[RENDER_TV]->SetHideProperty(TRUE);
m_render3D.GetG3d()->setZDist(FOV_POSITION_CONFIRM); //Milo 12-21
SetStage(DS_DELIVERY_INIT,m_pMatch->GetCurPlayerAI());
// if(true==m_pMatch->m_smIsStoryMode && (SST_LEVEL==m_pMatch->m_smCurStageType
// || SST_BOSSLEVEL==m_pMatch->m_smCurStageType))
if(m_pMatch->m_mode==MODE_STORY || m_pMatch->m_mode==MODE_FREE || m_pMatch->m_mode==MODE_QUICK)
CoinInit();
setHandPos();
getRecommendSpot(m_pMatch->GetCurPinMode(), m_aimPinId, m_aimPinOffset, m_aimType);
Vector4s pos = Vector4s(0,0,0);
//TV POSITIONS
m_object[RENDER_TV]->SetPosition(pos);
//for draw 2D hand & ball]
pos.y = HAND_POSITION_Y ;
pos.z = HAND_POSITION_Z ;
m_ball.SetPosition(pos);
m_oldBuf = m_render3D.SetColorBuffer(m_hand2DBuf);
m_render3D.StartRender3D();
setCameraStage(CCSS_PREPARE);
m_cCamera->UpdateCamera();
m_render3D.GetG3d()->m_renderParam = 0;
m_object[RENDER_BALL]->Render(&m_render3D);
m_render3D.SetColorBuffer(m_oldBuf);
//end
setCameraStage(CCSS_AIM);
m_cCamera->UpdateCamera();
m_ball.initBall();
m_physics->setBallWeight(m_ball.m_weight);
/*if( m_iTutorialStage > WITHOUT_TUTORIAL && m_iTutorialStage < TUTORIAL_FINISH)
{
m_bIsTutStage = true;
}
else
{*/
m_bIsTutStage = false;
m_iCurTutoial = WITHOUT_TUTORIAL;
//}
m_iSaveFrameCnt = 0;
TVPlayInit();
m_bTvOn = TV_ANI_FINISH;
m_bTvPause = true;
m_bTvAniPlaying = false;
m_object[RENDER_BALL]->SetHideProperty(TRUE);
/*m_player->SetAnimationOption(PLAYER_ANI_RIGHT_MOVING); //Milo
setHandPos();
m_ball.StepWithPlayer(m_player, &m_vHandPos, FALSE);*/
m_ancPos = 60+GET_PRECISION(m_player->m_precision)/2;
m_bMoving =false;
m_iRollingCount = 0;
m_iCurHintId = 0;
m_iBoardOffset = 0;
m_bIsCollisionFinish = false;
m_iRotationFlag=0;
m_object[RENDER_COIN]->SetHideProperty(TRUE);
m_iPlayerFinshAni = -1;
m_view = FALSE;
m_iTotalCounter=0;
m_iSaveDone = 0;
// m_bDrawDone = false;
}
void CScene::grabbingTenpins(bool isStart, byte withAI)
{
int i = 0;
Vector4s vec = Vector4s(0,0,0);
++m_frameIndex;
if(isStart == TRUE)
{
if(m_frameIndex < 15)
{
if (m_frameIndex < 8)
{
vec.z = (m_object[RENDER_SETTING_TENPIN]->GetPosition().z - 10) ;
m_object[RENDER_SETTING_TENPIN]->SetPositionZ(vec.z);
for (i = 0; i < 10; ++i)
{
m_tenpin[i].GrabbingTenpin((m_pMatch->GetPlayerScore(m_pMatch->GetCurPlayer())->m_isSecondBall),
TRUE,TRUE);
}
}
else
{
vec.z = (m_object[RENDER_SETTING_TENPIN]->GetPosition().z + 10) ;
m_object[RENDER_SETTING_TENPIN]->SetPositionZ(vec.z);
}
}
else
{
if (m_curStage == DS_DELIVERY_REPLAY)
{
//SetStage(DS_ROTATION_POWER_CONFIRM, withAI);
m_bTvPause = false;
}
else
{
if(m_object[RENDER_COIN]->GetHideProperty() == FALSE && ((CGame*)m_pEngine->m_pGame)->IsShowHint() == TRUE)
{
m_object[RENDER_SETTING_TENPIN]->SetHideProperty(TRUE);
SetStage(DS_CLOSE_SEE_COIN, withAI);
}
else
{
m_object[RENDER_SETTING_TENPIN]->SetHideProperty(TRUE);
SetStage(DS_PLAYER_POSITION_CONFIRM, withAI);
}
}
}
}
else
{
if (m_frameIndex > 35)
{
if(m_colAni == ANI_COLLISION_STRIKE || m_colAni == ANI_TURKEY_STRIKE)
m_bAutoReplay = TRUE;
if(m_curStage ==DS_SHOW_GRABBING_ANIMATION_WITH_PLAYER_ANI )
{
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();
SetStage(DS_PLAYER_FINISH_ANI, withAI);
}
else
{
switchToWaiting();
}
}
else
{
int pindex = m_pMatch->GetCurPlayer();
bool isSecond = m_pMatch->GetPlayerScore(pindex)->m_isSecondBall;
if(m_iSaveDone != 0)
{
pindex = 1 - pindex;
isSecond = !isSecond;//m_pMatch->GetPlayerScore(pindex)->m_isSecondBall;
}
if (m_frameIndex < 8)
{
if(m_frameIndex ==1)
{
playingAudiSound();
}
else if (m_frameIndex == 5 && ((m_colAni == ANI_COLLISION_STRIKE )||(m_colAni == ANI_TURKEY_STRIKE)))
{
m_pEngine->GetSound()->StopVibrate();
m_pEngine->GetSound()->playMIDI(ConvertSoundID(ID_SOUND_STRIKE),0); //sound for STRIKE
}
vec.z = (m_object[RENDER_GRABBING_TENPIN]->GetPosition().z - 10) ;
m_object[RENDER_GRABBING_TENPIN]->SetPositionZ(vec.z);
if ( isSecond == TRUE
||m_pMatch->GetPlayerScore(pindex)->m_isStrike ==TRUE)
{
m_object[RENDER_SETTING_TENPIN]->SetHideProperty(TRUE);
}
else
{
vec.z = (m_object[RENDER_SETTING_TENPIN]->GetPosition().z - 10) ;
m_object[RENDER_SETTING_TENPIN]->SetPositionZ(vec.z);
}
}
else if (m_frameIndex < 15)
{
if (isSecond == FALSE && m_pMatch->GetPlayerScore(pindex)->m_isStrike ==FALSE)
{
vec.z = (m_object[RENDER_SETTING_TENPIN]->GetPosition().z + 10) ;
m_object[RENDER_SETTING_TENPIN]->SetPositionZ(vec.z);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -