?? gameapp.cpp
字號:
// GameApp.cpp: implementation of the JFZGameApp class.
//
//////////////////////////////////////////////////////////////////////
#include "GameApp.h"
#include "GameDoc.h"
#include "KeyControl.h"
#include "BaseView.h"
#include "LogoView.h"
#include "AboutView.h"
#include "HelpView.h"
#include "GameView.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//CGameApp::CGameApp()
//{
//
//}
//
//CGameApp::~CGameApp()
//{
//
//}
extern "C" {
int AEEClsCreateInstance(AEECLSID ClsId, IShell* pIShell, IModule* po, void ** ppObj)
{
*ppObj = NULL;
if (ClsId == AEECLSID_EIDOLON)
{
// 創建小應用程序
if (!AEEApplet_New(sizeof(CGameApp), ClsId, pIShell, po, (IApplet**)ppObj,
(AEEHANDLER)CGameApp::HandleEvent, (PFNFREEAPPDATA)CGameApp::FreeData)
== TRUE)
{
return EFAILED;
}
// 初始化數據
if (!CGameApp::InitAppData((IApplet*)*ppObj))
{
return EFAILED;
}
// Add your code here .....
return AEE_SUCCESS;
}
return (EFAILED);
}
} // end of extern "C"
boolean CGameApp::HandleEvent(CGameApp* pApp, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
return pApp->OnEvent(eCode, wParam, dwParam);
}
void CGameApp::FreeData(CGameApp* pApp)
{
pApp->Release();
}
boolean CGameApp::InitAppData(IApplet* pIApplet)
{
CGameApp* pApp = (CGameApp*) pIApplet;
return pApp->InitData();
}
void CGameApp::Release()
{
// 釋放出是分配的資源
if (m_pDoc)
{
// 釋放視圖
m_pDoc->ReleaseView();
// 視圖置為空
m_pDoc->SetCurView(NULL);
// 釋放控制器
if (m_pDoc->GetKeyControl())
{
m_pDoc->GetKeyControl()->Release();
m_pDoc->SetControl(NULL);
}
// 釋放文檔
m_pDoc->Release();
m_pDoc = NULL;
}
}
boolean CGameApp::InitData()
{
// 類成員設置缺省值
m_pDoc = NULL;
BEGIN_CHECK
{
// 創建文檔模板
CHECK_FALSE(CreateDocumentTemplate());
}
CATCH_CHECK
{
return FALSE;
}
END_CHECK
// 獲取文件聲音配置數據
// GetSoundCfgData();
m_bVibrate = false;
return TRUE;
}
boolean CGameApp::OnEvent(AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
switch (eCode)
{
case EVT_APP_START:
{
m_pDoc->m_pLogoView = new CLogoView(m_pDoc);
// 設置文檔關聯對象,開始時設置當前視圖為開始
m_pDoc->SetLogoView(m_pDoc->m_pLogoView);
m_pDoc->m_pLogoView->OnStartView();
}
return true;
case EVT_KEY:
return true;
case EVT_KEY_PRESS:
if (m_pDoc->m_nCurViewID == ID_VIEW_ABOUT && wParam != AVK_SELECT && wParam != AVK_CLR && wParam != AVK_5)
{
if (wParam == AVK_2)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pAboutView->m_pHtmlView),EVT_KEY,AVK_UP, dwParam);
else if (wParam == AVK_4)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pAboutView->m_pHtmlView),EVT_KEY,AVK_LEFT, dwParam);
else if (wParam == AVK_6)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pAboutView->m_pHtmlView),EVT_KEY,AVK_RIGHT, dwParam);
else if (wParam == AVK_8)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pAboutView->m_pHtmlView),EVT_KEY,AVK_DOWN, dwParam);
else
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pAboutView->m_pHtmlView),EVT_KEY,wParam, dwParam);
}
else if (m_pDoc->m_nCurViewID == ID_VIEW_HELP && wParam != AVK_SELECT && wParam != AVK_CLR && wParam != AVK_5)
{
if (wParam == AVK_2)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pHelpView->m_pHtmlView),EVT_KEY,AVK_UP, dwParam);
else if (wParam == AVK_4)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pHelpView->m_pHtmlView),EVT_KEY,AVK_LEFT, dwParam);
else if (wParam == AVK_6)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pHelpView->m_pHtmlView),EVT_KEY,AVK_RIGHT, dwParam);
else if (wParam == AVK_8)
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pHelpView->m_pHtmlView),EVT_KEY,AVK_DOWN, dwParam);
else
return IHTMLVIEWER_HandleEvent((m_pDoc->m_pHelpView->m_pHtmlView),EVT_KEY,wParam, dwParam);
}
else if (m_pDoc->m_nCurViewID == ID_VIEW_GAME && wParam != AVK_SELECT && wParam != AVK_CLR && wParam != AVK_5)
{
// if (m_pDoc->m_pGameView->m_nCurGameStatus == 2)
// {
// if (wParam == AVK_2)
// return IHTMLVIEWER_HandleEvent((m_pDoc->m_pGameView->m_pHtmlView),EVT_KEY,AVK_UP, dwParam);
// else if (wParam == AVK_4)
// return IHTMLVIEWER_HandleEvent((m_pDoc->m_pGameView->m_pHtmlView),EVT_KEY,AVK_LEFT, dwParam);
// else if (wParam == AVK_6)
// return IHTMLVIEWER_HandleEvent((m_pDoc->m_pGameView->m_pHtmlView),EVT_KEY,AVK_RIGHT, dwParam);
// else if (wParam == AVK_8)
// return IHTMLVIEWER_HandleEvent((m_pDoc->m_pGameView->m_pHtmlView),EVT_KEY,AVK_DOWN, dwParam);
// else
// return IHTMLVIEWER_HandleEvent((m_pDoc->m_pGameView->m_pHtmlView),EVT_KEY,wParam, dwParam);
// }
// else
return m_pDoc->GetKeyControl()->HandleKeyPress(eCode, wParam, dwParam);
}
else
return m_pDoc->GetKeyControl()->HandleKeyPress(eCode, wParam, dwParam);
case EVT_KEY_RELEASE:
return m_pDoc->GetKeyControl()->HandleKeyRelease(eCode, wParam, dwParam);
case EVT_APP_STOP:
return true;
case EVT_APP_SUSPEND:
m_pDoc->GetCurView()->OnSuspend();
return true;
case EVT_APP_RESUME:
m_pDoc->GetCurView()->OnResume();
return true;
case EVT_APP_NO_SLEEP:// 禁止節電模式
return true;
default:
break;
}
return false;
}
boolean CGameApp::CreateDocumentTemplate()
{
CGameDoc* pDoc = NULL;
CKeyControl* pControl = NULL;
BEGIN_CHECK
{
// 創建文檔
CHECK_NULL(pDoc, CGameDoc::CreateInstance());
// 創建控制器
CHECK_NULL(pControl, CKeyControl::CreateInstance(pDoc));
}
CATCH_CHECK
{
// 創建失敗
CUSTOM_RELEASE(pDoc);
CUSTOM_RELEASE(pControl);
return FALSE;
}
END_CHECK
pDoc->SetControl(pControl);
// 記錄文檔指針
m_pDoc = pDoc;
pDoc->SetApp(this);
// 創建成功
return true;
}
void CGameApp::GetSoundCfgData()
{
IFileMgr* pIFileMgr = NULL; // 文件接口
IFile* pIFile; // 文件操作借口
BEGIN_CHECK
{
// 創建文件接口
CHECK_ERROR(ISHELL_CreateInstance(m_pIShell, AEECLSID_FILEMGR, (void**)&pIFileMgr));
}
CATCH_CHECK
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
END_CHECK
// 文件不存在,創建文件
if (IFILEMGR_Test(pIFileMgr, SOUND_CFG_FILE) == SUCCESS)
{
// 打開聲音配置文件
pIFile = IFILEMGR_OpenFile(pIFileMgr, SOUND_CFG_FILE, _OFM_READWRITE);
if (pIFile == NULL)
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
// 將原始數據讀出
IFILE_Read(pIFile, &m_tOpenSound, sizeof(SOUNDCFG));
// 關閉文件
IRELEASE(pIFile, FILE);
}
else
{
pIFile = IFILEMGR_OpenFile(pIFileMgr, SOUND_CFG_FILE, _OFM_CREATE);
if (pIFile == NULL)
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
m_tOpenSound.bOpenSound = false;
IFILE_Write(pIFile, &m_tOpenSound, sizeof(SOUNDCFG));
// 關閉文件
IRELEASE(pIFile, FILE);
}
IRELEASE(pIFileMgr, FILEMGR);
}
boolean CGameApp::GetSoundCfg()
{
return m_tOpenSound.bOpenSound;
}
void CGameApp::SetSoundCfgData(boolean bOpenSound)
{
m_tOpenSound.bOpenSound = bOpenSound;
}
void CGameApp::SetVibrate(boolean bVibrate)
{
m_bVibrate = bVibrate;
}
boolean CGameApp::GetVibrate()
{
return m_bVibrate;
}
void CGameApp::WtriteSoundCfg(boolean bOpenSound)
{
IFileMgr* pIFileMgr = NULL; // 文件接口
IFile* pIFile; // 文件操作借口
SOUNDCFG tOpenSound;
tOpenSound.bOpenSound = bOpenSound;
BEGIN_CHECK
{
// 創建文件接口
CHECK_ERROR(ISHELL_CreateInstance(m_pIShell, AEECLSID_FILEMGR, (void**)&pIFileMgr));
}
CATCH_CHECK
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
END_CHECK
// 文件不存在,創建文件
if (IFILEMGR_Test(pIFileMgr, SOUND_CFG_FILE) == SUCCESS)
{
// 打開聲音配置文件
pIFile = IFILEMGR_OpenFile(pIFileMgr, SOUND_CFG_FILE, _OFM_READWRITE);
if (pIFile == NULL)
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
// 寫聲音配置數據
IFILE_Write(pIFile, &tOpenSound, sizeof(SOUNDCFG));
// 關閉文件
IFILE_Release(pIFile);
}
else
{
pIFile = IFILEMGR_OpenFile(pIFileMgr, SOUND_CFG_FILE, _OFM_CREATE);
if (pIFile == NULL)
{
IRELEASE(pIFileMgr, FILEMGR);
return;
}
IFILE_Write(pIFile, &tOpenSound, sizeof(SOUNDCFG));
// 關閉文件
IFILE_Release(pIFile);
}
IRELEASE(pIFileMgr, FILEMGR);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -