📄 game.cpp
字号:
break;
// display the unlock item
case STATE_MONEY_UNLOCK:
if(key)// if any key is pressed
{
removeOneUnlock(m_money);
if(onlyOneUnlockToShow(m_money))
m_moneyState=STATE_MONEY_UNLOCK_DONE;
}
if(onlyOneUnlockToShow(m_money))
m_moneyState=STATE_MONEY_UNLOCK_DONE;
break;
// end, change to other normal game
case STATE_MONEY_UNLOCK_DONE:
if(m_pMatch->m_mode==MODE_STORY)
{
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_SELECT|VKEY_MENU_CLR))
m_MatchState=MS_MATCH_END;
}
else if(m_pMatch->m_mode==MODE_QUICK || m_pMatch->m_mode==(MODE_FREE))
{
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_SELECT|VKEY_MENU_CLR))
{
m_moneyState = STATE_MONEY_ASK_RETRY;
bRetryState = true; //yes
break;
}
}
else if(m_pMatch->m_mode==MODE_ONLINE)
{
#ifdef ONLINE
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_SELECT|VKEY_MENU_CLR))
m_MatchState=MS_MATCH_END;
#endif
}
else
{
if(!m_pMatch->m_MatchResult)
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_SELECT))
{
if(/*m_pMatch->m_mode==MODE_FREE ||*/ m_pMatch->m_mode==MODE_STORY)
{
m_pMatch->m_cnMatchCount++;
CoinNextUnlock();
}
m_MatchState=MS_MATCH_INIT;
}
if(m_pMatch->m_MatchResult)
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_NEXT|gk_NUM5|gk_MSOFT))
{
if(/*m_pMatch->m_mode==MODE_FREE ||*/ m_pMatch->m_mode==MODE_STORY)
{
m_pMatch->m_cnMatchCount++;
CoinNextUnlock();
}
m_MatchState=MS_MATCH_INIT;
}
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_EXIT||VKEY_MENU_CLR))
{
m_MatchState=MS_MATCH_END;
}
}
break;
case STATE_MONEY_ASK_RETRY:
if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_CLR))
bRetryState=false;
if(m_pEngine->GetInput()->KeyPressed(VKEY_SCROLL_LEFT|VKEY_SCROLL_RIGHT))
{
bRetryState = !bRetryState;
}
else if(m_pEngine->GetInput()->KeyPressed(VKEY_MENU_SELECT | VKEY_MENU_CLR))
{
if( bRetryState == true )//retry
{
m_pMatch->m_cnMatchCount++;
CoinNextUnlock();
if(m_pMatch->m_mode==MODE_FREE){
m_MatchState=MS_MATCH_INIT;
}
else
{
//add by sunfishfine. to random player when rematch
int m_playerId=getRandomNumber(100);
m_playerId%=6;
if (m_pMatch->GetPlayerID(1)==m_playerId)
{
m_playerId=(m_playerId+1)%6;
}
if(m_pMatch->GetPlayerID(0)==m_playerId)// the same person
{
//change suit
int suitId=getRandomNumber(100);
suitId%=3;
if(m_pMatch->GetPlayerClothes(0)==suitId)
suitId=(suitId+1)%3;
m_pMatch->SetPlayerClothes(1, suitId);
}
m_pMatch->SetPlayer(1, m_playerId);
m_step=0;
m_GameState=GS_LOADING;
}
}
else{ //exit
m_MatchState=MS_MATCH_END;
}
}
break;
}
break;
case MS_ONLINE_WAIT:
#ifdef ONLINE
if(m_pEngine->GetInput()->KeyPressed(gk_BACK))
{
m_pause=true;
m_pMenu->ResetState();
m_pMenu->SetState(STATE_PAUSE);
}
#endif
break;
case MS_ONLINE_ERROR:// display the error message
if(m_pEngine->GetInput()->KeyPressed(VKEY_COMMAND))// press ok to continue
{
m_MatchState=MS_MATCH_END;
}
break;
default:
break;
}
}
int CGame::UpdateMenu()
// return value:
// 0,menu;
// -1, exit;
// 1, quick mode;
// 2, free mode;
// 3, bonus mode;
// 4, story mode;
// 5, cameraview;
{
int ret=0;
int i=m_chcode;
m_pMenu->Update();
if (i!=m_chcode)
if (m_chcode) {
int i, j;
for (i=0; i<BALL_COUNT; i++)
m_SaveBallCanSel[i] = m_SaveBallCanSel[i]= true;
for (i=0; i<BONUS_COUNT; i++)
m_SaveBonusCanSel[i] = m_SaveBonusCanSel[i] = true;
for (i=0; i<PLAYER_COUNT; i++)
m_SavePlayerCanSel[i] = m_SavePlayerCanSel[i] = true;
m_SaveQMFinishTime=4;
for (i=0; i<PLAYER_COUNT; i++)
for (j=0; j<CLOTH_COUNT; j++)
m_SaveClothCanSel[i][j] = m_SaveClothCanSel[i][j] = true;
for (i=0; i<BALLICON_COUNT; i++)
m_SaveBallIconCanSel[i] = m_SaveBallIconCanSel[i] = true;
for (i=0; i<LANE_COUNT; i++)
m_SaveLaneCanSel[i] = m_SaveLaneCanSel[i] = true;
for (i=0; i<LANE_COUNT; i++)
m_SaveLaneCanView[i] = m_SaveLaneCanView[i] = true;
}
if (m_pMenu->GetState() == STATE_STARTGAME) {
m_pEngine->GetSound()->stopMIDI();
m_pMatch->SetInitPinMode(ALL_TENPINS_STAND);
m_pMatch->m_smIsStoryMode=false;
m_pMatch->SetPlayer(0, m_pMenu->GetSel(STATE_PLAYERSELECTA));
m_pMatch->SetPlayer(1, m_pMenu->GetSel(STATE_PLAYERSELECTB));
m_pMatch->SetPlayerBall(0, m_pMenu->GetSel(STATE_BALLSELECTA));
m_pMatch->SetPlayerBall(1, m_pMenu->GetSel(STATE_BALLSELECTB));
m_pMatch->SetBallIconID(0, m_pMenu->GetSel(STATE_ICONSELECTA));
m_pMatch->SetBallIconID(1, m_pMenu->GetSel(STATE_ICONSELECTB));
//added by Milo 01-19
m_pMatch->SetPlayerClothes(0, m_pMenu->GetSel(STATE_CLOTHSELECTA));
m_pMatch->SetPlayerClothes(1, m_pMenu->GetSel(STATE_CLOTHSELECTB));
//end
m_pMatch->SetLane(m_pMenu->GetSel(STATE_LANESELECT));
//// quick mode
if (m_pMenu->CheckState(STATE_QUICKMODE)) {
if (m_pMenu->GetSel(STATE_QUICKMODE) == 0) {
m_pMatch->SetMatchType(MATCH_TYPE_FREE);
m_pMatch->InitMatch(5,1);
} else {
m_pMatch->SetMatchType(MATCH_TYPE_VS);
m_pMatch->InitMatch(5,2);
if (m_pMenu->GetSel(STATE_QUICKMODE) == 1) {
m_pMatch->SetPlayerAI(0,false);
m_pMatch->SetPlayerAI(1,true);
}
}
//InitOnlineMode();
ret=MODE_QUICK;
}
//// free mode
if (m_pMenu->CheckState(STATE_FREEMODE)) {
if (m_pMenu->GetSel(STATE_FREEMODE) == 0) {
m_pMatch->SetMatchType(MATCH_TYPE_FREE);
m_pMatch->InitMatch(10,1);
} else {
m_pMatch->SetMatchType(MATCH_TYPE_VS);
m_pMatch->InitMatch(10,2);
if (m_pMenu->GetSel(STATE_FREEMODE) == 1) {
m_pMatch->SetPlayerAI(0,false);
m_pMatch->SetPlayerAI(1,true);
}
}
ret=MODE_FREE;
}
//// bonus mode
if (m_pMenu->CheckState(STATE_BONUSSELECT)) {
m_pMatch->SetMatchType(MATCH_TYPE_BONUS);
m_pMatch->SetInitPinMode(m_pDataManager->m_pBonuses[m_pMenu->GetSel(STATE_BONUSSELECT)]);
// m_pMatch->InitMatch(11,1); //Milo 12-27 // 1
m_pMatch->InitMatch(12,1);
m_pMatch->m_BonusId=m_pMenu->GetSel(STATE_BONUSSELECT);
ret=MODE_BONUS;
}
//// storymode
if (m_pMenu->CheckState(STATE_STORYMODE)) {
m_pMatch->m_smIsStoryMode=true;
if (m_pMenu->GetSel(STATE_STORYMODE))
ret=MODE_STORY_CONTINUE;
else {
m_pMatch->m_smPlayerId = m_pMenu->GetSel(STATE_PLAYERSELECTA);
m_pMatch->m_smBallId = m_pMenu->GetSel(STATE_BALLSELECTA);
ret=MODE_STORY;
}
}
// online mode
if(m_pMenu->CheckState(STATE_ONLINEMODE))
{
#ifdef ONLINE
m_pMatch->SetMatchType(MATCH_TYPE_VS);
m_pMatch->InitMatch(10,2);
m_pMatch->SetPlayerAI(0,false);
m_pMatch->SetPlayerAI(1,true);
InitOnlineMode();
ret=MODE_ONLINE;
#endif
}
//// camera view
else if (m_pMenu->CheckState(STATE_BONUSMODE) && m_pMenu->GetSel(STATE_BONUSMODE)) {
ret=MODE_CAMERA;
}
else
{
}
}
if (m_pMenu->GetState() == STATE_SUSPEND)
{
ret=-1;
}
if (m_pMenu->GetSel(STATE_PREGAME) == 3)
{
if(m_iTitleType == TITLE_FIRST_ANI)
{
if(m_pScene->PlayingTitleAni(TITLE_FIRST_ANI) == PLAYER_ANI_FINISH )
{
m_iTitleType = TITLE_SECOND_ANI;
m_pScene->LoadTitleAni(TITLE_SECOND_ANI);//Milo
}
}
else if(m_iTitleType == TITLE_SECOND_ANI)
{
if(m_pScene->PlayingTitleAni(TITLE_SECOND_ANI) == PLAYER_ANI_FINISH)
{
m_iTitleType = TITLE_ANI_DONE;
//m_pMenu->GoBack(m_pMenu->GetState());
//ReleaseLocalResource();
//m_pMenu->SetState(STATE_SPLASH2);
}
}
}
if (m_pMenu->GetState() == STATE_MAINMENU)
{
}
return ret;
}
bool CGame::Loading(int step, int info)
{
if(m_pMatch->m_mode==MODE_QUICK || m_pMatch->m_mode==MODE_FREE || m_pMatch->m_mode==MODE_BONUS||m_pMatch->m_mode==MODE_ONLINE)
{
if(step==0)
{
ReleaseLocalResource();
m_pDataManager->LoadPlayerInfo(m_pMatch->GetPlayerID(0),&m_pMatch->m_player[0]);
m_pDataManager->LoadPlayerInfo(m_pMatch->GetPlayerID(1),&m_pMatch->m_player[1]);
}
else if(step<20)
{
m_pMatch->LoadMatchRes(m_pDataManager,step-1);
}
if(step>=20)
{
m_pScene->CoinReset();
m_pScene->MatchInit();
m_pScene->DeliveryInit();
m_pScene->m_object[RENDER_COIN]->SetHideProperty(true);
return true;
}
else
return false;
}
// load story mode
if(m_pMatch->m_mode==MODE_STORY)
{
if(step==0)
{
int rounds=m_pDataManager->m_CoinLevelRounds[m_pMatch->m_smStageIndex];
m_pMatch->InitMatch(rounds,2);
m_pMatch->SetPlayerAI(0,false);
m_pMatch->SetPlayerAI(1,true);
m_pMatch->m_pCurStage=&(m_pMatch->m_pCurStoryMode->storyStages[m_pMatch->m_smStageIndex]);
m_pDataManager->LoadPlayerInfo(m_pMatch->m_pCurStage->competitor, &m_pMatch->m_player[1]);
m_pScene->LinkPlayer(m_pMatch->GetCurPlayer());
m_pMatch->SetPlayer(1, m_pMatch->m_pCurStage->competitor);
m_pMatch->SetPlayerBall(1, m_pMatch->m_player[1].m_ballIndex);
m_pMatch->SetLane(m_pMatch->m_pCurStage->place);
ReleaseLocalResource();
m_pDataManager->LoadPlayerInfo(m_pMatch->GetPlayerID(1),&m_pMatch->m_player[1]);
}
else if(step<20)
m_pMatch->LoadMatchRes(m_pDataManager,step-1);
else if(step==20)
{
m_pScene->CoinReset();
m_pScene->MatchInit();
m_pScene->DeliveryInit();
m_pScene->m_object[RENDER_COIN]->SetHideProperty(true);
}
if(step>=20)
return true;
else
return false;
}
// load camera view
if(m_pMatch->m_mode==MODE_CAMERA)
{
switch(step)
{
case 0:
ReleaseLocalResource();
break;
case 1:
m_pDataManager->LoadBgRes(m_pMatch->GetLane());
break;
case 2:
m_pScene->CameraViewInit();
break;
default:
break;
}
if(step>=5)
return true;
else
return false;
}
return true;
}
void CGame::paint()
{
char name[2][10];
m_Time[m_TimeTick] = GETUPTIMEMS();
if(m_pause)
{
m_pMenu->Draw();
#ifdef ONLINE
if(m_bOnlineMode)
{
onlineStateUpdate();
drawOnlineTimer(m_pUI);//draw timer
if(m_bOverTime)// now is online mode and time is up
{
dealWithOverTime();
m_pause=false;
resumeMIDI();
m_pMenu->ResetState();
}
}
#endif
m_pEngine->GetGfx()->UpdateToForeground();
return;
}
if((m_GameState==GS_STORYMODE && m_StoryModeState==SMS_LEVEL_PRE_TALK) ||
(m_pMatch->m_mode==MODE_QUICK && (m_MatchState==MS_QUICK_PRESHOW || m_MatchState==MS_QUICK_POSTSHOW))||
(m_pMatch->m_mode==MODE_FREE && m_pMatch->m_iMatchType==MATCH_TYPE_VS))
m_pScene->m_bShowSecondPlayer=true;
else
m_pScene->m_bShowSecondPlayer=false;
// update game state
switch(m_GameState)
{
case GS_MENU:
if (m_pMenu->GetSel(STATE_PREGAME) == 3)
{
m_pScene->PaintTitleAni(m_iTitleType, m_pUI);
}
else
{
m_pMenu->Draw();
}
break;
case GS_LOADING:
m_pEngine->GetGfx()->FillRec(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, MAKERGB(0, 0, 0));
m_pUI->Loading(m_pMatch->GetLane());
break;
case GS_LEVEL_INTRODUCTION:
{
m_pScene->Paint(m_pUI);
char* pStr=this->m_pDataManager->m_pSt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -