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

📄 pplogoview.cpp

📁 一个点泡泡游戏
💻 CPP
字号:
// PPLogoView.cpp: implementation of the CPPLogoView class.
//
//////////////////////////////////////////////////////////////////////

#include "PPLogoView.h"
#include "PPKeyControl.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPPLogoView::CPPLogoView()
{
}

CPPLogoView::CPPLogoView(CPPGameDoc* pDoc)
{
	SetDocument(pDoc);
}

CPPLogoView::~CPPLogoView()
{

}

void CPPLogoView::OnStartView()
{
	// 初始化对象
	if (!OnInitData())
	{
//		Release();
		return;
	}

	m_pDoc->SetCurView(this);
	// 设置定时器
	CALLBACK_Init(&m_cbTimer, (PFNNOTIFY)HandleTimer, this);

	OnSetTimer();
}

// 处理定时器响应
void CPPLogoView::OnSetTimer()
{
//	OnDraw(0);
//	SetNextBmp();

	// 设置定时器
	SetTimer(TIME_VIEW, (PFNNOTIFY)(CPPLogoView::HandleTimer));
}

bool CPPLogoView::SetTimer(int32 dwInterval, PFNNOTIFY pfnCallback)
{
	CPPGameApp* pApp = NULL;

	BEGIN_CHECK
	{
		// 取app指针
		CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
		CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, dwInterval, &m_cbTimer));
	}
	CATCH_CHECK
	{
		return false;
	}
	END_CHECK

	return true;
}

void CPPLogoView::HandleTimer(void* pView)
{
	((CPPLogoView* )pView)->OnTimer();
}

void CPPLogoView::OnTimer()
{
	// 重新计算数据
	if (m_pDoc == NULL)
		return;
	
	// 在Doc里处理按键事件
	if (!m_pDoc->UpdateLogoView())
	{
		m_pDoc->SwitchView(ID_VIEW_MENU);
		return;
	}

	// 获取应用程序指针
	CPPGameApp* pApp = (CPPGameApp*) GETAPPINSTANCE();
	if (pApp == NULL)
	{
		return;
	}
	
	// 如果到了1s,就换下一张图
	if (m_nTimeCount >= 20)
	{
		m_nTimeCount = 0;
		m_bNextBmp = true;

		if (m_nCurBmpIndex < 3)	
//		if (m_nCurBmpIndex < 2)	
		{
			m_bReload = true;
		}
		else
		{
			// 达到最后一张位图,停止定时器,返回
			ExitView();
			m_pDoc->SetExitTimer(false);
			m_pDoc->SwitchView(ID_VIEW_MENU);
			return;
		}
	}
	else
		m_nTimeCount++;

	if (m_bReload)
	{
		// 根据更新数据画图
		OnDraw(m_nCurBmpIndex);
		SetNextBmp();
		m_bReload = false;
	}

	BEGIN_CHECK
	{
		// 取app指针
		CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
		CHECK_ERROR(ISHELL_SetTimerEx(pApp->m_pIShell, TIME_VIEW, &m_cbTimer));
	}
	CATCH_CHECK
	{
		return;
	}
	END_CHECK
}

bool CPPLogoView::OnInitData()
{
	BEGIN_CHECK
	{
		CHECK_NULL(m_pBitmap[EMONTERNET_INDEX], CPPBitmap::CreateInstance());
		CHECK_NULL(m_pBitmap[EBOX_INDEX], CPPBitmap::CreateInstance());
		CHECK_NULL(m_pBitmap[ESTART_INDEX], CPPBitmap::CreateInstance());

		CHECK_FALSE(LoadLogoBmpRes());
	}
	CATCH_CHECK
	{
		CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
		CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
		CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
	}
	END_CHECK

	m_nCurBmpIndex = 0;
	m_nTimeCount = 0;
	m_bNextBmp = true;
	m_bReload = false;

	// 将键盘按键全部清空
	m_pDoc->GetKeyControl()->InitData();

	return true;
}

boolean CPPLogoView::IsSwitchBmp()
{
	return m_bNextBmp;
}

void CPPLogoView::SetNextBmpStatus(boolean bNextBmp)
{
	m_bNextBmp = bNextBmp;
}

void CPPLogoView::SetNextBmp()
{
	m_nCurBmpIndex++;
}

void CPPLogoView::OnDraw(int nCurBmp)
{
	CPPGameApp* pApp = NULL;
	
	BEGIN_CHECK
	{
		// 取app指针
		CHECK_NULL(pApp, (CPPGameApp*) GETAPPINSTANCE());
	}
	CATCH_CHECK
	{
		return;
	}
	END_CHECK

	m_pBitmap[m_nCurBmpIndex]->Draw(0, 0, EDD_ALIGN_TOP | EDD_ALIGN_LEFT);
}

void CPPLogoView::ExitView()
{
	// 结束定时器标志
	m_pDoc->SetExitTimer(true);
	// 不切换下一张位图
	m_bNextBmp = false;
	// 结束定时器
	CALLBACK_Cancel(&m_cbTimer);

	// 释放位图资源
	CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
	CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
	CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);

//	m_pDoc->SwitchView(ID_VIEW_MENU);
}

boolean CPPLogoView::LoadLogoBmpRes()
{
	BEGIN_CHECK
	{
		// 加载位图资源
		CHECK_ERROR(m_pBitmap[EMONTERNET_INDEX]->Load(IDB_MONTERNET));
		CHECK_ERROR(m_pBitmap[EBOX_INDEX]->Load(IDB_BOX));
		CHECK_ERROR(m_pBitmap[ESTART_INDEX]->Load(IDB_START));
	}
	CATCH_CHECK
	{
		CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
		CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
		CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
		return false;
	}
	
	return true;
}

//void CPPLogoView::Release()
//{
//	delete this;
//}

void CPPLogoView::FreeResourse()
{
	// 结束定时器标志
	m_pDoc->SetExitTimer(false);
	// 结束定时器
	CALLBACK_Cancel(&m_cbTimer);
	
	// 释放位图资源
	CUSTOM_RELEASE(m_pBitmap[EMONTERNET_INDEX]);
	CUSTOM_RELEASE(m_pBitmap[EBOX_INDEX]);
	CUSTOM_RELEASE(m_pBitmap[ESTART_INDEX]);
}

void CPPLogoView::OnSuspend()
{
	// 结束定时器
	CALLBACK_Cancel(&m_cbTimer);

//	// 释放资源

	CPPBaseView::OnSuspend();
}

void CPPLogoView::OnResume()
{
	CPPBaseView::OnResume();
}

⌨️ 快捷键说明

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