📄 gameloading.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 + -