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

📄 frontend.cpp

📁 一个在brew 平台下开发的摩托车程序源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////////////////////////////////////////////
//FILE: Frontend.cpp
//FE
//////////////////////////////////////////////////////////////////////

#include "Frontend.h"



#include "Ducati_res.h"
//#define DUCATI_RES_FILE "Ducati.bar"
#define Y_OFFSET 6
#define FACE_STEP		14


const short pngImageID[PNG_NUM] = 
{
	BM_PLAYER_BIKE,	
	BM_PARTS,
	BM_FACE,
	BM_CPU_BIKE,
	BM_SMOKE,
	BM_PANEL,
	BM_SPEEDO,
	BM_CITY,
	BM_PLAYER_BIKE_FLIP,
	BM_CPU_BIKE_FLIP,
	BM_SUNSET,
	BM_CANYON,
	BM_CITY2,
	BM_MOUNTAIN,
	BM_MOUNTAIN2,
	BM_ROCKY,
	BM_SKY
};

/*===============================================================================
METHOD: Frontend
Constructor
=============================================================================== */
Frontend::Frontend(GameFrame* pGame)
{
	m_pGame = pGame;
	m_pIShell = pGame->m_pIShell;
	m_pIDisplay = pGame->m_pIDisplay;
	m_pIGraphics = pGame->m_pIGraphics;
	m_pGraph = pGame->m_pGraph;
	m_pKscUtil=pGame->m_pKscUtil;
	m_pGraph->SetColor(0);
	m_pGraph->FillRect(0,0,m_canvasW,m_canvasH);
	m_DeviceInfo = pGame->m_DeviceInfo;
	m_pData = pGame->m_pData;
	m_pRandom = new Random();
	if(!m_pRandom)
	{
		DBGPRINTF("Can not allocate Front End Random");
		assert(0);
	}


	

	m_canvasW = m_DeviceInfo.cxScreen;
	m_canvasH = m_DeviceInfo.cyScreen;
	m_halfScreenWidth = m_canvasW>>1;
	m_halfScreenHeight = m_canvasH>>1;

	m_currentScreen = 0;
	m_currentIntroScreen = 0;

	m_menuHeight = -1;
	m_backdropShadowTop = -1;
	m_backdropShadowHeight = -1;
	m_backdropShadowBottom = -1;
	m_backdropShadowCentre = -1;
	m_mformaStartTime = -1;
	m_champStage = -1;

	m_bPauseGame = FALSE;
	m_bShowOptions = FALSE;
	m_bGame_vibrate=FALSE;
	m_bSoundFlag=TRUE;
	m_bPrevSoundOption=m_bSoundFlag;
	m_bRepaired = FALSE;

	m_currentTrack = 0;
	m_myCharacter = -1;
	m_myCash = -1;
	m_myBet = -1;
	m_myBettor = -1;

	m_difficultyLevel = 0;

	m_subPage = 0;
	m_curItem = 0;
	m_currentBike = 0;

	m_curcol = 0;

	m_paragraphText = ( JString** )( MALLOC( sizeof( JString* ) * MAX_STRING ) );
	int i;
	for (i = 0; i < MAX_STRING; i++)
		m_paragraphText[i] = NULL;

	m_pFileMgr = NULL;
	ISHELL_CreateInstance(m_pIShell, AEECLSID_FILEMGR, (void **) &m_pFileMgr);
	if(!m_pFileMgr)
	{
		DBGPRINTF("Failed to create File Manager instance");
		assert(0);
	}
	m_pDataFile = NULL;


	/*
	ISHELL_CreateInstance( m_pIShell, AEECLSID_SOUNDPLAYER, ( void ** ) &m_pISound );
	if(!m_pISound)
	{
		DBGPRINTF("Failed to create soundplayer instance");
		assert(0);
	}
	else
	{
		soundStream.Init(m_pIShell, m_pFileMgr, "racer1.mid");
		if (soundStream.Exist())
		 ISOUNDPLAYER_SetStream(m_pISound, (IAStream *)soundStream.getStream());
		ISOUNDPLAYER_RegisterNotify(m_pISound, SoundCallback, this);
	}
	*/
	m_pSoundPlayer = new CMSoundPlayer();
	m_pSoundPlayer->initialize(1);

	m_pSoundPlayer->loadSoundRes(0, 5028, "ducati.bar", false );
	m_pSoundPlayer->setPlayTimeMs(0, 10620);
	m_pSoundPlayer->push( 0, true );
	m_pSoundPlayer->setSoundStatus(m_bSoundFlag);

	

	for (i = 0; i < NUM_PARTS; i++)
		m_partsOwned[i] = 0;

	for (i = 0; i < PNG_NUM; i++)
		m_pPng[i] = NULL;

	for (i = 0; i < NUM_TRACKS; i++)
		m_pBG[i] = NULL;

	m_pMformaLogo[0] = NULL;
	m_pMformaLogo[1] = NULL;
//	m_pSplashPNG = NULL;
	m_pVi2LPNG = NULL;
//	m_pEsrbPNG = NULL;

	m_cheatCode = "6424235";
	m_cheatIdx = 0;

//	m_tinyFontBMP = NULL;

	GameFrameDelay = FRAMETIMEMS;
	IFile *tFile = IFILEMGR_OpenFile(m_pFileMgr, "fps.dat", _OFM_READ );
	if(tFile != NULL) {
		FileInfo tFileInfo;
		IFILE_GetInfo(tFile, &tFileInfo);
		char Data[128];
	  IFILE_Read(tFile, Data, tFileInfo.dwSize);
		int Delay = ATOI(Data);
		if (Delay>=0 && Delay<1000) GameFrameDelay=Delay;
		IFILE_Release(tFile);
	}
	
	PowerSlide=0x11000;
	tFile = IFILEMGR_OpenFile(m_pFileMgr, "slide.dat", _OFM_READ );
	if(tFile != NULL) {
		FileInfo tFileInfo;
		IFILE_GetInfo(tFile, &tFileInfo);
		char Data[128];
	  IFILE_Read(tFile, Data, tFileInfo.dwSize);
		int Delay = ATOI(Data);
		if (Delay>=0) PowerSlide=Delay;
		IFILE_Release(tFile);
	}


}

/*===============================================================================
METHOD: ~Frontend
Destructor
=============================================================================== */
Frontend::~Frontend()
{
	if(m_pRandom)
		delete m_pRandom;

	ReleaseGraphics();

	if(m_pISound)
		ISOUNDPLAYER_Release(m_pISound);

	// 2004 1224 - 荤款靛风凭 背眉 - by hyunwook
	//delete m_pISound;
	if(m_pSoundPlayer)
		delete m_pSoundPlayer;

	if(m_pFileMgr)
		IFILEMGR_Release(m_pFileMgr);

	if(m_paragraphText)
	{
		for (int i = 0; i < MAX_STRING; i++)
		{
			if(m_paragraphText[i])
			{
				delete (m_paragraphText[i]);
			}
		}
		FREE(m_paragraphText);
	}

	m_pGame = NULL;
	m_pIShell = NULL;
	m_pIDisplay = NULL;
	m_pIGraphics = NULL;
	m_pGraph = NULL;
	m_pKscUtil= NULL;
	m_pData = NULL;
	m_pRandom = NULL;
	m_pFileMgr = NULL;	
	CloseSaveFile();
}

/*===============================================================================
METHOD: PreLoadGraphics
=============================================================================== */
void Frontend::PreLoadGraphics()
{
	//Unload the graphics used in sp[lash screens
	int i;
	for (i = 0; i < 2; i++)
	{
		if (m_pMformaLogo[i])
		{
			IIMAGE_Release(m_pMformaLogo[i]);
			m_pMformaLogo[i] = NULL;
		}
		if (m_MformaLogoImg[i])
		{	
			delete m_MformaLogoImg[i];
			m_MformaLogoImg[i] = NULL;
		}
	}
//	if (m_pSplashPNG)
//		IIMAGE_Release(m_pSplashPNG);

	if (m_SplashImg)
	{	
		delete m_SplashImg;
		m_SplashImg = NULL;
	}

	if (m_pVi2LPNG)
		IIMAGE_Release(m_pVi2LPNG);

//	if (m_pEsrbPNG)
//		IIMAGE_Release(m_pEsrbPNG);

	if (m_EsrbImg)
	{	
		delete m_EsrbImg;
		m_EsrbImg = NULL;
	}

//	m_pSplashPNG = NULL;
	m_pVi2LPNG = NULL;
//	m_pEsrbPNG = NULL;

	// Now load game graphics
	for (i = 0; i < PNG_NUM; i++)
	{
		m_pPng[i] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, pngImageID[i]);

		if (!m_pPng[i])
		{
			DBGPRINTF(" Failed to load PNG Image %d\n", i );
			assert(0);
		}
	}

	// Now load game graphics
	m_pRoad[0] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_ROAD1);
	m_pRoad[1] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_ROAD2);
	m_pNums=ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_NUMS);
	IIMAGE_SetParm(m_pNums,IPARM_ROP,AEE_RO_TRANSPARENT,0);

	//m_pTimes=ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_TIMES);
	//IIMAGE_SetParm(m_pTimes,IPARM_ROP,AEE_RO_TRANSPARENT,0);
	m_TimesImg = new CMImage( loadCompressedData(BM_TIMES, DUCATI_RES_FILE), true );	//拘绵茄 捞固瘤 肺靛
	m_TimesImg->convert();
	
	/*
	m_pBike[0] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_MONSTER);
	m_pBike[1] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_MULTISTRADA);
	m_pBike[2] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_PAULSILVER);
	m_pBike[3] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_SUPERSPORT);
	m_pBike[4] = ISHELL_LoadResImage(m_pIShell, DUCATI_RES_FILE, BM_SUPERBIKE);
*/
	//Assign Backdrop
	m_pBG[0] = m_pPng[PNG_CITY];
	m_pBG[1] = m_pPng[PNG_CITY2];
	m_pBG[2] = m_pPng[PNG_ROCKY];
	m_pBG[3] = m_pPng[PNG_CANYON];
	m_pBG[4] = m_pPng[PNG_SUNSET];
	m_pBG[5] = m_pPng[PNG_MOUNT];
	m_pBG[6] = m_pPng[PNG_CITY2];
	m_pBG[7] = m_pPng[PNG_MOUNT2];
	m_pBG[8] = m_pPng[PNG_MOUNT2];

	
	for(i=0;i<5;i++)
	{
		if( m_BikeImg[i] != NULL ) {
			delete m_BikeImg[i];
			m_BikeImg[i] = NULL;
		}
		m_BikeImg[i] = new CMImage( loadCompressedData(10001+i, DUCATI_RES_FILE), true );	//拘绵茄 捞固瘤 肺靛
		m_BikeImg[i]->convert();
	}
}

/*===============================================================================
METHOD: ReleaseGraphics
=============================================================================== */
void Frontend::ReleaseGraphics()
{
	int i;
	for (i = 0; i < PNG_NUM; i++)
	{
		if (m_pPng[i])
		{
			IIMAGE_Release(m_pPng[i]);
			m_pPng[i] = NULL;
		}
	}

	for (i = 0; i < 2; i++)
	{
		if (m_pMformaLogo[i])
		{
			IIMAGE_Release(m_pMformaLogo[i]);
			m_pMformaLogo[i] = NULL;
		}
		if (m_pRoad[i])
		{
			IIMAGE_Release(m_pRoad[i]);
			m_pRoad[i] = NULL;
		}
		
	}


	for (i=0; i<5; i++)
	{
		if (m_pBike[i])
		{	
			IIMAGE_Release(m_pBike[i]);
			m_pBike[i]=NULL;
		}

	}

//	if (m_pSplashPNG)
//		IIMAGE_Release(m_pSplashPNG);

	if (m_pVi2LPNG)
		IIMAGE_Release(m_pVi2LPNG);

//	if (m_pEsrbPNG)
//		IIMAGE_Release(m_pEsrbPNG);

	if (m_pNums)
		IIMAGE_Release(m_pNums);

	if (m_pTimes)
		IIMAGE_Release (m_pTimes);

	if(m_TimesImg)
	{
		delete m_TimesImg;
		m_TimesImg =NULL;
	}

	m_pNums=NULL;
	m_pTimes=NULL;

⌨️ 快捷键说明

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