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

📄 bullhero.cpp

📁 Brew平台的手机游戏代码. 斗牛士.韩国开发的经典游戏.
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			if( !CheckFile() )
			{
			   GameState = ST_ERDIS;
			   SubState = 0;
			   FillRect( 0, 0, Width, 310, 255, 255, 255, TRUE );
			   aniCnt[0] = 0;
			   ISHELL_SetTimer( m_pIShell, m_TimeInterval, (PFNNOTIFY)MainApp::P_MainTimer, this );	  
			   return TRUE;
			}

			if(m_pBrewMedia==NULL)
		    m_pBrewMedia = new CBrewMedia();

			ISHELL_SetTimer( m_pIShell, m_TimeInterval, (PFNNOTIFY)MainApp::P_MainTimer, this );

			if( GameState == ST_LOGO )
			{
				aniCnt[0] = 0;
				P_PlaySound( RS_LOGO );
			}
			else if( GameState == ST_INTRO )
				P_PlaySound( RS_00 );
			else if( GameState == ST_PROLOGUE )
				P_PlaySound( RS_18 );
			else if( GameState == ST_ENDING )
				P_PlaySound( RS_01 );
			else if( m_bSoundReplay )
			{
				P_PlaySound( m_SoundResId );
				m_bSoundReplay = FALSE;
			}

			return TRUE;

	   case EVT_APP_START:   // 矫累 
		   P_StartGame();
		   FillRect(0, 0, Width, 310, 0, 0, 0, TRUE);
		   IDISPLAY_Update(m_pIDisplay);	 
		   ISHELL_SetTimer( m_pIShell, m_TimeInterval, (PFNNOTIFY)MainApp::P_MainTimer, this );	   
		   return TRUE;
			  
	   case EVT_APP_STOP:    // 场朝锭 
		   ISHELL_CancelTimer( m_pIShell, NULL, this );
		   return TRUE;	   

	   case EVT_BUSY:
		   return FALSE;

	   case EVT_KEY_PRESS:
		   break;

	   case EVT_KEY_RELEASE:
		   break;

	   case EVT_KEY:
	   {
		   switch(GameState)
		   {
			    case ST_ERDIS:
					K_ErDis(wParam);
					break;
				case ST_INTRO:      // 牢飘肺 
					K_Intro(wParam);
					break;
				case ST_MENU:       // 皋春 
					K_Menu(wParam);
					break;
				case ST_S2GAME:
					K_S2Game(wParam);	
					break;
				case ST_STARTGAME:
					K_StartGame(wParam);
					break;
				case ST_TUTORIAL:
					K_Tutorial(wParam);
					break;
				case ST_PROLOGUE:
					K_Prologue(wParam);
					break;
				case ST_COACHMENU:
					K_CoachMenu(wParam);
					break;
				case ST_ITEMSHOP:
					K_ItemShop(wParam);	
					break;
				case ST_SKILLSHOP:
					K_SkillShop(wParam);
					break;
				case ST_GAMEUSING:
					K_GameUsing(wParam);	
					break;
				case ST_SKILLEXPLAIN:
					K_SkillExplain(wParam);	
					break;
				case ST_OPTION:
					K_Option(wParam);	
					break;
				case ST_ENDING:
					K_Ending(wParam);	
					break;
		   }
		   return TRUE;
	   }
   }
   return TRUE;
}

void MainApp::P_MainTimer( MainApp *pMe )
{
	pMe->m_sec = GET_TIMEMS()/1000;

	pMe->FillRect(0, 0, pMe->Width, 310, 0, 0, 0, TRUE);

	switch( pMe->GameState )
	{
	case ST_ERDIS:
		pMe->D_ErDis();
		break;
	case ST_LOGO:
		pMe->D_Logo();
		break;
	case ST_INTRO:
		pMe->D_Intro();
		break;
	case ST_MENU:
		pMe->D_Menu();	
		break;
	case ST_S2GAME:
		if(pMe->SubState != 11 && pMe->SubState != 16) pMe->P_S2Game();
		pMe->D_S2Game();	
		break;
	case ST_STARTGAME:
		pMe->D_StartGame();	
		break;
	case ST_TUTORIAL:
		pMe->D_Tutorial();
		break;
	case ST_PROLOGUE:
		pMe->D_Prologue();
		break;
	case ST_COACHMENU:
		pMe->D_CoachMenu();
		break;
	case ST_ITEMSHOP:
		pMe->D_ItemShop();	
		break;
	case ST_SKILLSHOP:
		pMe->D_SkillShop();	
		break;
	case ST_GAMEUSING:
		pMe->D_GameUsing();	
		break;
	case ST_SKILLEXPLAIN:
		pMe->D_SkillExplain();	
		break;
	case ST_OPTION:
		pMe->D_Option();	
		break;
	case ST_ENDING:
		pMe->D_Ending();	
		break;
	case ST_GAMETEMP:
		if( pMe->endgame == 1 )
		{
			pMe->endgame = 2;
			ISHELL_CloseApplet( pMe->m_pIShell, FALSE );
		}
		break;
	}

	pMe->D_Memory();

	IDISPLAY_Update(pMe->m_pIDisplay );
	ISHELL_SetTimer( pMe->m_pIShell, pMe->m_TimeInterval, (PFNNOTIFY)MainApp::P_MainTimer, pMe );	   
}

void MainApp::P_StartGame()
{
	if(GameState != ST_ERDIS)
		T_Logo();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ST_ERDIS
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
boolean MainApp::CheckFile()
{

	uint32	freeSpace, needSpace;

	needSpace = 1000;
	freeSpace = IFILEMGR_GetFreeSpace(m_pIfilemgr, NULL);

	if( needSpace > freeSpace )
		return FALSE;

	return TRUE;
}

boolean MainApp::CheckMem()
{
	int32		freeMem, checkHeapSize = 700000;

	// 傈眉俊辑 荤侩茄 皋葛府剧阑 猾促.
	freeMem = m_pRam - IHEAP_GetMemStats(m_pHeap);

	// DBGPRINTF("dwRam:%d  free:%d",m_pRam,freeMem);

	if (freeMem > checkHeapSize)return TRUE;
	
	return FALSE;
}

void MainApp::D_ErDis()
{
	if( aniCnt[0] == 0 )
	{
		aniCnt[0] = 1;
		P_StrLoad(STR_ERR00 + SubState);
		aniCnt[0] = 2;
	}

	FillRect( 0, 0, Width, 320, 255, 255, 255, TRUE );

	IDISPLAY_SetColor( m_pIDisplay, CLR_USER_TEXT, MAKE_RGB( 0, 0, 0) );

	D_Ktext( hWidth - 115, hHeight - 84, m_MultiLine[0], AEE_FONT_BOLD, IDF_TEXT_TRANSPARENT );
	D_Ktext( hWidth - 115, hHeight - 62, m_MultiLine[1], AEE_FONT_BOLD, IDF_TEXT_TRANSPARENT );
	D_Ktext( hWidth - 115, hHeight - 40, m_MultiLine[2], AEE_FONT_BOLD, IDF_TEXT_TRANSPARENT );
	D_Ktext( hWidth - 115, hHeight - 18, m_MultiLine[3], AEE_FONT_BOLD, IDF_TEXT_TRANSPARENT );
	D_Ktext( hWidth - 115, hHeight + 4, m_MultiLine[4], AEE_FONT_BOLD, IDF_TEXT_TRANSPARENT );
}

void MainApp::K_ErDis(uint16 keyparam)
{
	if( keyparam == AVK_SELECT )
	{
		GameState = ST_GAMETEMP;
		endgame = 1;
	}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ST_LOGO
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void MainApp::T_Logo( )
{
	P_ImgLoad( &CImg->uimg[0], "bullimg.bar", IM_LOGO00, IMG_NORMAL );
	P_ImgLoad( &CImg->uimg[1], "bullimg.bar", IM_LOGO01, IMG_NORMAL );
	P_ImgLoad( &CImg->uimg[2], "bullimg.bar", IM_LOGO02, IMG_NORMAL );
	P_ImgLoad( &CImg->uimg[3], "bullimg.bar", IM_LOGO03, IMG_NORMAL );

	aniCnt[0] = 0;
	GameState = ST_LOGO;
	P_PlaySound( RS_LOGO );
}

void MainApp::D_Logo()
{
	int i;
	int temp;
	short logo_move_xy[14][8] =
	{
		{-1,-1,-1,-1,-1,-1,-1,-1},
		{87,45,118,138,-1,-1,-1,-1},
		{87,74,114,138,-1,-1,-1,-1},
		{87,79,118,138,-1,-1,-1,-1},
		{87,66,114,138,-1,-1,-1,-1},
		{87,79,118,138,-1,-1,-1,-1},
		{87,74,115,138,-1,-1,-1,-1},
		{87,79,119,138,-1,-1,-1,-1},
		{87,79,119,138,-5,150,-1,-1},
		{87,79,119,138,25,150,-1,-1},
		{87,79,119,138,58,150,-1,-1},
		{87,79,119,138,58,150,118,174},
		{87,79,119,138,58,150,88,174},
		{87,79,119,138,58,150,58,174} //13 frame
	};

	FillRect( 0, 0, Width, 310, 255, 255, 255, TRUE );

	for( i = 3; i >= 0; --i )
	{
		if( aniCnt[0]  > 13 )
			temp = 13;
		else 
			temp = aniCnt[0];


		if( logo_move_xy[aniCnt[0]][i*2] != -1 )
		{
			CImg->K_Draw( logo_move_xy[temp][i*2], logo_move_xy[temp][i*2+1], CImg->uimg[i], IMLEFT, AEE_RO_TRANSPARENT );
		}
	}

	if( ++aniCnt[0]  > 16 )
	{
		P_StopSound();
		GameState = ST_GAMETEMP;
		T_Intro();
	}		
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ST_INTRO
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void MainApp::T_Intro()
{
	ImageRelease(0);
	ImageLoad(0);
	m_Keychk = aniCnt[0] = aniCnt[1] = 0;
	P_PlaySound( RS_00 );
	GameState = ST_INTRO;
}

void MainApp::D_Intro()
{
	if(aniCnt[0] <= 4)
	{
		if(aniCnt[0] == 1)
			CImg->K_Draw(Width - 4, hHeight - CImg->GetImgHeight(CImg->uimg[0])/2, CImg->uimg[0], IMLEFT, AEE_RO_TRANSPARENT);
		else if(aniCnt[0] == 2)
			CImg->K_Draw(hWidth + 10, hHeight - CImg->GetImgHeight(CImg->uimg[0])/2, CImg->uimg[0], IMLEFT, AEE_RO_TRANSPARENT);
		else if(aniCnt[0] == 3)
			CImg->K_Draw(hWidth - 28, hHeight - CImg->GetImgHeight(CImg->uimg[1])/2, CImg->uimg[1], IMLEFT, AEE_RO_TRANSPARENT);
		else if(aniCnt[0] == 4)
			CImg->K_Draw(hWidth - 76, hHeight - CImg->GetImgHeight(CImg->uimg[2])/2, CImg->uimg[2], IMLEFT, AEE_RO_TRANSPARENT);
	}
	else if(aniCnt[0] > 4 && aniCnt[0] < 10)
	{
		FillRect(0, 0, Width, Height, 255, 219, 85, TRUE);
		CImg->K_Draw(hWidth, hHeight - CImg->GetImgHeight(CImg->uimg[10])/2, CImg->uimg[10], IMTOPCENTER, AEE_RO_TRANSPARENT);
		FillRect(0, 0, Width, hHeight - 96, 0, 0, 0, TRUE);
		FillRect(0, hHeight - 97 + CImg->GetImgHeight(CImg->uimg[4]), Width, hHeight, 0, 0, 0, TRUE);
		if(aniCnt[0] == 6)
		{
			CImg->K_Draw(Width - 83, hHeight - 97 + 14, CImg->uimg[3], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(- 69, hHeight - 97, CImg->uimg[4], IMLEFT, AEE_RO_TRANSPARENT);
		}
		else if(aniCnt[0] == 7)
		{
			CImg->K_Draw(Width - 83 - 2, hHeight - 97 + 14, CImg->uimg[3], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(- 69 + 20, hHeight - 97, CImg->uimg[4], IMLEFT, AEE_RO_TRANSPARENT);
		}
		else if(aniCnt[0] == 8)
		{
			CImg->K_Draw(Width - 83 - 9, hHeight - 97 + 14, CImg->uimg[3], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(- 69 + 43, hHeight - 97, CImg->uimg[4], IMLEFT, AEE_RO_TRANSPARENT);
		}
		else if(aniCnt[0] == 9)
		{
			CImg->K_Draw(Width - 83 - 21, hHeight - 97 + 14, CImg->uimg[3], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(- 69 + 69, hHeight - 97, CImg->uimg[4], IMLEFT, AEE_RO_TRANSPARENT);
		}
	}
	else if(aniCnt[0] > 9 && aniCnt[0] < 14)
	{
		for(int i = 0; i < Width; i++)
			CImg->K_Draw(i, hHeight - 96, CImg->uimg[7], IMLEFT, AEE_RO_TRANSPARENT);
	
		if(aniCnt[0] == 11)
		{
			CImg->K_Draw(- 10, hHeight - 97, CImg->uimg[5], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(Width - CImg->GetImgWidth(CImg->uimg[6]) + 9, hHeight + 4, CImg->uimg[6], IMLEFT, AEE_RO_TRANSPARENT);
		}
		else if(aniCnt[0] == 12)
		{
			CImg->K_Draw(- 10 + 4, hHeight - 97, CImg->uimg[5], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(Width - CImg->GetImgWidth(CImg->uimg[6]) + 9 - 7, hHeight + 4, CImg->uimg[6], IMLEFT, AEE_RO_TRANSPARENT);
		}
		else if(aniCnt[0] == 13)
		{
			CImg->K_Draw(- 10 + 10, hHeight - 97, CImg->uimg[5], IMLEFT, AEE_RO_TRANSPARENT);
			CImg->K_Draw(Width - CImg->GetImgWidth(CImg->uimg[6]) + 9 - 9, hHeight + 4, CImg->uimg[6], IMLEFT, AEE_RO_TRANSPARENT);
		}
	}
	else if( aniCnt[0] == 14 )
	{
		FillRect(0, hHeight - 101, Width, 202, 219, 219, 255, TRUE);
		CImg->K_Draw(hWidth, 0, CImg->mimg[5], IMTOPCENTER, AEE_RO_TRANSPARENT);
		CImg->K_Draw(hWidth, hHeight - CImg->GetImgHeight(CImg->mimg[4])/2, CImg->mimg[4], IMTOPCENTER, AEE_RO_TRANSPARENT);

⌨️ 快捷键说明

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