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

📄 gameloading.cpp

📁 墨香最新私服
💻 CPP
字号:
// GameLoading.cpp: implementation of the CGameLoading class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "GameLoading.h"
#include "MainGame.h"
#include "GameIn.h"
#include "mhMap.h"
#include "cWindowSystemFunc.h"

#include "./WindowIDEnum.h"
#include "./Interface/cWindowManager.h"
#include "./Interface/cResourceManager.h"
#include "SkillManager_Client.h"
#include "./Input/Mouse.h"
#include "./Input/Keyboard.h"
#include "PathManager.h"
#include "LoadingDlg.h"
#include "./Interface/cScriptManager.h"
#include "cMsgBox.h"
#include "./Input/UserInput.h"
#include "UserInfoManager.h"
#include "ChatManager.h"

extern HWND _g_hWnd;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
GLOBALTON(CGameLoading)
DWORD WINAPI LoadingThread(void *p);			// ·Îµù ½º·¹µå
CGameLoading::CGameLoading()
{
	m_bThreadTerminated=FALSE;
	m_bMapLoadComplete=FALSE;
	m_MapNum = -1;

	m_pDlg	= NULL;
}

CGameLoading::~CGameLoading()
{

}

BOOL CGameLoading::Init(void* pInitParam)
{
	// ·Î±×ÀÎ,ij¸¯¼±ÅÃ,ij¸¯»ý¼º¿¡¼­ »ç¿ëÇÏ´Â ¸ã »èÁ¦
	MAP->Release();

	m_bThreadTerminated=FALSE;
	m_bMapLoadComplete=FALSE;
	NETWORK->SetCurState(this);

	GameLoadingParam * lParam = (GameLoadingParam *)pInitParam;

	//LONG selectedCharNum = *(LONG*)pInitParam;
	MSGBASE msg;
	msg.Category = MP_USERCONN;
	msg.Protocol = MP_USERCONN_CHARACTERSELECT_SYN;
	msg.dwObjectID = lParam->selectedCharNum;
	NETWORK->Send(&msg, sizeof(msg));

	char filename[256];
	sprintf(filename,"Image/LoadingMap/maploadingimage%02d.tga",lParam->m_MapNum);
	if(m_LoadingImage.LoadSprite(filename) == FALSE)
	{
		sprintf(filename,"Image/LoadingMap/maploadingimage00.tga");
		m_LoadingImage.LoadSprite(filename);
	}
	m_pDlg = (CLoadingDlg *)CreateGameLoading_m();
	

	WINDOWMGR->AfterInit();

	m_bFirst = TRUE;
	m_MapNum = -1;

	g_UserInput.SetInputFocus( FALSE );	//·ÎµùÁß¿£ ÀÎDz ó¸® ¾ÈÇÔ. ¹«½Ã.

	USERINFOMGR->SetMapChage( FALSE );//¸ÊÀ̵¿ÀÌ ¾Æ´Ñ°æ¿ì¿¡ ó¸®ÇÒ°ÍÀÌ ÀÖÀ½

	return TRUE;
}
void CGameLoading::Release(CGameState* pNextGameState)
{
	m_LoadingImage.Release();
	LOGFILE("WINDOWMGR->DestroyWindowAll();");
	WINDOWMGR->DestroyWindowAll();
//	WINDOWMGR->AddListDestroyWindow( m_pDlg );
	m_pDlg = NULL;
	LOGFILE("RESRCMGR->ReleaseResource(28)");
	RESRCMGR->ReleaseResource(28);//·Îµù À̹ÌÁö ·¹ÀÌ¾î ¹øÈ£
}

void CGameLoading::Process()
{
//	if(WAIT_OBJECT_0 == WaitForSingleObject(hThread, 0) )//||
		//WAIT_ABANDONED == WaitForSingleObject(hThread, 0) )
	{
//		CloseHandle(hThread);
//		m_bThreadTerminated = TRUE;
		EnterGame();
	}

	if(m_bFirst)
		m_bFirst = FALSE;
	else
	{
		if(m_bThreadTerminated == FALSE)
		{
//			SKILLMGR->Init();
			
			LOGFILE("Init EffectManager");
			EFFECTMGR->Init();
			
			m_bThreadTerminated = TRUE;
		}
		if(m_MapNum != (MAPTYPE)(-1) && m_bMapLoadComplete == FALSE && m_bThreadTerminated)
		{
			LOGFILE("MAP->InitMap(m_MapNum);");
			MAP->InitMap(m_MapNum);

			LOGFILE("PATHMGR->SetMap(MAP, m_MapNum,MAP->GetTileWidth());");
			PATHMGR->SetMap(MAP, m_MapNum,MAP->GetTileWidth());
//			MINIMAP->InitMiniMap(m_MapNum);
			
			m_bMapLoadComplete = TRUE;
		}
	}

	return;
}
void CGameLoading::BeforeRender()
{
}
void CGameLoading::AfterRender()
{
	WINDOWMGR->Render();	
	VECTOR2 tr;
	tr.x = tr.y = 0;
	m_LoadingImage.RenderSprite(NULL,NULL,0,&tr,0xffffffff);
}

void CGameLoading::NetworkMsgParse(BYTE Category,BYTE Protocol,void* pMsg)
{
	switch(Category)
	{
	case MP_USERCONN:
		{
			switch(Protocol) 
			{
			case MP_USERCONN_CHARACTERSELECT_ACK:
				{
					MSG_BYTE* pmsg = (MSG_BYTE*)pMsg;
					m_MapNum = pmsg->bData;
				}
				return;

			case MP_USERCONN_CHARACTERSELECT_NACK:
				{
					LOG(EC_MAPSERVER_CLOSED);
//					WINDOWMGR->MsgBox( MBI_MAPSERVER_CLOSE, MBT_OK, "¸Ê¼­¹ö°¡ ´ÝÇû½À´Ï´Ù.^nÀá½ÃÈÄ¿¡ ´Ù½Ã ½ÃµµÇϼ¼¿ä." );
//					MAINGAME->SetGameState(eGAMESTATE_END);	
					PostMessage( _g_hWnd, WM_CLOSE, NULL, NULL );
				}
				return;
			}
		}
		break;
	case MP_CHAT:
		CHATMGR->NetworkMsgParse(Protocol, pMsg);
		break;		
	}
//	LOG(EC_UNKNOWN_PROTOCOL);
}

void CGameLoading::EnterGame()
{
	if(m_bMapLoadComplete && m_bThreadTerminated && !m_bDisconnected )
	{
		//¿©±â¼­ °ÔÀӷεù?
//		GAMEIN->InitForGame();
		int initKind = eGameInInitKind_Login;
		MAINGAME->SetGameState(eGAMESTATE_GAMEIN,&initKind,sizeof(int));
	}
}

/////////////////////// ·Îµù ½º·¹µå /////////////////////////////////////
DWORD WINAPI LoadingThread(void *p)
{

	return 0;
}
//////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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