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

📄 frontend.cpp

📁 一个在brew 平台下开发的摩托车程序源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		}
		JString subStr = st.substring(0, index);
		if(m_pGraph->GetTextWidth(subStr)<allowedwidth)
		{
			lastindex=index;
		}
		else
		{
			if(lastindex==0)
			{
				//a long word that wont fit on the screen - split
				int curwidth=0;
				while(curwidth<allowedwidth)
				{
					JString charStr;
					charStr+= st.charAt(lastindex);
					curwidth+=m_pGraph->GetTextWidth(charStr);
					lastindex++;
				}
				tmpStr = st.substring(0,lastindex);
				paragraph[blockIndex] = new JString (tmpStr);
				blockIndex++;

				lastindex--;
			}
			else
			{
				tmpStr = st.substring(0,lastindex);
				paragraph[blockIndex] = new JString (tmpStr);
				blockIndex++;
			}
			st=st.substring(lastindex+1);
			lastindex=0;
		}
	}
	if(blockIndex>0 && (!st.equals(" ")))
	{
		paragraph[blockIndex] = new JString (st);
		blockIndex++;
	}

	*counter = blockIndex;

}

/*===============================================================================
METHOD: SetCurrentScreen
=============================================================================== */
void Frontend::SetCurrentScreen(char screen, int selection)
{
	JString tempStr;
	int i;
	for (i = 0; i < MAX_MENU_STR; i++)
		m_menuStringArray[i]=NULL;
	m_titleText=NULL;
	m_menuSelection=(short)selection;
	m_numMenuItems=0;
	m_textScrollY=0;

	m_currentScreen=screen;

	if(m_bShowOptions)
	{
		if(m_currentScreen==STATUS_PAUSE)
		{
			m_menuStringArray[0]= &m_pData->string8;
			if(m_bSoundFlag)
				m_menuStringArray[1]=&m_pData->string5;
			else
                m_menuStringArray[1]= &m_pData->string6;
			if(!m_bIsPractice)
				m_menuStringArray[2]= &m_pData->string9;
			else
				m_menuStringArray[2]= &m_pData->stringMainMenu;
			CentreMenuPos(3);
			m_titleText=m_pData->stringPauseMenu;
		}
		else
		{
			if(m_bSoundFlag)
				m_menuStringArray[0]=&m_pData->string5;
			else
				m_menuStringArray[0]= &m_pData->string6;
			m_menuStringArray[1]= &m_pData->string72;			
			CentreMenuPos(2);
			m_titleText=m_pData->stringOptions;
		}
	}
	else
	{
		switch(m_currentScreen)
		{
		case STATUS_INTRO:
			DBGPRINTF("INTRO %d" , selection);

			m_currentIntroScreen=selection;
			m_menuSelection=0;

			switch(selection)
			{
			case 4:	//Splash
				m_pGraph->SetBitmapClip(0,0,m_canvasW,m_canvasH);
				m_pGraph->SetScreenClip(0,0,m_canvasW,m_canvasH);
				//m_pSplashPNG=ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_SPLASH);

				m_SplashImg = new CMImage( loadCompressedData(BM_SPLASH, DUCATI_RES_FILE), true );	//拘绵茄 捞固瘤 肺靛
				m_SplashImg->convert();

				m_pGraph->SetColor(0);
				m_pGraph->FillRect(0,0,m_canvasW,m_canvasH);
				//DrawImage(m_pSplashPNG,m_canvasW/2,m_canvasH/2,HCENTER | VCENTER);
				m_pKscUtil->DrawImage(m_SplashImg,(m_canvasW/2-m_SplashImg->getWidth()/2),(m_canvasH/2-m_SplashImg->getHeight()/2));
				
				m_pGraph->SetFont(m_fontSmallBold);
				m_pGraph->SetTextColor(CYAN);
				tempStr = "Ver:";
				tempStr += VERSION;
				DBGPRINTF("version str %s" , tempStr.Buffer);
				m_pGraph->DrawString(tempStr,m_halfScreenWidth,m_canvasH,bottomcentre);
				m_timer=GETTIMEMS();
				break;

			case 2:	//Vir2L
				m_pGraph->SetColor(0);
				m_pGraph->FillRect(0,0,m_canvasW,m_canvasH);
				m_pVi2LPNG=ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_VIR2L);				
				m_pGraph->DrawImage(m_pVi2LPNG,m_halfScreenWidth,m_halfScreenHeight,topcentre);
				m_pGraph->SetFont(m_fontSmall);
				m_pGraph->SetTextColor(0xc0c0c0);
				{
					int y = m_halfScreenHeight-37;
					if (y < 2) y = 2;
					m_pGraph->DrawString(m_pData->stringPublished1, m_halfScreenWidth,y,topcentre);
					m_pGraph->DrawString(m_pData->stringPublished2, m_halfScreenWidth,y+10,topcentre);
				}
				m_timer=GETTIMEMS();
				//set up next screen
				//BS666 m_mformaScroll=m_canvasW;
				break;

			case 0:
			case 7:	
				m_pGraph->SetColor(0);
				m_pGraph->FillRect(0,0,m_canvasW,m_canvasH);
				m_mformaScroll=m_canvasW;
				m_timer=GETTIMEMS();
				break;

			case 1:	//legal screen
			case 6:	//outtro
				FreeParagraph();
				m_paragraphCounter=centrecentre;
				SetText(m_pData->legalText,m_canvasW,m_paragraphText,&m_paragraphCounter);
				m_bDoneLegalScroll=FALSE;
				m_timer=GETTIMEMS();
				break;

			case 3: //ESRB	
				FreeParagraph();
				m_pGraph->SetColor(0);
				m_pGraph->FillRect(0,0,m_canvasW,m_canvasH);
				//m_pEsrbPNG=ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_ESRB);
				m_EsrbImg = new CMImage( loadCompressedData(BM_ESRB, DUCATI_RES_FILE), true );	//拘绵茄 捞固瘤 肺靛
				m_EsrbImg->convert();

				//DrawImage(m_pEsrbPNG,m_halfScreenWidth,m_halfScreenHeight,centrecentre);
				m_pKscUtil->DrawImage(m_EsrbImg,(m_canvasW/2-m_EsrbImg->getWidth()/2),(m_canvasH/2-m_EsrbImg->getHeight()/2));

				m_timer=GETTIMEMS();
				break;

			case 5: //Splash
			//YingZ: Loading is very fast on brew devices, this screen is disabled - but check MFORMA guide lines!
			//	m_pGraph->DrawImage(m_pSplashPNG,0,0);
			//	m_pGraph->SetTextColor(WHITE);
			//	m_pGraph->DrawString(m_pData->textLoading,m_canvasW-2,2,topright);
				break;
			}
			break;
		
		case STATUS_NOFILE:
			FreeParagraph();
			m_titleText=NULL;
			for (i = 0; i < MAX_MENU_STR; i++)
				m_menuStringArray[i]=NULL;
			m_pGraph->SetColor(0);
			m_pGraph->FillRect(0,0,m_canvasW,m_canvasH);
			SetText(m_pData->stringNoFile,m_canvasW-2,m_paragraphText,&m_paragraphCounter);
			break;

		case STATUS_MAINMENU:
			m_menuStringArray[0] = &m_pData->string1;
			m_menuStringArray[1] = &m_pData->stringOptions;
			m_menuStringArray[2] = &m_pData->stringHelp;
			m_menuStringArray[3] = &m_pData->stringInfo;
			//m_menuStringArray[4] = &m_pData->stringAbout;
			m_menuStringArray[4] = &m_pData->string4;
			m_titleText=m_pData->stringMainMenu;
			CentreMenuPos(5);
			break;

		case STATUS_SUREEXIT:
			m_menuStringArray[0] = &m_pData->string18;
			m_menuStringArray[1] = &m_pData->string19;
			CentreMenuPos(2);
			m_titleText=m_pData->string4;
			break;

		case STATUS_ABOUT:
			StartOnceHelp=0;
			FreeParagraph();
			m_titleText=m_pData->stringAbout;
			for (i = 0; i < MAX_MENU_STR; i++)
				m_menuStringArray[i]=NULL;
			tempStr = m_pData->legalText;
			tempStr += m_pData->credits;
			SetText(tempStr,m_canvasW-2,m_paragraphText,&m_paragraphCounter);
			break;

		case STATUS_INFO:
			m_titleText=m_pData->stringInfo;
			break;

		case STATUS_HELP:
			if(m_subPage<0)
			{
				m_menuStringArray[0] = &m_pData->string10;
				m_menuStringArray[1] = &m_pData->string11;
				m_menuStringArray[2] = &m_pData->string12;
				m_menuStringArray[3] = &m_pData->string13;
				m_menuStringArray[4] = &m_pData->string15;
				CentreMenuPos(5);
				m_titleText=m_pData->stringHelp;
			}
			else
			{
				//we won't have left right to change instructions on S40
				StartOnceHelp=0;
				for (i = 0; i < MAX_MENU_STR; i++)
					m_menuStringArray[i]=NULL;
				FreeParagraph();
				//SetText(*m_pData->ruleString[m_subPage],m_canvasW-2,m_paragraphText,&m_paragraphCounter);
			}
			break;

		case STATUS_CHOOSECHARACTER:
			m_menuStringArray[0] = &m_pData->stringSelect;
			m_menuYPos=m_backdropShadowBottom-m_menuHeight;
			m_menuBarYPos=m_menuYPos<<16;
			m_titleText=m_pData->stringChooseCharacter;
			FreeParagraph();
			//SetText(*m_pData->bios[m_myCharacter],m_canvasW-2,m_paragraphText,&m_paragraphCounter);
			break;

		case STATUS_RACEMENU:
			if(m_champStage==-1)
			{
				m_menuStringArray[0] = &m_pData->string22;
				m_menuStringArray[1] = &m_pData->string23;
				m_menuStringArray[2] = &m_pData->string21;
			}
			else
			{
				m_menuStringArray[0] = &m_pData->string22;
				m_menuStringArray[1] = &m_pData->string59;
				m_menuStringArray[2] = &m_pData->string60;
				m_menuStringArray[3] = &m_pData->string21;
			}

			m_titleText=m_pData->stringRaceMenu;
			//YingZ: maybe can be optimised to be included in above condition statement
			if(m_champStage==-1)
				CentreMenuPos(3);
			else
				CentreMenuPos(4);

			break;

		case STATUS_DIFFICULTYSELECT:
			m_menuStringArray[0] = &m_pData->string26;
			m_menuStringArray[1] = &m_pData->string27;
			m_menuStringArray[2] = &m_pData->string28;
			CentreMenuPos(3);
			m_titleText=m_pData->stringChooseDifficulty;
			break;

		case STATUS_SHOP:
			m_menuStringArray[0] = &m_pData->string29;
			m_menuStringArray[1] = &m_pData->string30;
			m_menuStringArray[2] = &m_pData->string31;
			CentreMenuPos(3);
			m_titleText=m_pData->string21;
			break;

		case STATUS_CHOOSEBIKE:
			m_menuStringArray[0] = &m_pData->stringSelect;
			m_menuYPos=m_backdropShadowBottom-(m_menuHeight<<1);
			m_menuBarYPos=m_menuYPos<<16;
			m_titleText=m_pData->stringChooseBike;
			break;

		case STATUS_PARTSMAIN:
			m_menuStringArray[0] = &m_pData->string47;
			m_menuStringArray[1] = &m_pData->string48;
			m_menuStringArray[2] = &m_pData->string49;
			m_menuStringArray[3] = &m_pData->string50;
			CentreMenuPos(4);
			m_titleText=m_pData->string29;
			break;

		case STATUS_PARTSSUBSCREEN:
			m_menuStringArray[0] = &m_pData->stringSelect;
			m_menuYPos=m_backdropShadowBottom-(m_menuHeight<<1);
			m_menuBarYPos=m_menuYPos<<16;
			m_titleText=*m_pData->partsStrings[m_subPage];
			break;

		case STATUS_REPAIR:
			for (i = 0; i < MAX_MENU_STR; i++)
				m_menuStringArray[i]=NULL;
			m_titleText=m_pData->string30;
			break;

		case STATUS_CHAMPFINISHED:
			for (i = 0; i < MAX_MENU_STR; i++)
				m_menuStringArray[i]=NULL;
			m_titleText=m_pData->string23;

			if(m_playerChampPos>2)	//nowhere
			{
				JString tmpStr;
				FreeParagraph();
				tmpStr = m_pData->string61;
				tmpStr += *m_pData->positions[m_playerChampPos];
				tmpStr += m_pData->string62;
				SetText(tmpStr,m_canvasW-2,m_paragraphText,&m_paragraphCounter);
			}
			else
			{
				int champReward;

				if(m_playerChampPos==0)		//won
				{
					tempStr=m_pData->string51;
					champReward=400;
				}
				else if(m_playerChampPos==1)
				{
					tempStr=m_pData->string52;
					champReward=200;
				}
				else
				{
					tempStr=m_pData->string53;
					champReward=100;
				}

				champReward*=m_difficultyLevel+1;
				FreeParagraph();
				tempStr+="~";
				tempStr+=m_pData->string54;
				tempStr+=champReward;
				SetText(tempStr,m_canvasW-2,m_paragraphText,&m_paragraphCounter);
				m_myCash+=champReward;
			}

			m_champStage=-1;
			m_pGame->m_score[0]=-1;

			WriteRecords();

			break;

		case STATUS_CHAMPTABLE:
			SortChampScores();
			for (i = 0; i < MAX_MENU_STR; i++)
				m_menuStringArray[i]=NULL;
			m_titleText=m_pData->string23;

			m_paragraphHeight=4+(20*7)-m_backdropShadowHeight;		//for the scrolling
			if (m_paragraphHeight<0) m_paragraphHeight=0;

			m_playerChampPos=0;
			while(m_champOrder[m_playerChampPos]!=0)
				m_playerChampPos++;
			m_textScrollY=(m_playerChampPos-2)*20;
			if(m_textScrollY<0)
				m_textScrollY=0;
			else if(m_textScrollY>m_paragraphHeight)
				m_textScrollY=m_paragraphHeight;
			break;

		case STATUS_TRACK:
			if(m_bIsPractice)

⌨️ 快捷键说明

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