📄 frontend.cpp
字号:
{
m_menuStringArray[0] = &m_pData->stringSelect;
m_menuYPos=m_backdropShadowBottom-m_menuHeight;
m_titleText=m_pData->stringChooseTrack;
}
else
{
for (i = 0; i < MAX_MENU_STR; i++)
m_menuStringArray[i]=NULL;
m_titleText=m_pData->stringNextRace;
}
break;
case STATUS_RESULTS:
for (i = 0; i < MAX_MENU_STR; i++)
m_menuStringArray[i]=NULL;
m_titleText=m_pData->string33;
FreeParagraph();
SetText(m_resultsMessage,m_canvasW-2,m_paragraphText,&m_paragraphCounter);
break;
case STATUS_BETOFFER:
{
for (i = 0; i < MAX_MENU_STR; i++)
m_menuStringArray[i]=NULL;
FreeParagraph();
m_Betstr = m_pRandom->NextInt() % NUM_TAUNTS;
m_Betstr = ABS(m_Betstr);
//SetText(*m_pData->taunts[temp],m_canvasW-2,m_paragraphText,&m_paragraphCounter);
m_titleText=m_pData->string13;
m_myBet=0;
break;
}
default:
//clear data
for (i = 0; i < MAX_MENU_STR; i++)
m_menuStringArray[i]=NULL;
break;
}
}
for (i = 0; i < MAX_MENU_STR; i++)
{
if(m_menuStringArray[i]!=NULL)
{
m_numMenuItems++;
}
}
if(m_numMenuItems > 0)
{
m_menuBarYPos=(m_menuYPos+(m_menuHeight*m_menuSelection))<<16;
}
}
/*===============================================================================
METHOD: DrawMenu
=============================================================================== */
void Frontend::DrawMenu()
{
m_pGraph->ResetBitmapClip();
//YingZ: we have to use this m_numMenuItems to control wether to draw menu text and bar
if(m_numMenuItems >0)
{
//print menu text
m_pGraph->SetFont(m_fontSmallBold);
//draw selection bar
int dest=(m_menuYPos+m_menuHeight*m_menuSelection)<<16;
m_menuBarYPos+=(dest-m_menuBarYPos)>>1;
int y=(m_menuBarYPos>>16)-2;
int fh=m_pGraph->GetFontHeight()+y+2;
m_pGraph->SetColor(SELECTBARCOL1);
m_pGraph->DrawLine(0,y,m_canvasW,y);
y++;
m_pGraph->SetColor(SELECTBARCOL2);
do
{
m_pGraph->DrawLine(0,y,m_canvasW,y);
y++;
}while(y<=fh);
m_pGraph->SetColor(SELECTBARCOL3);
m_pGraph->DrawLine(0,y,m_canvasW,y);
for(int i=0;i<m_numMenuItems;i++)
{
m_pGraph->SetTextColor(0);
m_pGraph->DrawString(*m_menuStringArray[i],1+m_halfScreenWidth,1+m_menuYPos+m_menuHeight*i,topcentre);
m_pGraph->SetTextColor(WHITE);
m_pGraph->DrawString(*m_menuStringArray[i],m_halfScreenWidth,m_menuYPos+m_menuHeight*i,topcentre);
}
}
}
/*===============================================================================
METHOD: ProcessTheirScreens
=============================================================================== */
void Frontend::ProcessTheirScreens()
{
JString myString;
JString tmpStr;
int i,x,y,fh,tmpworth;
m_pGraph->SetFont(m_fontSmallBold);
//YingZ: This is a hack to get the sound play correctly on option screen, on the 8900
//handset, if ISOUNDPLAYER_Play and ISOUNDPLAYER_Stop is called repeatedly, and the final
//choice is ISOUNDPLAYER_Play, the sound will NOT play, hence we call StartTune() repeatedly
//while we are in this screen, if the soundplayer gets stuck, the next game loop will force
//it to start playing again.
if(m_currentScreen!=STATUS_INTRO)
StartTune();
if(!(m_currentScreen==STATUS_PAUSE && !m_bShowOptions))
{
m_pGraph->SetTextColor(WHITE);
m_pGraph->SetFont(m_fontSmallBold);
switch(m_currentScreen)
{
case STATUS_INTRO:
{
switch(m_currentIntroScreen)
{
case 4: //splash title
//draw it here, after pGraphics has been set up
//YingZ: It would appear a few different people worked on this frontend in JAVA version
//there are a few redundant functions and same type stuff handled in diff places.
if(GETTIMEMS()-m_timer>3000)
SetCurrentScreen(STATUS_INTRO,++m_currentIntroScreen);
break;
case 2: //Vir2L
case 3: //ESRB
if(GETTIMEMS()-m_timer>3000)
SetCurrentScreen(STATUS_INTRO,++m_currentIntroScreen);
break;
case 0: //MForma Intro
MformaScreen(TRUE);
if(GETTIMEMS()-m_timer>4000)
{
SetCurrentScreen(STATUS_INTRO,++m_currentIntroScreen);
m_currentIntroScreen =2;
}
break;
case 1: //copyright
//ShowLegalScreen(FALSE);
break;
case 5: //splash with loading
// StartTune();
PreLoadGraphics();
if (isNoFile)
SetCurrentScreen(STATUS_NOFILE,0);
else
SetCurrentScreen(STATUS_MAINMENU,0);
break;
case 6: //Outtro - quit app
ShowLegalScreen(FALSE);
break;
case 7:
MformaScreen(FALSE);
break;
}
}
break;
case STATUS_NOFILE:
DrawFEBackdrop(TRUE);
m_pGraph->SetFont(m_fontSmall);
PrintParagraph(m_backdropShadowTop+2-m_textScrollY,TRUE);
m_pGraph->DrawString(m_pData->string4,m_canvasW-2,m_canvasH,bottomright);
m_pGraph->DrawString(m_pData->stringPlay,2,m_canvasH,bottomleft);
break;
case STATUS_SUREEXIT:
DrawFEBackdrop(FALSE);
PrintTitle();
DrawMenu();
MyDrawString(m_pData->stringAreYouSure,1+m_halfScreenWidth,1+m_backdropShadowTop+4,topcentre,0);
MyDrawString(m_pData->stringAreYouSure,m_halfScreenWidth,m_backdropShadowTop+4,topcentre,WHITE);
break;
case STATUS_CHOOSEBIKE:
DrawFEBackdrop(TRUE);
PrintTitle();
m_pGraph->SetFont(m_fontSmallBold);
fh=m_pGraph->GetFontHeight();
//bike name
m_pGraph->SetTextColor(GREEN);
m_pGraph->DrawString(*m_pData->bikeNames[m_curItem],m_halfScreenWidth,m_backdropShadowTop+4,topcentre);
//player cash
PrintPlayerCash();
//cost
tmpworth=m_myWorth;
if(m_curItem==m_currentBike)
{
m_pGraph->SetTextColor(YELLOW);
m_pGraph->DrawString(m_pData->string70,m_canvasW-2,m_backdropShadowBottom-2,bottomright);
}
else
{
m_pGraph->SetTextColor(WHITE);
tmpStr = m_pData->string44;
tmpStr += m_pData->bikePrices[m_curItem]-(m_myWorth);
m_pGraph->DrawString(tmpStr,m_canvasW-2,m_backdropShadowBottom-2,bottomright);
}
//DrawImage(m_pBike[m_curItem],30,80);
m_pKscUtil->DrawImage(m_BikeImg[m_curItem],30,80);
m_pGraph->SetTextColor(WHITE);
//buy
if(m_curItem==m_currentBike || m_pData->bikePrices[m_curItem]>(m_myCash+tmpworth))
m_pGraph->SetTextColor(GREY);
else
m_pGraph->SetTextColor(WHITE);
m_pGraph->DrawString(m_pData->stringBuy,2,m_canvasH,bottomleft);
DrawEngineData(fh);
break;
case STATUS_REPAIR:
DrawFEBackdrop(TRUE);
fh=m_pGraph->GetFontHeight(m_fontSmallBold);
PrintTitle();
//player's money
PrintPlayerCash();
//mini icons
for(i=0;i<4;i++)
DrawPart(i,5,m_backdropShadowTop+10+(31*i),FALSE);
int totDamage;
if(m_menuSelection==4) //repair all
{
DrawSurroundRect(5,m_backdropShadowTop+10,20,115);
totDamage=(m_pGame->m_partsWear[0]>>16)+(m_pGame->m_partsWear[1]>>16)+(m_pGame->m_partsWear[2]>>16)+(m_pGame->m_partsWear[3]>>16);
}
else
{
DrawSurroundRect(5,m_backdropShadowTop+10+31*m_menuSelection,20,20);
totDamage=m_pGame->m_partsWear[m_menuSelection]>>16;
if(totDamage>=5) //repair in $5 chunks
totDamage=5;
}
if(totDamage>0)
{
m_pGraph->SetTextColor(WHITE);
tmpStr = m_pData->string44;
tmpStr += totDamage;
m_pGraph->DrawString(tmpStr,m_canvasW-2,m_backdropShadowBottom-2,bottomright);
}
//print OK (in grey if no cash/damage)
m_pGraph->SetFont(m_fontSmallBold);
if(m_myCash<totDamage || totDamage==0)
m_pGraph->SetTextColor(GREY);
else
m_pGraph->SetTextColor(WHITE);
m_pGraph->DrawString(m_pData->string14,2,m_canvasH,bottomleft);
for(i=0;i<4;i++)
{
y=31*i+m_backdropShadowTop+10;
int damageAmount=m_pGame->m_partsWear[i]>>16;
if(damageAmount==0)
{
m_pGraph->SetTextColor(WHITE);
m_pGraph->DrawString(m_pData->stringNoDamage,m_canvasW-84,y+((30-fh)>>1),0);
}
else //some damage
{
int green=255;
int red=0;
x=m_canvasW-84;
while(damageAmount>0)
{
m_pGraph->SetColor(red,green,0);
m_pGraph->FillRect(x,y,1,20);
x++;
red+=4;
green-=4;
damageAmount--;
}
}
}
break;
case STATUS_HELP:
if(m_subPage>=0)
{
if (StartOnceHelp==0)
{
DrawFEBackdrop(TRUE);
m_titleText=*m_pData->helpStrings[m_subPage];
m_pGraph->SetFont(m_fontSmall);
//PrintParagraph(m_backdropShadowTop+2-m_textScrollY,TRUE);
// 2005 0303 - by hyun wook
AECHAR* szBuf;
int length;
switch( m_subPage )
{
case 0:
length =sizeof("规氢虐(惑,窍)唱 锅龋虐(8,2)甫 捞侩秦辑 扁绢狼 函加捞 啊瓷钦聪促. 磊悼栏肺 啊加捞 登扁 锭巩俊 利例茄 扁绢 函加捞 吝夸钦聪促. 谅,快肺 畔阑 窍妨搁 规氢虐(谅,快)唱 锅龋虐(4,6)甫 喘矾 官捞农甫 扁匡涝聪促. 鞭目宏俊辑 粱 歹 朝墨肺款 畔阑 窍妨搁 规氢虐俊辑 颊阑 订 饶俊 犁狐福霸 促矫 茄锅 规氢虐甫 喘矾 颇况 浇扼捞靛甫 荤侩钦聪促. 己傍 利栏肺 颇况 浇扼捞靛甫 荤侩沁阑 矫 官捞农 饶固啊 糠栏肺 馆悼登绢瘤哥, 官捞农狼 鸥捞绢俊辑 楷扁啊 徽绢廉 唱棵 巴涝聪促. 颇况 浇扼捞靛甫 呈公 辨霸 荤侩窍搁 官捞农啊 面倒 窍芭唱 屁败廉 唱哎 荐档 乐嚼聪促.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("规氢虐(惑,窍)唱 锅龋虐(8,2)甫 捞侩秦辑 扁绢狼 函加捞 啊瓷钦聪促. 磊悼栏肺 啊加捞 登扁 锭巩俊 利例茄 扁绢 函加捞 吝夸钦聪促. 谅,快肺 畔阑 窍妨搁 规氢虐(谅,快)唱 锅龋虐(4,6)甫 喘矾 官捞农甫 扁匡涝聪促. 鞭目宏俊辑 粱 歹 朝墨肺款 畔阑 窍妨搁 规氢虐俊辑 颊阑 订 饶俊 犁狐福霸 促矫 茄锅 规氢虐甫 喘矾 颇况 浇扼捞靛甫 荤侩钦聪促. 己傍 利栏肺 颇况 浇扼捞靛甫 荤侩沁阑 矫 官捞农 饶固啊 糠栏肺 馆悼登绢瘤哥, 官捞农狼 鸥捞绢俊辑 楷扁啊 徽绢廉 唱棵 巴涝聪促. 颇况 浇扼捞靛甫 呈公 辨霸 荤侩窍搁 官捞农啊 面倒 窍芭唱 屁败廉 唱哎 荐档 乐嚼聪促.", szBuf);
m_paragraphHeight=110;
break;
case 1:
length =sizeof("规氢虐(谅,快)唱 锅龋虐(4,6)甫 荤侩窍咯 备概且 酒捞袍阑 急琶窍绞矫坷. 汲摹茄 何前篮 官捞农狼 己瓷俊 康氢阑 凛聪促. 捣捞 面盒窍促搁 讥俊 甸矾 何前阑 备概 窍绞矫坷. 荐府痢俊辑 官捞农狼 牧叼记阑 疵 眉农 窍绊, 荐府啊 鞘夸窍促搁 捣阑 瘤阂窍绊 官捞农甫 荐府窍咯 官捞农甫 弥惑狼 惑怕肺 蜡瘤窍绞矫坷.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("规氢虐(谅,快)唱 锅龋虐(4,6)甫 荤侩窍咯 备概且 酒捞袍阑 急琶窍绞矫坷. 汲摹茄 何前篮 官捞农狼 己瓷俊 康氢阑 凛聪促. 捣捞 面盒窍促搁 讥俊 甸矾 何前阑 备概 窍绞矫坷. 荐府痢俊辑 官捞农狼 牧叼记阑 疵 眉农 窍绊, 荐府啊 鞘夸窍促搁 捣阑 瘤阂窍绊 官捞农甫 荐府窍咯 官捞农甫 弥惑狼 惑怕肺 蜡瘤窍绞矫坷.", szBuf);
m_paragraphHeight=0;
break;
case 2:
length =sizeof("飘发阑 哈绢唱瘤 付矫坷! 飘发阑 哈绢唱辑 崔府霸 登搁 官捞农啊 颊惑登哥, 绊加林青矫 飘发阑 哈绢唱搁 面倒窍芭唱 官捞农啊 逞绢瘤霸 瞪 荐 乐嚼聪促. 辨 啊狼 目宏钎矫甫 肋 焊绊 弥措茄 利例窍霸 官捞农甫 靛府橇飘 窍绞矫坷. 利例茄 扁绢函加篮 救傈窍绊 狐福霸 内胶甫 肯林窍绰单 鞘荐荤亲涝聪促.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("飘发阑 哈绢唱瘤 付矫坷! 飘发阑 哈绢唱辑 崔府霸 登搁 官捞农啊 颊惑登哥, 绊加林青矫 飘发阑 哈绢唱搁 面倒窍芭唱 官捞农啊 逞绢瘤霸 瞪 荐 乐嚼聪促. 辨 啊狼 目宏钎矫甫 肋 焊绊 弥措茄 利例窍霸 官捞农甫 靛府橇飘 窍绞矫坷. 利例茄 扁绢函加篮 救傈窍绊 狐福霸 内胶甫 肯林窍绰单 鞘荐荤亲涝聪促.", szBuf);
m_paragraphHeight=0;
break;
case 3:
length =sizeof("郴扁饭捞教葛靛 敲饭捞俊辑 荤侩磊绰 弥措 50$鳖瘤 捣阑 硅泼 且 荐 乐嚼聪促. 饭捞胶俊辑 惑措规阑 勃绢 硅泼 陛咀阑 滴 硅肺 阂妨 焊技夸.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("郴扁饭捞教葛靛 敲饭捞俊辑 荤侩磊绰 弥措 50$鳖瘤 捣阑 硅泼 且 荐 乐嚼聪促. 饭捞胶俊辑 惑措规阑 勃绢 硅泼 陛咀阑 滴 硅肺 阂妨 焊技夸.", szBuf);
m_paragraphHeight=0;
break;
case 4:
length =sizeof("磊技茄 郴侩篮 权其捞瘤(mforma.co.kr),捞皋老(support@mforma.co.kr),傈拳(02-501-8062)肺 巩狼林技夸.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("磊技茄 郴侩篮 权其捞瘤(mforma.co.kr),捞皋老(support@mforma.co.kr),傈拳(02-501-8062)肺 巩狼林技夸.", szBuf);
m_paragraphHeight=0;
break;
}
m_pKscUtil->DrawSFS(szBuf, 1, (m_textScrollY/m_pGraph->GetFontHeight(m_fontSmall)), 11, 168,
4, m_backdropShadowTop+2, MAKE_RGB(255, 255, 255));
FREE( szBuf );
DrawScrollArrows();
StartOnceHelp=1;
}
else
{
if(m_pGame->m_padData==PAD_UP || m_pGame->m_padData==PAD_DOWN)
{
DrawFEBackdrop(TRUE);
m_titleText=*m_pData->helpStrings[m_subPage];
m_pGraph->SetFont(m_fontSmall);
//PrintParagraph(m_backdropShadowTop+2-m_textScrollY,TRUE);
// 2005 0303 - by hyun wook
AECHAR* szBuf;
int length;
switch( m_subPage )
{
case 0:
length =sizeof("规氢虐(惑,窍)唱 锅龋虐(8,2)甫 捞侩秦辑 扁绢狼 函加捞 啊瓷钦聪促. 磊悼栏肺 啊加捞 登扁 锭巩俊 利例茄 扁绢 函加捞 吝夸钦聪促. 谅,快肺 畔阑 窍妨搁 规氢虐(谅,快)唱 锅龋虐(4,6)甫 喘矾 官捞农甫 扁匡涝聪促. 鞭目宏俊辑 粱 歹 朝墨肺款 畔阑 窍妨搁 规氢虐俊辑 颊阑 订 饶俊 犁狐福霸 促矫 茄锅 规氢虐甫 喘矾 颇况 浇扼捞靛甫 荤侩钦聪促. 己傍 利栏肺 颇况 浇扼捞靛甫 荤侩沁阑 矫 官捞农 饶固啊 糠栏肺 馆悼登绢瘤哥, 官捞农狼 鸥捞绢俊辑 楷扁啊 徽绢廉 唱棵 巴涝聪促. 颇况 浇扼捞靛甫 呈公 辨霸 荤侩窍搁 官捞农啊 面倒 窍芭唱 屁败廉 唱哎 荐档 乐嚼聪促.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("规氢虐(惑,窍)唱 锅龋虐(8,2)甫 捞侩秦辑 扁绢狼 函加捞 啊瓷钦聪促. 磊悼栏肺 啊加捞 登扁 锭巩俊 利例茄 扁绢 函加捞 吝夸钦聪促. 谅,快肺 畔阑 窍妨搁 规氢虐(谅,快)唱 锅龋虐(4,6)甫 喘矾 官捞农甫 扁匡涝聪促. 鞭目宏俊辑 粱 歹 朝墨肺款 畔阑 窍妨搁 规氢虐俊辑 颊阑 订 饶俊 犁狐福霸 促矫 茄锅 规氢虐甫 喘矾 颇况 浇扼捞靛甫 荤侩钦聪促. 己傍 利栏肺 颇况 浇扼捞靛甫 荤侩沁阑 矫 官捞农 饶固啊 糠栏肺 馆悼登绢瘤哥, 官捞农狼 鸥捞绢俊辑 楷扁啊 徽绢廉 唱棵 巴涝聪促. 颇况 浇扼捞靛甫 呈公 辨霸 荤侩窍搁 官捞农啊 面倒 窍芭唱 屁败廉 唱哎 荐档 乐嚼聪促.", szBuf);
m_paragraphHeight=110;
break;
case 1:
length =sizeof("规氢虐(谅,快)唱 锅龋虐(4,6)甫 荤侩窍咯 备概且 酒捞袍阑 急琶窍绞矫坷. 汲摹茄 何前篮 官捞农狼 己瓷俊 康氢阑 凛聪促. 捣捞 面盒窍促搁 讥俊 甸矾 何前阑 备概 窍绞矫坷. 荐府痢俊辑 官捞农狼 牧叼记阑 疵 眉农 窍绊, 荐府啊 鞘夸窍促搁 捣阑 瘤阂窍绊 官捞农甫 荐府窍咯 官捞农甫 弥惑狼 惑怕肺 蜡瘤窍绞矫坷.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("规氢虐(谅,快)唱 锅龋虐(4,6)甫 荤侩窍咯 备概且 酒捞袍阑 急琶窍绞矫坷. 汲摹茄 何前篮 官捞农狼 己瓷俊 康氢阑 凛聪促. 捣捞 面盒窍促搁 讥俊 甸矾 何前阑 备概 窍绞矫坷. 荐府痢俊辑 官捞农狼 牧叼记阑 疵 眉农 窍绊, 荐府啊 鞘夸窍促搁 捣阑 瘤阂窍绊 官捞农甫 荐府窍咯 官捞农甫 弥惑狼 惑怕肺 蜡瘤窍绞矫坷.", szBuf);
m_paragraphHeight=0;
break;
case 2:
length =sizeof("飘发阑 哈绢唱瘤 付矫坷! 飘发阑 哈绢唱辑 崔府霸 登搁 官捞农啊 颊惑登哥, 绊加林青矫 飘发阑 哈绢唱搁 面倒窍芭唱 官捞农啊 逞绢瘤霸 瞪 荐 乐嚼聪促. 辨 啊狼 目宏钎矫甫 肋 焊绊 弥措茄 利例窍霸 官捞农甫 靛府橇飘 窍绞矫坷. 利例茄 扁绢函加篮 救傈窍绊 狐福霸 内胶甫 肯林窍绰单 鞘荐荤亲涝聪促.");
szBuf = ( AECHAR * ) MALLOC( length * sizeof( AECHAR ) );
Util_KSC5601ToAECHAR("飘发阑 哈绢唱瘤 付矫坷! 飘发阑 哈绢唱辑 崔府霸 登搁 官捞农啊 颊惑登哥, 绊加林青矫 飘发阑 哈绢唱搁 面倒窍芭唱 官捞农啊 逞绢瘤霸 瞪 荐 乐嚼聪促. 辨 啊狼 目宏钎矫甫 肋 焊绊 弥措茄 利例窍霸 官捞农甫 靛府橇飘 窍绞矫坷. 利例茄 扁绢函加篮 救傈窍绊 狐福霸 内胶甫 肯林窍绰单 鞘荐荤亲涝聪促.", szBuf);
m_paragraphHeight=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -