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

📄 frontend.h

📁 这是一个用BREW和VC++开发的暴力摩托游戏,与大家一同分享.
💻 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 + -