📄 frontend.h
字号:
//////////////////////////////////////////////////////////////////////
// File: Frontend.h
// Author: Ying Zhang
// Decription: FE, Menu, image loading etc.
//////////////////////////////////////////////////////////////////////
#ifndef _FRONT_END
#define _FRONT_END
#include "AEEFile.h"
#include "Ducati.h"
#include "JString.h"
#include "Data.h"
#include "KSCUtil.h"
// 荐沥 2004 1213 捞固瘤 拘绵秦力 肺靛 风凭 眠啊 - by hyunwook
#include "MResourceTool.h"
#include "MImage.h"
// 2004 1224 - 荤款靛风凭 背眉 - by hyunwook
//#include "InprSound.h"
#include "MSoundPlayer.h"
//palette stuff
#define WHITE 0x00FFFFFF
#define GREY 0x00a0a0a0
#define RED 0x00FF0000
#define YELLOW 0x00FFFF00
#define GREEN 0x0000FF00
#define CYAN 0x0000FFFF
#define MAX_STRING 64
//#define MAX_MENU_STR 6
#define MAX_MENU_STR 5
#define DUCATILOGOSIZE 100
#define DUCATILOGOBACKCOL 0xffd520
#define DUCATILOGOFORECOL 0xcba91a
#define SELECTBARCOL1 0x6088c0
#define SELECTBARCOL2 0x003974
#define SELECTBARCOL3 0x001828
//MForma intro constants
#define MW 38 /* width of the (M) section of the graphic */
#define RW 10 /* width of the (R) section of the graphic */
#define GH 35//22
#define GH2 42
#define topcentre TOP|HCENTER
#define topleft TOP|LEFT
#define topright TOP|RIGHT
#define centrecentre VCENTER|HCENTER
#define bottomleft BOTTOM|LEFT
#define bottomright BOTTOM|RIGHT
#define bottomcentre BOTTOM|HCENTER
#define OPTION_0 5000
#define OPTION_1 5001
#define OPTION_2 5002
#define OPTION_3 5003
#define OPTION_4 5004
#define OPTION_5 5005
//#define OPTION_6 5006
enum ePNGIMAGE
{
PNG_PLAYER_BIKE,
PNG_PARTS,
PNG_FACE,
PNG_CPU_BIKE,
PNG_SMOKE,
PNG_PANEL,
PNG_SPEEDO,
PNG_CITY,
PNG_PLAYER_BIKE_FLIP,
PNG_CPU_BIKE_FLIP,
PNG_SUNSET,
PNG_CANYON,
PNG_CITY2,
PNG_MOUNT,
PNG_MOUNT2,
PNG_ROCKY,
PNG_SKY,
PNG_NUM
};
enum eSTATUS
{
STATUS_INTRO,
STATUS_MAINMENU,
STATUS_PAUSE,
STATUS_HELP,
STATUS_CHOOSECHARACTER,
STATUS_RACEMENU,
STATUS_SHOP,
STATUS_DIFFICULTYSELECT,
STATUS_TRACK,
STATUS_RESULTS,
STATUS_CHOOSEBIKE,
STATUS_CONFIRMPURCHASEBIKE,
STATUS_PARTSMAIN,
STATUS_PARTSSUBSCREEN,
STATUS_REPAIR,
STATUS_BETOFFER,
STATUS_STARTGAME,
STATUS_BLUEBECK,
STATUS_ABOUT,
STATUS_CHAMPTABLE,
STATUS_CHAMPFINISHED,
STATUS_SUREEXIT,
STATUS_NOFILE,
STATUS_INFO
};
class GameFrame;
class Frontend : public CMResourceTool
{
public:
Frontend(GameFrame* pGame);
~Frontend();
IImage* m_pPng[PNG_NUM];
IImage* m_pBG[NUM_TRACKS];
IImage* m_pRoad[2];
IImage* m_pBike[5];
IImage* m_pNums;
IImage* m_pTimes;
CMImage* m_BikeImg[5];
CMImage* m_TimesImg;
// 2004 1224 - 荤款靛风凭 背眉 - by hyunwook
// CInprSound *m_pISound;
CMSoundPlayer *m_pSoundPlayer;
void PreLoadGraphics();
void ReleaseGraphics();
int m_currentTrack;
int m_myCharacter;
int m_myCash;
int m_myBet;
int m_myBettor;
int m_Betstr;
boolean StartOnceHelp;
int m_difficultyLevel;
int GameFrameDelay;
int PowerSlide;
void InitFE();
int ProcessFE();
void FreeParagraph();
void SetText(JString st, int allowedwidth, JString** paragraph, int* counter);
void SetCurrentScreen(char screen, int selection);
void ProcessTheirScreens();
void CentreMenuPos(int elements);
void SortChampScores();
void MformaScreen(boolean bIntro);
void ShowLegalScreen(boolean bOuttro);
void PrintParagraph(int y,boolean bClip);
void ScrollParagraph();
void DrawFEBackdrop(boolean bShadow);
void MyDrawString(JString str,int x,int y,int align,int col);
void PrintTitle();
void DrawMenu();
void PrintPlayerCash();
void DrawEngineData(int fh);
void DrawPart(int part,int x,int y,boolean bRect);
boolean IsBetting();
void DrawSurroundRect(int x,int y,int w,int h);
void DrawScrollArrows();
void CheckUpAndDown(uint16 wParam);
void DealKeyPress(uint16 wParam);
void BodgeRaceResult();
void InitRace();
void RaceOver();
void FinishChampRace();
void InitPauseScreen(boolean bSuspendSnd);
boolean OpenSaveFile(boolean bForWrite);
void CloseSaveFile();
void DeleteSaveFile();
bool ReadRecords();
bool WriteRecords(bool showMessage=TRUE);
void ResetRecords();
void StoreData(unsigned char *buffer, int *ptr, void *data, int size) {
MEMCPY(buffer + *ptr, data, size); *ptr += size;
}
void ResumeTune();
void StartTune(bool load=false);
void StopTune(bool unload=false);
void RewindTune();
static void SoundCallback(void* pUser, AEESoundPlayerCmd eCBType, AEESoundPlayerStatus eStatus, uint32 dwParam);
ISoundPlayer* m_pISound;
private:
GameFrame* m_pGame;
IShell* m_pIShell;
IDisplay* m_pIDisplay;
IGraphics* m_pIGraphics;
Graphics* m_pGraph;
KSCUtil* m_pKscUtil;
AEEDeviceInfo m_DeviceInfo;
Data* m_pData;
Random* m_pRandom;
SOUND_STREAM soundStream;
int m_canvasW;
int m_canvasH;
int m_halfScreenWidth;
int m_halfScreenHeight;
char m_currentScreen;
int m_currentIntroScreen;
IImage* m_pMformaLogo[2];
//IImage* m_pSplashPNG;
IImage* m_pVi2LPNG;
//IImage* m_pEsrbPNG;
//IImage* m_tinyFontBMP;
CMImage* m_MformaLogoImg[2];
CMImage* m_SplashImg;
CMImage* m_EsrbImg;
//No small fonts on Brew handsets really - sucks!!
AEEFont m_fontSmallBold;
AEEFont m_fontSmall;
//AEEFont m_currentFont;
int m_menuHeight;
int m_backdropShadowTop;
int m_backdropShadowHeight;
int m_backdropShadowBottom;
int m_backdropShadowCentre;
int m_mformaScroll;
long m_mformaStartTime;
long m_timer;
int m_champStage;
// 2005 0412 眠啊
boolean m_bPauseGame;
boolean m_bShowOptions;
boolean m_bGame_vibrate;
boolean m_bSoundFlag;
// boolean m_bOldSoundFlag;
boolean m_bDoneLegalScroll;
boolean m_bIsPractice;
boolean m_bPrevSoundOption;
boolean m_bRepaired;
int m_paragraphCounter;
JString** m_paragraphText;
JString* m_menuStringArray[MAX_MENU_STR];
JString m_titleText;
short m_subPage;
short m_numMenuItems;
short m_menuSelection;
int m_menuBarYPos;
int m_menuYPos;
int m_textScrollY;
int m_paragraphHeight;
int m_playerChampPos;
int m_champOrder[NUM_BIKES];
int m_curItem;
int m_myWorth;
int m_currentBike;
int m_partsOwned[NUM_PARTS];
int m_scoreThisRound[NUM_BIKES];
int m_curcol;
int m_tmpcol;
JString m_resultsMessage;
int m_recordLaps[NUM_TRACKS];
int m_recordTimes[NUM_TRACKS];
IFileMgr* m_pFileMgr;
IFile* m_pDataFile;
JString m_cheatCode;
int m_cheatIdx;
bool isNoFile;
};
#endif // #ifndef _FRONT_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -