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

📄 hotblood.c

📁 <B>韩国游戏《热血》</B>
💻 C
📖 第 1 页 / 共 5 页
字号:
/*===============================================================================
INCLUDES AND VARIABLE DEFINITIONS
=============================================================================== */
#include "AEE.h"			    // Standard AEE Declarations  
#include "AEEModGen.h"          // Module interface definitions
#include "AEEAppGen.h"          // Applet interface definitions
#include "AEEShell.h"           // Shell interface definitions
#include "AEEDisp.h"            // Display interface defintions
#include "AEEImage.h"
#include "AEEStdLib.h"
#include "AEETAPI.h"
#include "AEETime.h"
#include "AEEDate.h"
#include "AEEFile.h"
#include "AEENet.h"
#include "IEB_KTF_DM.h"
//#include "debug_module.h"


#include "hotblood.h"
#include "hotblood_res.h"


#include "hotblood.bid"		// applet class ID

//=======================================================
// 窃荐 橇肺配鸥涝
//=======================================================
static boolean HotBlood_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam);
static boolean HotBlood_InitAppData(IApplet * pi);
static void HotBlood_FreeData(IApplet * pi);

//荤款靛 包访.
static boolean InitSound(IApplet * pi);
static void SoundPlayerCBFn(void *pUser, AEESoundPlayerCmd eCBTpe, AEESoundPlayerStatus eStatus, uint32 dwParam);
static void PlayMMF(IApplet * pi, int nu);

static void HotBlood_Process(void * pi);


static void movePlayerX(IApplet * pi, PlayerStruct * who, int move);
static void movePlayerY(IApplet * pi, PlayerStruct * who, int move);
static void enemyManager(IApplet * pi);
static void shockCheck(IApplet * pi);
static void HPCheck(IApplet * pi, PlayerStruct * who, int power);
static void checkNextStage(IApplet * pi);
static void checkPig(IApplet * pi);
static void checkBonusStage(IApplet * pi);
static void stoneManager(IApplet * pi);
static void checkStone(IApplet * pi);
static void checkBonusEnd(IApplet * pi);

static void InitGame(IApplet * pi);
static void InitStage(IApplet * pi);
static void InitPlayer(IApplet * pi);


static void drawPlayer(IApplet * pi); 
static void drawGame(IApplet * pi);
static void drawLogo(IApplet * pi);
static void drawMenu(IApplet * pi);
static void drawLoadingBar(IApplet * pi, int loading);
static void drawIntroInfo(IApplet * pi);
static void drawEndingInfo(IApplet * pi);
static void drawIntroStage(IApplet * pi);
static void drawEnergy(IApplet * pi);
static void drawMsgWindow(IApplet * pi, int mode);
static void drawPopup(IApplet * pi);
static void drawHelp(IApplet * pi);
static void drawNoticePee(IApplet * pi);
static void drawGoGo(IApplet * pi);
static void drawEvent(IApplet * pi);
static void drawSave(IApplet * pi);
static void drawScore(IApplet * pi);
static void drawOption(IApplet * pi);
static void drawObjects(IApplet * pi);
static void drawHelpPlay(IApplet * pi);
static void drawEffect1(IApplet * pi);
static void drawEffect2(IApplet * pi);
static void drawAduInfo(IApplet * pi);
static void drawStaffInfo(IApplet * pi);

static void InitRandom(IApplet *pi);
static double GenRandom(IApplet *pi, double max);
static int GetRandomMinMax(IApplet *pi, int min, int max);
static int Float2Int(double x);
static void File_Write(IApplet * pi, char buf[]);
static void File_Read(IApplet * pi);

static void HotBlood_AI(IApplet * pi);

static void SocketOpen(IApplet * pi);
static void ReleaseNetAndSocket(IApplet * pi);
static void CallBack_KTFConnect(void * data);
static void CommonConnectCB(void * pUser, int iError);
static void Sockapp_WriteCB(void * pi);
static void NetWork_ReceiveHeader(void * pi);
static void Socket_ReadCB(void * pi);

static void WSOpen(IApplet * pi);
static void CommonConnectCB2(void * pUser, int iError);
static void Sockapp_WriteCB2(void * pi);
static void Socket_ReadCB2(void * pi);
static void CallBack_Connect(void * data);

//巩磊凯 包访.
static void DisplayText(HotBloodApp * pMe,char pszStr[], int Pos_x, int Pos_y, AEEFont font, uint32 Flag, uint16 width);
static void CHAR_TO_AECHAR(unsigned char * pszIn, AECHAR * pDest, int nSize);
static void subString(AECHAR origin[],AECHAR copy[],int start_,int end_);
static void init_Array(AECHAR String[], int Max);



static void CHAR_TO_AECHAR(unsigned char * pszIn, AECHAR * pDest, int nSize)
 { 	
	int i = 0; 
	for (i = 0 ; i < nSize; i++)  
		{ 
			if(*pszIn & 0x80)
				{
						MEMCPY(pDest, pszIn, sizeof(AECHAR)); 
				//* pDest = *((AECHAR*) pszIn);
						pszIn += 2; 
				}
			else
				{
					* pDest = * pszIn; 
					pszIn ++; 
				}
			pDest ++;
		} 
		pDest = 0; 
}

static void subString(AECHAR origin[],AECHAR copy[],int start_,int end_)
{
	 int ii_ = 0;
	 int s_ = 0;
     for(ii_ = start_ ; ii_ < end_ ; ii_++)
	 {
		 copy[s_] = origin[ii_];
		 s_++;
	 }
}
static void init_Array(AECHAR String[], int Max)
{
	int i = 0;
	
	for(i = 0 ; i < Max;i++) 
	{
		String[i] = '\0';
	}
}

static void DisplayText(HotBloodApp * pMe,char pszStr[], int Pos_x, int Pos_y, AEEFont font, uint32 Flag, uint16 width)
{
	AECHAR * pszBuf = NULL;
	AECHAR wcBuf[200] = {0};
	int pixelWidth=0;
	int FontHeight;
	int dy = Pos_y;
	int pnAscent;        // Stores the ascent in number of pixels
	int pnDescent;       // Stores the descent in number of pixels

	int temp_ = 0;
	int k =0 ;
	int l = 0;
	int totalCh = 0;
	int tmp_width = 0;
	int max = 0;
	AECHAR tmp_buf[100] = {0};
	AECHAR TBuf[200] = {0};
	
	//迄飘狼 Height甫 备茄促
	FontHeight = IDISPLAY_GetFontMetrics (pMe->a.m_pIDisplay, font,&pnAscent, &pnDescent);
   
	//历厘滚欺俊 皋葛福 且寸阑 茄促.
	if ((pszBuf = (AECHAR *)MALLOC(200)) == NULL)
		return;

//免仿且巩厘狼 辨捞甫 备茄促. 
//AECHAR肺 函券且 锭 荤侩且 辨捞 捞骨肺 STR_TO_WSTR肺 
//客捞靛 巩磊凯肺 函券饶 WSTRLEN栏肺 辨捞甫 备茄促.
	STR_TO_WSTR (pszStr, TBuf, 300);
	max = WSTRLEN(TBuf);
	//客捞靛 巩磊凯肺 函券
	CHAR_TO_AECHAR((unsigned char*)pszStr, pszBuf, max);
	
//傈眉拳搁狼 Width
	temp_ = width;
//巩磊凯 醚 辨捞
	totalCh = WSTRLEN(pszBuf);
	// Pos_x 谅钎何磐 免仿且 拳搁 狼 Width
	k = temp_ -Pos_x;
// 巩厘捞 场朝锭鳖瘤 馆汗
	for(temp_ = 0; temp_ < totalCh; temp_++)
	{
		subString(pszBuf,wcBuf,l,temp_);
		pixelWidth=IDISPLAY_MeasureText(pMe->a.m_pIDisplay,font,wcBuf);
		subString(pszBuf,tmp_buf,temp_,temp_+1);
		tmp_width = IDISPLAY_MeasureText(pMe->a.m_pIDisplay, font,tmp_buf);

		if(pixelWidth >= k - tmp_width)
		{
			subString(pszBuf,wcBuf,l,temp_-1);
			IDISPLAY_DrawText(pMe->a.m_pIDisplay, font, wcBuf, -1, Pos_x , dy, 0 , Flag);
			dy += FontHeight;
			l = temp_; 
			init_Array(wcBuf,WSTRLEN(wcBuf));
		}
	}
	if(l < temp_) 
	{
		subString(pszBuf,wcBuf,l,totalCh);
		IDISPLAY_DrawText(pMe->a.m_pIDisplay, font, wcBuf, -1, Pos_x , dy, 0 , Flag);
	}
	FREE (pszBuf);
	return;   
}

int AEEClsCreateInstance(AEECLSID ClsId, IShell * pIShell, IModule * po, void ** ppObj)
{
	*ppObj = NULL;

	if(ClsId == AEECLSID_HOTBLOOD) {
		if(AEEApplet_New(sizeof(HotBloodApp), ClsId, pIShell, po, (IApplet**)ppObj, (AEEHANDLER)HotBlood_HandleEvent, (PFNFREEAPPDATA)HotBlood_FreeData) == TRUE) {
			if(HotBlood_InitAppData((IApplet*)*ppObj) == TRUE) {
				return (AEE_SUCCESS);
			}
		}
	}

	return (EFAILED);
}

static boolean HotBlood_InitAppData(IApplet * pi)
{
	int i;
	AEERect r;
	IEB_KTF_System * pDUser = NULL;
	SYSINFO SysInfo;
	AEEDeviceInfo di;
	HotBloodApp * pme = (HotBloodApp *)pi;

	//绒措迄 逞滚 
	#ifdef AEE_SIMULATOR
		STRCPY(pme->HPNumber,"01612341234");
	#else
		
		ISHELL_CreateInstance(pme->a.m_pIShell, AEECLSID_DM, (void**)&pDUser);
		MEMSET(&SysInfo, 0, sizeof(SysInfo));
		IEB_KTF_SYSTEM_GetSysInfo(pDUser, &SysInfo);
		IEB_KTF_SYSTEM_Release(pDUser);
		STRCPY(pme->HPNumber,SysInfo.HandsetMIN);
	#endif

	//泅犁 叼胶敲饭捞 农扁甫 啊廉柯促.
	if( pme->a.m_pIShell ) {
		ISHELL_GetDeviceInfo(pme->a.m_pIShell, &di);
		pme->m_cxWidth = di.cxScreen;
		pme->m_cyHeight = di.cyScreen;
	}

	InitRandom(pi);

	//泅犁 霸烙 惑怕 瘤沥.
	pme->GameState = GS_INTRO;
	pme->polyCount = 0;

	pme->cheatMode = 0;

	pme->memRelease = TRUE;

	pme->selectedMenu = 0;
	pme->popupNum = 0;
	pme->soundOn = TRUE;
	pme->vibOn = TRUE;

	pme->peeOn = FALSE;

	pme->ply[0].PlayerState = PS_NULL;

	InitSound(pi);
	
	//焊胶啊 割锅掳 临俊 唱坷绰瘤..
	pme->appBoss[0] = 8;
	pme->appBoss[1] = 10;
	pme->appBoss[2] = 12;

	//割锅掳俊辑 硅版捞 官差绰瘤..
	pme->appInnerStage[0] = 5;
	pme->appInnerStage[1] = 6;
	pme->appInnerStage[2] = 7;

	if( pme->m_cyHeight <= 148 ) {
		//pme->BackGroundY = pme->m_cyHeight - 148;
	}else {
		//pme->BackGroundY = 0;
	}
	pme->BackGroundY = 0;
	//pme->O_PlayerY = pme->m_cyHeight - 117;
	pme->O_PlayerY = (pme->m_cyHeight - 117) / 2;

	//茄 其捞瘤俊 焊咯瘤绰 扼牢 荐 拌魂.
	for( i = 6;i < 10;i++ ) {
		if( 10 + i * 13 > pme->m_cyHeight - 28 ) continue;
		pme->line = i + 1;
	}

	pme->initFlag = TRUE;
	for( i = 0;i < 7;i++ ) {
		pme->menu[i] = pme->m_cyHeight - 39;
	}

	SETAEERECT(&r, 22, (pme->m_cyHeight - 40) / 2 + 33, 70, 5);
	Status_Bar_init(&pme->bar, pme->a.m_pIDisplay, pme->a.m_pIShell, 4, &r, FALSE);

	//肺绊 捞固瘤 肺靛.
	if( (pme->m_pILogo = ISHELL_LoadResImage(pme->a.m_pIShell, HOTBLOOD_RES_FILE, IDB_POLYLOGO)) == NULL )		return FALSE;

	//俊呈瘤官 倔奔 捞固瘤 肺靛.
	for( i = 0;i < 7;i++ ) {
		if( (pme->m_pIFace[i] = ISHELL_LoadResImage(pme->a.m_pIShell, HOTBLOOD_RES_FILE, (int16)(i + 111))) == NULL )		return FALSE;
	}

	return TRUE;
}

static void InitGame(IApplet * pi) 
{
	int i, j, k;
	HotBloodApp * pme = (HotBloodApp *)pi;

	int typeInOrder[3][14][4] = {
		{
			{ 1, 99, 99, 99},
			{ 1, 99, 99, 99},
			{ 1,  1, 99, 99},
			{ 1,  1, 99, 99},
			{ 1,  1,  1, 99},

			{ 1,  2, 99, 99},
			{ 1,  1,  2, 99},
			{ 2,  1,  1, 99},
			{ 4,  1,  2, 99},
			{99,  1,  2,  2},
			{99, 99, 99, 99},
			{99, 99, 99, 99},
			{99, 99, 99, 99},
			{99, 99, 99, 99}
		},
		{
			{ 1,  1, 99, 99},
			{ 2,  1, 99, 99},
			{ 1,  2, 99, 99},
			{ 1,  2, 99, 99},
			{ 1,  2,  2, 99},
			{ 1,  2,  3, 99},

			{ 1,  2,  3, 99},
			{ 1,  1,  2, 99},
			{ 2,  2,  3, 99},
			{ 2,  3,  2,  3},
			{ 5,  3,  2,  2},
			{99,  2,  2,  3},
			{99, 99, 99, 99},
			{99, 99, 99, 99}
		},
		{
			{ 1,  1,  2, 99},
			{ 2,  3, 99, 99},
			{ 1,  1,  2, 99},
			{ 2,  2,  3, 99},
			{ 1,  1,  3, 99},
			{ 1,  1,  2,  2},
			{ 2,  1,  1,  2},

			{ 2,  2,  3, 99},
			{ 2,  3,  2, 99},
			{ 2,  2,  3,  3},
			{ 3,  2,  2,  2},
			{ 2,  3,  3,  2},
			{ 6,  3,  2,  2},
			{99,  3,  2,  2}
		}
	};

	int xyInOrder[3][14][4] = {
		{
			{ 3, 99, 99, 99},
			{ 1, 99, 99, 99},
			{ 1,  3, 99, 99},
			{ 2,  4, 99, 99},
			{ 1,  3,  4, 99},
			{ 2,  4, 99, 99},
			{ 1,  2,  3, 99},
			{ 1,  3,  4, 99},
			{ 3,  1,  4, 99},
			{99,  2,  3,  4},
			{99, 99, 99, 99},
			{99, 99, 99, 99},
			{99, 99, 99, 99},
			{99, 99, 99, 99}
		},
		{
			{ 1,  3, 99, 99},
			{ 2,  3, 99, 99},
			{ 1,  4, 99, 99},
			{ 2,  3, 99, 99},
			{ 1,  2,  4, 99},
			{ 1,  2,  3, 99},

			{ 1,  2,  3, 99},
			{ 1,  2,  3,  4},
			{ 2,  3,  4, 99},
			{ 1,  2,  3,  4},
			{ 3,  1,  2,  4},
			{99,  1,  2,  3},
			{99, 99, 99, 99},
			{99, 99, 99, 99}
		},
		{
			{ 1,  2,  3, 99},
			{ 1,  4, 99, 99},

⌨️ 快捷键说明

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