📄 hotblood.c
字号:
/*===============================================================================
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 + -