📄 frontend.cpp
字号:
//////////////////////////////////////////////////////////////////////
//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 + -