6450 lines
207 KiB
C++
6450 lines
207 KiB
C++
|
||
#include "stdafx.h"
|
||
#include <WindowsX.h>
|
||
#include "SGameRenewalLobby.h"
|
||
|
||
#include "KDeviceManager.h"
|
||
#include "KRenderDeviceDX.h"
|
||
|
||
#include "KRenderObjectMesh.h"
|
||
#include "KRenderObjectEtc.h"
|
||
#include "KSeqModel.h"
|
||
#include "KSeqSpeedTree.h"
|
||
#include "KSeqAvatar.h"
|
||
#include "KSeqAvatarEx.h"
|
||
#include <network/XSyncStreamConnection.h>
|
||
#include <kfile/KFileManager.h>
|
||
|
||
#include "KUIWndManager.h"
|
||
|
||
#include "SGameManager.h"
|
||
#include "SGameMessage.h"
|
||
//#include "SGameMessageUI.h"
|
||
#include "SGameOption.h"
|
||
|
||
#include "SCobManager.h"
|
||
#include "SSpeedTreeManager.h"
|
||
|
||
#include "SRenderFlag.h"
|
||
#include "SGameViewPort.h"
|
||
#include "SGameSound.h"
|
||
#include "SGameOption.h"
|
||
|
||
#include "SItemDB.h"
|
||
|
||
#include "SDefaultTextureResourceDB.h"
|
||
|
||
#include "SStringDB.h"
|
||
#include "SJobDB.h"
|
||
#include <toolkit/XEnv.h>
|
||
|
||
#include "ErrorCode/ErrorCode.h"
|
||
#include <toolkit/XStringUtil.h>
|
||
#include "SUISysMsgDefine.h"
|
||
|
||
#include "TerrainMapEngine.h"
|
||
#include "SGameSky.h"
|
||
#include "SWorldLocationDB.h"
|
||
#include <time.h>
|
||
|
||
#include <SpeedGrass/Random.h>
|
||
#include "SDebug_Util.h"
|
||
#include "SGameQJTV.h"
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
|
||
#include "QJTVObj.h"
|
||
#include "KUITextureManager.h"
|
||
#include "SGameMilesSoundMgr.h"
|
||
|
||
#include "shellapi.h"
|
||
|
||
#endif
|
||
|
||
# include "SGameCreditsScene.h"
|
||
# include "SGameQjtvScene.h"
|
||
# include "SGameImageScene.h" // sonador #2.1.2.10 중화권 로그인/로고 화면 갱신
|
||
|
||
#include "SGameCutScene.h"
|
||
#include "SDebug_Util.h"
|
||
#include "Slog.h"
|
||
|
||
// 2010.04.22 - prodongi
|
||
#include "SSelectedAvatarInfo.h"
|
||
|
||
#include "SUICreateCharWnd.h"
|
||
|
||
|
||
extern bool g_bUserCamMode;
|
||
/// 2010.11.10 - prodongi
|
||
//#ifdef _DEV
|
||
//extern bool g_bDebugMode;
|
||
//#endif
|
||
extern HWND g_hWnd;
|
||
extern const char * AUTH_VER;
|
||
extern bool g_bServerListFocus;
|
||
extern bool g_bServerListSeen;
|
||
extern bool g_bCharListSeen;
|
||
|
||
extern void SetOtherNavigate( int nWinID, const char * pURL, int nWidth, int nHeight );
|
||
extern void SetOtherNavigateMove( int nWinID, int nX, int nY );
|
||
extern void SetOtherNavigateClose( int nWinID );
|
||
|
||
extern K3DTexture* _getTexture(const char *texname, DWORD skin_color = 0);
|
||
|
||
extern std::string GetCutTimeString( float f_Time, int nCutCnt/*1*/ );
|
||
extern void MsgSplit( const char* szMsg, std::vector<std::string>& vecText, const wchar_t* lpDelimiter, bool bProcSpecialCharacter=false );
|
||
|
||
#ifndef WM_MOUSEWHEEL
|
||
#define WM_MOUSEWHEEL 0x020A
|
||
#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
|
||
|
||
#define WM_LMOUSE_CLICK S_USER+100
|
||
#define WM_RMOUSE_CLICK S_USER+101
|
||
#endif
|
||
|
||
#define _BG_SPRITE_ENABLE_
|
||
|
||
|
||
namespace
|
||
{
|
||
const int cBlend_Width = 1024;
|
||
|
||
const short c_WINK_TIME = 1000; //Face Ani
|
||
|
||
const float c_fInitRotate = 90*K3D_PI/180.f;
|
||
const int c_nMaxRace = 3;
|
||
const float c_fAvatarScale = 1.0f;
|
||
//#define CREATE_CHAR_EFFECT
|
||
const char* c_lpCreateEffectFileName = "rcfx_lobby_select_fx.nx3";
|
||
|
||
const char* c_szLobbyGaiaNX3PropName = "rclobby_gaia.nx3";
|
||
const char* c_szLobbyDevaNX3PropName = "rclobby_deva.nx3";
|
||
const char* c_szLobbyAsuraNX3PropName = "rclobby_asura.nx3";
|
||
|
||
const char* c_szLobbyAsuraNX3EffectPropName = "lobby_asura_fire01.nx3";
|
||
const int c_nAsuraNX3EffectPos[c_nAsuraNX3EffectMaxPos][2] =
|
||
{
|
||
{62,182}, {72,182}, {59,235}, {73,236}, {459,202}, {491,204}, {532,202}, {453,262}, {490,266},
|
||
{538,263}, {551,246}, {591,248}, {594,278}
|
||
};
|
||
|
||
//const char * szBG_Asura = "BG_Asura.jtv";
|
||
//const char * szBG_Deva = "BG_Deva.jtv";
|
||
//const char * szBG_Gaia = "BG_Gaia.jtv";
|
||
|
||
const int c_nGCLAN_GAIA = 0;
|
||
const int c_nGCLAN_DEVA = 1;
|
||
const int c_nGCLAN_ASURA = 2;
|
||
|
||
const int c_nLOBBY_NUDE_SKIN = 5;
|
||
const int c_nLOBBY_NUDE_HAIRCOLOR = 10;
|
||
|
||
const char * pAsuraCreate[] =
|
||
{
|
||
"rclobby_asura_camera_zoomout.nx3",
|
||
"rclobby_asura_camera_zoom.nx3",
|
||
"rclobby_asura_camera_zooming.nx3",
|
||
};
|
||
|
||
const char * pDevaCreate[] =
|
||
{
|
||
"rclobby_deva_camera_zoomout.nx3",
|
||
"rclobby_deva_camera_zoom.nx3",
|
||
"rclobby_deva_camera_zooming.nx3",
|
||
};
|
||
|
||
const char * pGaiaCreate[] =
|
||
{
|
||
"rclobby_gaia_camera_zoomout.nx3",
|
||
"rclobby_gaia_camera_zoom.nx3",
|
||
"rclobby_gaia_camera_zooming.nx3",
|
||
};
|
||
|
||
enum
|
||
{
|
||
LOBBY_CAMERA_ZOOMOUT, // Minimized state
|
||
LOBBY_CAMERA_ZOOM, // Maximized state
|
||
LOBBY_CAMERA_ZOOMING, // Zooming in
|
||
LOBBY_CAMERA_CHANGE, // Transform
|
||
LOBBY_CAMERA_ZOOMING_OUT, // Zooming out
|
||
};
|
||
|
||
const char * pCamAniKey[] =
|
||
{
|
||
"zoomout",
|
||
"zoom",
|
||
"zooming",
|
||
"change"
|
||
};
|
||
|
||
const char* c_pBG_Set[] =
|
||
{ "gaia_BG_set.txt", "deva_BG_set.txt", "asura_BG_set.txt" };
|
||
|
||
|
||
const char * pMainAniKey[] =
|
||
{
|
||
"loby_init", //시작
|
||
"loby_login", //멈춤 계정 로그인
|
||
|
||
"loby_select", //캐릭터 선택
|
||
"loby_asura", //아수라 생성
|
||
"loby_deva", //데바 생성
|
||
"loby_gaia", //가이아 생성
|
||
};
|
||
|
||
const char* c_szPanel[] =
|
||
{
|
||
"rc_lobby_asura_panel.nx3",
|
||
"rc_lobby_deva_panel.nx3",
|
||
"rc_lobby_gaia_panel.nx3",
|
||
};
|
||
|
||
const char* c_szDefault = "default";
|
||
|
||
const char* c_szDevaBGM = "06_Raksih.ogg";
|
||
const char* c_szGaiaBGM = "11_Horaizen_in_the_Sunset.ogg";
|
||
const char* c_szAsuraBGM = "16_Dusk_Kahthan.ogg";
|
||
|
||
const char* c_szDevaMusic = "sfx_forest_fine01.wav";
|
||
const char* c_szGaiaMusic = "sfx_forest_fine01.wav";
|
||
const char* c_szAsuraMusic = "sfx_sandstorm01.wav";
|
||
|
||
// sonador 10.3.1 로그인 화면 리뉴얼
|
||
#if defined( _TERRAIN_ENABLE_ )
|
||
const char* c_szLOBBY_SET[] = { "set_login01.txt","set_login02.txt","set_login03.txt" };
|
||
const char* c_szLOBBY_select = "set_select.txt";
|
||
const char* c_szLOBBY_LOGO[] = { "rcfx_evole_lobby_logo_star.nx3", "rcfx_evole_lobby_logo_move.nx3", "rcfx_evole_lobby_logo_loop.nx3" };
|
||
const char* c_szLOBBY_BG[] =
|
||
{ "logobak.jtv", };
|
||
#endif
|
||
|
||
}
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
bool _refreshTexture( K3DTexture* pTexture, BYTE* pBit, int nW, int nH );
|
||
#endif
|
||
|
||
|
||
SGameRenewalLobby::SGameRenewalLobby(
|
||
SGameManager* pGameMng
|
||
, K3DRenderDeviceDX* pRenderDevice
|
||
, SSoundManager* pSoundMng
|
||
, KTextureManager* pTextureMng
|
||
, KNX3Manager* pNX3Mng
|
||
, SGameMilesSoundMgr* pMSoundMgr )
|
||
: SGame ( pGameMng, GAME_TYPE_LOGIN, pRenderDevice, pSoundMng, pTextureMng, pNX3Mng, pMSoundMgr )
|
||
, m_nAppointmentCharSelectIndex ( -1 )
|
||
, m_pNoticeReceiver ( NULL )
|
||
, m_bLobbyFogEnable ( false )
|
||
, m_colorLobbyFog ( c_colorLobbyFog )
|
||
, m_dwStartCharSelectListWaitTime ( 0 )
|
||
, m_nSelectedCharIndex ( -1 )
|
||
, m_nSelectSex ( SEX_FEMALE )
|
||
//, m_pDevaBG_QJTV ( NULL )
|
||
, m_nSelectRaceBGM ( -1 )
|
||
, m_nSelectRaceEffectSound ( -1 )
|
||
//, m_pAsuraBG_QJTV ( NULL )
|
||
//, m_pGaiaBG_QJTV ( NULL )
|
||
, m_BeforeCharListState ( GAMELOGIN_INIT_VALUE )
|
||
, m_bShowBG ( true )
|
||
, m_nOldMipBias ( 0 )
|
||
, m_nOldResourceQual ( 0 )
|
||
, m_pAsuraCamera ( NULL )
|
||
, m_pGaiaCamera ( NULL )
|
||
, m_pDevaCamera ( NULL )
|
||
, m_pDevaNX3Prop ( NULL )
|
||
, m_pAsuraNX3Prop ( NULL )
|
||
, m_pGaiaNX3Prop ( NULL )
|
||
, m_pDevaManAvatar ( NULL )
|
||
, m_pDevaWomanAvatar ( NULL )
|
||
, m_pGaiaManAvatar ( NULL )
|
||
, m_pGaiaWomanAvatar ( NULL )
|
||
, m_pAsuraManAvatar ( NULL )
|
||
, m_pAsuraWomanAvatar ( NULL )
|
||
, m_bCreateCharSuccess ( false )
|
||
, m_pCreateSuccessEffect ( NULL )
|
||
, m_bCreating ( false )
|
||
, m_vStrServerURLIndex ( -1 )
|
||
, m_pSceneMgr ( 0 )
|
||
, m_pCharaterBgSceneMgr ( 0 )
|
||
, m_BgScene ( 0 )
|
||
, m_Bg_Deva ( 0 )
|
||
, m_Bg_Asura ( 0 )
|
||
, m_Bg_Gaia ( 0 )
|
||
, m_BgScene_ClanSelect ( 0 )
|
||
, m_BgScene_ClanSelect_Asura ( 0 )
|
||
, m_BgScene_ClanSelect_Deva ( 0 )
|
||
, m_BgScene_ClanSelect_Gaia ( 0 )
|
||
, m_BgScene_ClanDesc_Asura ( 0 )
|
||
, m_BgScene_ClanDesc_Deva ( 0 )
|
||
, m_BgScene_ClanDesc_Gaia ( 0 )
|
||
, m_BgScene_Pane_Type02 ( 0 )
|
||
//, m_BgScene_Pane_Type02_2 ( 0 )
|
||
, m_BgScene_Pane_Type03 ( 0 )
|
||
, m_BgScene_Pane_Type03_right ( 0 )
|
||
|
||
//, m_LogoScene ( 0 )
|
||
, m_IntroScene ( 0 )
|
||
, m_IntroScene_Navislamia ( 0 )
|
||
, m_IntroScene_GoldenMonarch ( 0 )
|
||
, m_CreditsScene ( 0 )
|
||
, m_ClanSelect_Asura_RollOver ( false )
|
||
, m_ClanSelect_Deva_RollOver ( false )
|
||
, m_ClanSelect_Gaia_RollOver ( false )
|
||
, m_invalidPasswordCount ( 0 )
|
||
{
|
||
// for( int n( 0 ); n < c_nMaxAvatarCount; ++n )
|
||
// m_pAvatarSelectCubes[ n ] = NULL;
|
||
|
||
m_pManCube = NULL;
|
||
m_pWomanCube = NULL;
|
||
|
||
m_nNextGameType = GAME_TYPE_WORLD;
|
||
m_nAuthType = ACCOUNT_AUTH_NORMAL;
|
||
|
||
SetCurState( GAMELOGIN_UNINITIALIZED ); // 현재 상태
|
||
m_bUseCharacterSelect = false;
|
||
|
||
XAddr addr;
|
||
addr = XAddr( ENV().GetString( "auth_ip", "" ).c_str(), ENV().GetInt( "auth_port", 4500 ) );
|
||
|
||
//std::string notiveurl = GetLocaleOption().GetValueString("NOTICE_URL","http://launcher.rappelz.com/client_notice?ip=" );
|
||
std::string notiveurl = GetLocaleOption().GetValueString("NOTICE_URL","http://127.0.0.1/launcher/client_notice?ip=" ); // Fraun 7/12/2025 nullifying gala spyware
|
||
XStringUtil::Replace( notiveurl, "#@auth_ip@#", addr.GetAddr() );
|
||
|
||
m_pNoticeReceiver = new CLobbyNoticeReceiver( notiveurl.c_str(), c_dwNoticeMaxSize );
|
||
|
||
|
||
|
||
m_pMainLight = NULL; //기본 라이트
|
||
|
||
m_pAuthConn = new XSyncStreamConnection( true, true );
|
||
m_pRecvQueue = IQueue::MakeQueue( 1*1024 );
|
||
|
||
m_bIsCan_ReqServerList = true;
|
||
|
||
m_dwServerWaitTime = 0;
|
||
m_dwServerWaitStartTime = 0;
|
||
m_one_time_key = 0;
|
||
m_dwMsgSendTime = 0;
|
||
|
||
m_SelectServer_IP = "NotSelect";
|
||
m_SelectServer_PORT = -1;
|
||
|
||
m_bIsAgree = false;
|
||
|
||
m_strNewCharName = "";
|
||
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMOUT;
|
||
|
||
m_bRatateL = false;
|
||
m_bRatateR = false;
|
||
|
||
m_pBlackPanel = NULL;
|
||
|
||
//Sky Color
|
||
m_Sky_Color_Start = K3DColor( .3f, .5f, 1.0f, 1.0f );
|
||
m_Sky_Color_Mid = K3DColor( .4f, .6f, .8f, 1.0f );
|
||
m_Sky_Color_End = K3DColor( .7f, .7f, .7f, 1.0f );
|
||
|
||
m_fSkyColorMinHeight = 300;
|
||
m_fSkyColorMaxHeight = 2000;
|
||
|
||
m_fSkyMidHeightPercent = 0.5f;
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
m_ptOldPoint.x = -1;
|
||
m_ptOldPoint.y = -1;
|
||
|
||
m_fDeltaX = 1.f;
|
||
m_fDeltaY = 1.f;
|
||
|
||
m_nDeltaX = 512;
|
||
m_nDeltaY = 512;
|
||
|
||
m_pChildViewPort[0] = NULL;
|
||
|
||
|
||
for( int i(0); i<c_nAsuraNX3EffectMaxPos; ++ i )
|
||
{
|
||
m_pAsuraNX3DffectProp[i] = NULL;
|
||
}
|
||
|
||
|
||
|
||
#endif// _TERRAIN_ENABLE_
|
||
|
||
m_spBlendSource = NULL;
|
||
m_dwBlendStartTime = 0;
|
||
|
||
InitCamera();
|
||
_LoadLobbyNX3Prop();
|
||
InitCreateSeenAvatar();
|
||
LoadModelFiles();
|
||
|
||
m_strCrrBGM="";
|
||
|
||
m_TryConnectAuthServer = false;
|
||
m_DisconnectAuthServer = false;
|
||
|
||
/// 2012.04.04 생성자에 추가 함으로써 로그인 화면과 캐릭터 선택 화면을 왔다갔다 하는 꼼수를 방지함 - prodongi
|
||
m_passwordCount.clear();
|
||
}
|
||
|
||
SGameRenewalLobby::~SGameRenewalLobby()
|
||
{
|
||
// SAvatarSelector::EndAvatarLoadingThread();
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::~SGameRenewalLobby - begin");
|
||
|
||
RemoveModelFiles();
|
||
|
||
// for( int n( 0 ); n < c_nMaxAvatarCount; ++n )
|
||
// SAFE_DELETE( m_pAvatarSelectCubes[ n ] );
|
||
|
||
SAFE_DELETE( m_pManCube );
|
||
SAFE_DELETE( m_pWomanCube );
|
||
|
||
m_ThreadManager.EndThread();
|
||
|
||
SAFE_DELETE( m_pNoticeReceiver );
|
||
|
||
SAFE_DELETE( m_pAuthConn );
|
||
SAFE_DELETE( m_pRecvQueue );
|
||
|
||
//SAFE_DELETE( m_pDevaBG_QJTV );
|
||
//SAFE_DELETE( m_pAsuraBG_QJTV );
|
||
//SAFE_DELETE( m_pGaiaBG_QJTV );
|
||
|
||
//SAFE_DELETE( m_pMuitiQJTV );
|
||
SAFE_DELETE( m_pCreateSuccessEffect );
|
||
SDEBUGLOG("SGameRenewalLobby::~SGameRenewalLobby - end");
|
||
}
|
||
|
||
// _LOBBY 임시...
|
||
int GetTerrainArrayCount( int nIndex )
|
||
{
|
||
int nArrayCount = 2352;
|
||
switch( nIndex )
|
||
{
|
||
case 0 : nArrayCount = 700; break;
|
||
case 1 : nArrayCount = 700; break;
|
||
case 2 : nArrayCount = 1000; break;
|
||
case 3 : nArrayCount = 1800; break;
|
||
case 4 : nArrayCount = 2352+1176; break;
|
||
}
|
||
|
||
return nArrayCount;
|
||
};
|
||
|
||
rp::SGameScene *SGameRenewalLobby::LoadMovie(rp::SGameSceneSeqPlayer* pScenePlayer, const char *scenename,
|
||
const char *filename, const char *bgmname, const char *drawmode)
|
||
{
|
||
//언젠간 SGameLoad의 LoadMovie 함수랑 통합하자.. 일단은 나중에. sfreer 2009.07.09
|
||
|
||
int ScreenWidth = KUIWndManager::GetResolution().cx;
|
||
int ScreenHeight = KUIWndManager::GetResolution().cy;
|
||
int adjustedWidth = ScreenHeight * 4 / 3;
|
||
/// 2010.12.28 - prodongi
|
||
if (adjustedWidth > ScreenWidth) adjustedWidth = ScreenWidth;
|
||
|
||
bool bfullscreenmode = false;
|
||
|
||
if( ::_stricmp(drawmode,"fullscreen") == 0)
|
||
bfullscreenmode = true;
|
||
|
||
|
||
if( strstr( filename, ".jtv" ) != NULL )
|
||
{
|
||
rp::SGameQjtvScene* pQjtvScene = new rp::SGameQjtvScene(
|
||
*m_pSceneMgr
|
||
, pScenePlayer
|
||
, scenename
|
||
, filename
|
||
, bgmname
|
||
, bfullscreenmode ? K3DVector( ScreenWidth/2 - 1024/2, ScreenHeight/2 - 768/2, 1.0f ) : K3DVector( ScreenWidth/2 - adjustedWidth/2, 0.f, 1.0f )
|
||
, KColor( 0xff000000 )
|
||
, bfullscreenmode ? rp::SGameQjtvScene::FULL | rp::SGameQjtvScene::CENTER : 0
|
||
, 25
|
||
, true
|
||
, 0
|
||
, bfullscreenmode ? K3DVector2(-1.f, -1.f) : K3DVector2(adjustedWidth, ScreenHeight)
|
||
);
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadMovie JTV - %s, %s, %s", scenename,filename,drawmode);
|
||
return pQjtvScene;
|
||
}
|
||
else if( strstr( filename, ".xml" ) != NULL )
|
||
{
|
||
rp::SGameCutScene* pCutScene = new rp::SGameCutScene(
|
||
*m_pSceneMgr
|
||
, pScenePlayer
|
||
, scenename
|
||
, filename
|
||
, bfullscreenmode ? K3DVector( 0.f, 0.f, 1.0f ) : K3DVector( ScreenWidth/2 - adjustedWidth/2, 0.f, 1.0f )
|
||
, bfullscreenmode ? K3DVector2(ScreenWidth, ScreenHeight) : K3DVector2(adjustedWidth, ScreenHeight)
|
||
);
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadMovie XML - %s, %s, %s", scenename,filename,drawmode);
|
||
return pCutScene;
|
||
}
|
||
// SGameLoad에서만 일단 기존 호환성 냅두지만, 차후 없애야 한다. xml로 대체 할수 있음.
|
||
/*
|
||
else if( strstr( filename, ".png" ) != NULL || strstr( filename, ".jpg" ) != NULL || strstr( filename, ".dds" ) != NULL)
|
||
{
|
||
rp::SGameImageScene* pImageScene = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, pScenePlayer
|
||
, scenename
|
||
, filename
|
||
, bfullscreenmode ? K3DVector( 0.f, 0.f, 1.0f ) : K3DVector( ScreenWidth/2 - adjustedWidth/2, 0.f, 1.0f )
|
||
, true
|
||
, 0
|
||
, bfullscreenmode ? K3DVector2(ScreenWidth, ScreenHeight) : K3DVector2(adjustedWidth, ScreenHeight)
|
||
);
|
||
|
||
pImageScene->registerActor( *( new rp::SGameSceneLifeActor( 4000, 1500, 1500 ) ) );
|
||
|
||
SDEBUGLOG("SGameLoad::LoadMovie IMAGE - %s, %s, %s", scenename,filename,drawmode);
|
||
return pImageScene;
|
||
}*/
|
||
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadMovie FAILED - %s, %s, %s", scenename,filename,drawmode);
|
||
|
||
return NULL;
|
||
}
|
||
|
||
|
||
void SGameRenewalLobby::LoadModelFiles()
|
||
{
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - begin");
|
||
assert( _CrtCheckMemory( ) );
|
||
|
||
|
||
|
||
// gpminsuk, 2009-01-22, 화면 Width와 Height변수 생성
|
||
int ScreenWidth = KUIWndManager::GetResolution().cx;
|
||
int ScreenHeight = KUIWndManager::GetResolution().cy;
|
||
K3DColor diff = K3DColor(145/255.f,145/255.f,145/255.f);
|
||
K3DColor spec = K3DColor(110/255.f,110/255.f,110/255.f);
|
||
K3DColor ambient = K3DColor(125/255.f,125/255.f,125/255.f);
|
||
m_pMainLight = new K3DLight( diff, spec, ambient, K3DVector(3.f,-3.f,3.f) );
|
||
|
||
m_old_pos = K3DVector( 8.f, -100.f, 10.f );
|
||
m_new_pos = m_old_pos ;
|
||
|
||
m_pMainLight->position.x = 8.f;
|
||
m_pMainLight->position.y = -100.f;
|
||
m_pMainLight->position.z = 10.f;
|
||
m_pMainLight->direction = -m_pMainLight->position;
|
||
Normalize(m_pMainLight->direction);
|
||
m_pMainLight->attenuation1 = 0;
|
||
m_pMainLight->range = 999999;
|
||
|
||
float fog1 = 100000.0f;
|
||
float fog2 = 1000000.0f;
|
||
float fog3 = 100000.0f;
|
||
float fog4 = 1000000.0f;
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
m_dwFogMode = K3DRenderDevice::FOGM_LINEAR;
|
||
#else
|
||
m_dwFogMode = K3DRenderDevice::FOGM_NONE;
|
||
#endif
|
||
|
||
m_colorLobbyFog = KColor( 0xFFFFFFFF );
|
||
//Height Fog
|
||
m_fHeightFog_Start = 0;
|
||
m_fHeightFog_End = 1000;
|
||
m_fLinearFog_Start = 0;
|
||
m_fLinearFog_End = 1000;
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 1");
|
||
|
||
NX3LoadPack loadpack;
|
||
loadpack.Init();
|
||
|
||
|
||
#ifndef _TERRAIN_ENABLE_
|
||
m_pEffectModel = new KSeqModel;
|
||
m_pEffectModel->AddAnimation( "default", "rc_lobby_birds.nx3", KNX3Manager::SEQTYPE_ALL, &loadpack );
|
||
m_nEffectIndex = 0;
|
||
#endif
|
||
|
||
m_dwBlackPanelTime = 0;
|
||
m_pBlackPanel = new KSeqModel;
|
||
for( int i(0); 3>i; i++ )
|
||
{
|
||
m_pBlackPanel->AddAnimation( pMainAniKey[i+3], c_szPanel[i], KNX3Manager::SEQTYPE_ALL, &loadpack );
|
||
}
|
||
|
||
// 아바타 생성
|
||
for( int n( 0 ); n < GameRule::nMaxCharactersPerAccount; ++n )
|
||
{
|
||
m_Avatars[ n ].pAvatar = new SAvatarSelector();
|
||
m_Avatars[ n ].pAvatar->SetSelectAvatar();
|
||
}
|
||
|
||
m_pNewAvatar = new SAvatarSelector();
|
||
|
||
m_pManCube = new K3DBoundRotCube( -2, 2, -2, 2, 0, 18 );
|
||
m_pWomanCube = new K3DBoundRotCube( -2, 2, -2, 2, 0, 18 );
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
KViewportStruct vp;
|
||
KSize sizResolution;
|
||
|
||
m_pBGLight = new K3DLight( K3DColor(0.8f,0.8f,0.8f), K3DColor(1.f,1.f,1.f), K3DColor(0.4f,0.4f,0.4f), K3DVector(-0.33f,-0.66f,-0.66f) );
|
||
m_pBGLight->position.x = 500000000*0.33f;
|
||
m_pBGLight->position.y = 500000000*0.66f;
|
||
m_pBGLight->position.z = 500000000*0.66f;
|
||
m_pBGLight->attenuation1 = 0;
|
||
m_pBGLight->range = 500000001.F;
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 2");
|
||
|
||
K3DRenderDeviceDX* pGraphics = (K3DRenderDeviceDX*)KDeviceManagerDX::GetDeviceManager()->GetRenderDevice();
|
||
|
||
int nWidth = GetGameOption().GetResolution_Width();
|
||
int nHeight = GetGameOption().GetResolution_Height();
|
||
sizResolution = KSize(nWidth, nHeight);
|
||
vp.Width = sizResolution.cx;
|
||
vp.Height = sizResolution.cy;
|
||
vp.X = vp.Y = 0;
|
||
vp.MinZ = 0;
|
||
vp.MaxZ = 1.0f;
|
||
SGameViewPort* pChildViewPort = new SGameViewPort();
|
||
pChildViewPort->Initilaize( pGraphics, vp, 5.f, 60000.f );
|
||
pChildViewPort->SetFillColor( KColor( 0, 0, 0, 255 ) );
|
||
pChildViewPort->SetSceneAmbient( KColor(0,0,0,255) );
|
||
|
||
m_pChildViewPort[0] = pChildViewPort;
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 3");
|
||
|
||
m_pBGCamera = new K3DCamera;
|
||
m_pBGCamera->Reset();
|
||
|
||
m_pBGCamera->SetMinDistance( 5.f );
|
||
|
||
m_pSky = new SGameSky;
|
||
m_pSky->Init( m_pRenderDevice );
|
||
m_pSky->SetCamera( m_pBGCamera );
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 4");
|
||
|
||
m_pSceneMgr = new rp::SGameSceneManager(
|
||
*m_pGameMng
|
||
, *KDeviceManager::GetDeviceManager()
|
||
, *m_pTextureMng
|
||
, *m_pSoundMng
|
||
, *m_pMSoundMgr
|
||
, *m_pNX3Mng
|
||
, KFileManager::Instance() );
|
||
|
||
|
||
// prepare background movie scene
|
||
|
||
std::string bgImageFile;
|
||
|
||
// sonador #2.1.19.1
|
||
int adjustedWidth = ScreenHeight * 4 / 3;
|
||
/// 2010.12.28 - prodongi
|
||
if (adjustedWidth > ScreenWidth) adjustedWidth = ScreenWidth;
|
||
int screenPosX = ScreenWidth/2 - adjustedWidth/2;
|
||
|
||
|
||
// 로비 기본 배경
|
||
|
||
m_BgScene = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "lobby_bg_scene"
|
||
, "lobby_login_image.jpg"
|
||
, K3DVector( screenPosX, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
/*
|
||
m_BgScene = LoadMovie(0,
|
||
"intro_scene",
|
||
"intro_video.xml",
|
||
"",
|
||
""
|
||
);
|
||
*/
|
||
m_pSceneMgr->addScene( *m_BgScene );
|
||
|
||
//캐릭터 선택시 배경.
|
||
|
||
m_pCharaterBgSceneMgr = new rp::SGameSceneManager(
|
||
*m_pGameMng
|
||
, *KDeviceManager::GetDeviceManager()
|
||
, *m_pTextureMng
|
||
, *m_pSoundMng
|
||
, *m_pMSoundMgr
|
||
, *m_pNX3Mng
|
||
, KFileManager::Instance() );
|
||
|
||
{
|
||
m_Bg_Deva = new rp::SGameImageScene(
|
||
*m_pCharaterBgSceneMgr
|
||
, 0
|
||
, "bg_deva"
|
||
, "Deva_001_wide.png"
|
||
, K3DVector( 0, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ] );
|
||
|
||
m_pCharaterBgSceneMgr->addScene( *m_Bg_Deva );
|
||
}
|
||
|
||
{
|
||
m_Bg_Asura = new rp::SGameImageScene(
|
||
*m_pCharaterBgSceneMgr
|
||
, 0
|
||
, "bg_asura"
|
||
, "asura_001_wide.png"
|
||
, K3DVector( 0, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ] );
|
||
|
||
m_pCharaterBgSceneMgr->addScene( *m_Bg_Asura );
|
||
}
|
||
|
||
|
||
{
|
||
m_Bg_Gaia = new rp::SGameImageScene(
|
||
*m_pCharaterBgSceneMgr
|
||
, 0
|
||
, "bg_gaia"
|
||
, "gaia_001_wide.png"
|
||
, K3DVector( 0, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ] );
|
||
|
||
m_pCharaterBgSceneMgr->addScene( *m_Bg_Gaia );
|
||
|
||
}
|
||
|
||
{
|
||
m_BgScene_ClanSelect = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_main"
|
||
, "clan_choice_main_image.jpg"
|
||
, K3DVector( screenPosX, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanSelect );
|
||
|
||
/// 2012.08.08 정수로 계산 할 때, 오차가 발생되어서 실수로 수정함
|
||
/// 다른 곳이 보이지만, 일이 커질것 같아, 우선 문제 되는 곳만 수정함 - prodongi
|
||
float adjustedWidthRatio = (float)adjustedWidth/1024.0f;
|
||
|
||
m_BgScene_ClanSelect_Asura = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_main_image_over_asura"
|
||
, "clan_choice_main_image_over_asura.jpg"
|
||
, K3DVector( (float)screenPosX + 0.0f*adjustedWidthRatio , 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(400.0f*adjustedWidthRatio, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanSelect_Asura );
|
||
|
||
|
||
m_BgScene_ClanSelect_Gaia = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_main_image_over_gaia"
|
||
, "clan_choice_main_image_over_gaia.png"
|
||
, K3DVector( (float)screenPosX + 294.0f*adjustedWidthRatio , 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(435.0f*adjustedWidthRatio, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanSelect_Gaia );
|
||
|
||
|
||
m_BgScene_ClanSelect_Deva = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_main_image_over_deva"
|
||
, "clan_choice_main_image_over_deva.jpg"
|
||
, K3DVector( (float)screenPosX + 600.0f*adjustedWidthRatio , 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(424.0f*adjustedWidthRatio, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanSelect_Deva );
|
||
}
|
||
|
||
{
|
||
|
||
m_BgScene_ClanDesc_Asura = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_image_asura"
|
||
, "clan_choice_image_asura.jpg"
|
||
, K3DVector( screenPosX, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanDesc_Asura );
|
||
|
||
|
||
m_BgScene_ClanDesc_Deva = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_image_deva"
|
||
, "clan_choice_image_deva.jpg"
|
||
, K3DVector( screenPosX, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanDesc_Deva );
|
||
|
||
|
||
m_BgScene_ClanDesc_Gaia = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "clan_choice_image_gaia"
|
||
, "clan_choice_image_gaia.jpg"
|
||
, K3DVector( screenPosX, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_ClanDesc_Gaia );
|
||
|
||
}
|
||
|
||
//_ASSERTE( _CrtCheckMemory( ) );
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 5");
|
||
|
||
m_IntroScene = LoadMovie( 0,
|
||
"intro_scene",
|
||
GetLocaleOption().GetValueString("GAME_INTRO","intro.xml"),
|
||
GetLocaleOption().GetValueString("GAME_INTRO_BGM",""),
|
||
GetLocaleOption().GetValueString("GAME_INTRO_DRAWMODE","") );
|
||
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 5.1");
|
||
|
||
/*
|
||
if(m_IntroScene)
|
||
m_pSceneMgr->addScene( *m_IntroScene );*/
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 5.2");
|
||
|
||
|
||
m_IntroScene_Navislamia = LoadMovie( 0,
|
||
"intro_navislamia_scene",
|
||
"epic6_navislamia_intro.xml",
|
||
"",
|
||
"" );
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 5.3");
|
||
|
||
/*if(m_IntroScene_Navislamia)
|
||
m_pSceneMgr->addScene( *m_IntroScene_Navislamia );*/
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 5.4");
|
||
|
||
|
||
m_IntroScene_GoldenMonarch = LoadMovie( 0,
|
||
"intro_golden_monarch_scene",
|
||
"epic6_golden_monarch_intro.xml",
|
||
"",
|
||
"" );
|
||
|
||
/*if(m_IntroScene_GoldenMonarch)
|
||
m_pSceneMgr->addScene( *m_IntroScene_GoldenMonarch );*/
|
||
|
||
|
||
// prepare credit scene
|
||
m_CreditsScene = new rp::SGameCreditsScene( *m_pSceneMgr, 0, "LobbyCreditsScene", 124000, 2000, 500, 4000, 112000,screenPosX,adjustedWidth, ScreenHeight, m_pChildViewPort[ 0 ] );
|
||
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 5.5");
|
||
|
||
// prepare credit2 scene
|
||
m_CreditsScene2 = new rp::SGameCreditsScene( *m_pSceneMgr, 0, "LobbyCreditsScene2", 124000, 2000, 500, 4000, 112000,screenPosX,adjustedWidth, ScreenHeight, m_pChildViewPort[ 0 ] );
|
||
m_CreditsScene3 = new rp::SGameCreditsScene( *m_pSceneMgr, 0, "LobbyCreditsScene3", 124000, 2000, 500, 4000, 112000,screenPosX,adjustedWidth, ScreenHeight, m_pChildViewPort[ 0 ] );
|
||
m_CreditsScene4 = new rp::SGameCreditsScene( *m_pSceneMgr, 0, "LobbyCreditsScene4", 124000, 2000, 500, 4000, 112000,screenPosX,adjustedWidth, ScreenHeight, m_pChildViewPort[ 0 ] );
|
||
|
||
assert( _CrtCheckMemory( ) );
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 6");
|
||
//
|
||
m_BgScene_Pane_Type02 = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "pane_Type02"
|
||
, "login_type02_pane.png"
|
||
, K3DVector( screenPosX, 0.f, 1.0f )
|
||
, true
|
||
, m_pChildViewPort[ 0 ]
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_Pane_Type02 );
|
||
|
||
|
||
//Pane03 은 캐릭터 위에 떠야 함으로 Viewport 를 NULL로 일단 설정한다. sfreer 2009. 06.29
|
||
m_BgScene_Pane_Type03 = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "pane_Type03"
|
||
, "login_type03_pane.png"
|
||
, K3DVector( 0.f, 0.f, 1.0f )
|
||
, true
|
||
, NULL
|
||
, K3DVector2(adjustedWidth, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_Pane_Type03 );
|
||
|
||
m_BgScene_Pane_Type03_right = new rp::SGameImageScene(
|
||
*m_pSceneMgr
|
||
, 0
|
||
, "pane_Type03add"
|
||
, "login_type03_pane_right_add.png"
|
||
, K3DVector( adjustedWidth, 0.f, 1.0f )
|
||
, true
|
||
, NULL
|
||
, K3DVector2(341*ScreenHeight/768, ScreenHeight) );
|
||
|
||
m_pSceneMgr->addScene( *m_BgScene_Pane_Type03_right );
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 7");
|
||
|
||
m_bTerrainFogEnable = false;
|
||
m_colorTerrainFog = KColor( 0xFFFFFFFF );
|
||
|
||
m_dwTerrainFogMode = K3DRenderDevice::FOGM_NONE;
|
||
|
||
//Height Fog
|
||
m_fTerrainHeightFog_Start = 0;
|
||
m_fTerrainHeightFog_End = 1000;
|
||
m_fTerrainLinearFog_Start = 0;
|
||
m_fTerrainLinearFog_End = 1000;
|
||
|
||
//최초만 랜덤, 그 후는 순차
|
||
int nOldTheme = GetGameOption().GetLobbyTheme();
|
||
int nRand = 0;
|
||
if( nOldTheme < 0 )
|
||
{
|
||
nRand = rand()%3;
|
||
}
|
||
else
|
||
{
|
||
nRand = nOldTheme + 1;
|
||
|
||
if( nRand > 2 )
|
||
nRand = 0;
|
||
}
|
||
|
||
if( ENV().IsExist( "lobby_num" ) )
|
||
{
|
||
nRand = ENV().GetInt( "lobby_num", 0 );
|
||
}
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - 8");
|
||
|
||
_oprint( "LobbySetforGameRes : %d - %s\n", nRand, c_szLOBBY_SET[nRand] );
|
||
|
||
GetGameOption().SetLobbyTheme( nRand );
|
||
GetGameOption().SetOptionData( SGAME_OPT_DATA::MODE_ENVIRONMENT );
|
||
|
||
//KTextureManager::GetManager()->SetMipMapBiasLevel( 0 ); //로비에서는 택스처를 무조건 최고사양으로 생성하게 한다.
|
||
//NX3LoadPack::SetTextureLevel( 0 );
|
||
|
||
m_nOldResourceQual = NX3LoadPack::GetTextureLevel();//GetGameOption().GetResourceQuality();
|
||
m_nOldMipBias = KTextureManager::GetManager()->GetMipMapBiasLevel(); //GetGameOption().GetTextureMipBias();
|
||
|
||
|
||
KTextureManager::GetManager()->SetMipMapBiasLevel( 0 ); //로비에서는 택스처를 무조건 최고사양으로 생성하게 한다.
|
||
NX3LoadPack::SetTextureLevel( 0 );
|
||
|
||
m_pBGCamera->SetTargetPos( 0.000000, 0.000000, 0.000000 );
|
||
m_pBGCamera->SetCamPos( 177.693420f, 16.249392f, 23.705996f );
|
||
|
||
//m_pSky->SetPosition( 6700, 6700, fHeight );
|
||
|
||
#endif //_TERRAIN_ENABLE_
|
||
|
||
assert( _CrtCheckMemory( ) );
|
||
SDEBUGLOG("SGameRenewalLobby::LoadModelFiles() - end");
|
||
}
|
||
|
||
void SGameRenewalLobby::RemoveModelFiles()
|
||
{
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::RemoveModelFiles() - fucntion begin");
|
||
|
||
SAFE_DELETE( m_pSceneMgr );
|
||
SDEBUGLOG("\tSAFE_DELETE( m_pSceneMgr )");
|
||
|
||
SAFE_DELETE( m_pCharaterBgSceneMgr );
|
||
SDEBUGLOG("\tSAFE_DELETE( m_pCharaterBgSceneMgr )");
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
//SAFE_DELETE( m_pBG_QJTVObj );
|
||
//SAFE_DELETE( m_pQJTVObj );
|
||
|
||
SAFE_DELETE( m_pAsuraCamera );
|
||
SAFE_DELETE( m_pGaiaCamera );
|
||
SAFE_DELETE( m_pDevaCamera );
|
||
|
||
|
||
//SAFE_DELETE( m_pMainLogo );
|
||
|
||
SAFE_DELETE( m_pBGLight );
|
||
SAFE_DELETE( m_pBGCamera );
|
||
SDEBUGLOG("\tSAFE_DELETE( Camera,Light )");
|
||
|
||
SAFE_DELETE( m_pSky );
|
||
SDEBUGLOG("\tSAFE_DELETE( Sky )");
|
||
|
||
if( m_pViewPort )
|
||
{
|
||
m_pViewPort->SetChildViewportObj( NULL );
|
||
}
|
||
SAFE_DELETE( m_pChildViewPort[0] );
|
||
SDEBUGLOG("\tSAFE_DELETE( Viewport )");
|
||
|
||
#endif
|
||
|
||
SAFE_DELETE( m_pDevaManAvatar );
|
||
SAFE_DELETE( m_pDevaWomanAvatar );
|
||
|
||
SAFE_DELETE( m_pGaiaManAvatar );
|
||
SAFE_DELETE( m_pGaiaWomanAvatar );
|
||
|
||
SAFE_DELETE( m_pAsuraManAvatar );
|
||
SAFE_DELETE( m_pAsuraWomanAvatar );
|
||
|
||
SAFE_DELETE( m_pNewAvatar );
|
||
SDEBUGLOG("\tSAFE_DELETE( Avatar )");
|
||
|
||
|
||
SAFE_DELETE( m_pBlackPanel );
|
||
SAFE_DELETE( m_pMainLight );
|
||
SDEBUGLOG("\tSAFE_DELETE( m_pBlackPanel,m_pMainLight )");
|
||
|
||
|
||
SAFE_DELETE(m_pGaiaNX3Prop);
|
||
SAFE_DELETE(m_pDevaNX3Prop);
|
||
SAFE_DELETE(m_pAsuraNX3Prop);
|
||
|
||
for( int i(0); i<c_nAsuraNX3EffectMaxPos; ++ i )
|
||
{
|
||
SAFE_DELETE(m_pAsuraNX3DffectProp[i]);
|
||
}
|
||
SDEBUGLOG("\tSAFE_DELETE( Prop )");
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::RemoveModelFiles() - end");
|
||
|
||
}
|
||
|
||
void SGameRenewalLobby::ProcConsole( SGameMessage* pGameMsg )
|
||
{
|
||
if( pGameMsg->nType != MSG_CONSOLE_BUILDER ) return;
|
||
|
||
SGame::ProcConsole( pGameMsg );
|
||
|
||
SMSG_CONSOLE_BUILDER* pMsg = static_cast<SMSG_CONSOLE_BUILDER*>(pGameMsg);
|
||
|
||
if( !::_stricmp( pMsg->m_strKey.c_str(), "effect_open") )
|
||
m_pGameMng->SetShowEffectFocusWnd( true );
|
||
|
||
if( !::_stricmp( pMsg->m_strKey.c_str(), "effect_close") )
|
||
m_pGameMng->SetShowEffectFocusWnd( false );
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "bg_render_on") )
|
||
{
|
||
m_bShowBG = true;
|
||
return;
|
||
}
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "bg_render_off") )
|
||
{
|
||
m_bShowBG = false;
|
||
return;
|
||
}
|
||
|
||
if( pMsg->m_nValueCount < 1 ) return;
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
|
||
if( !::_stricmp( pMsg->m_strKey.c_str(), "game_sky_mid") )
|
||
{
|
||
float fValue = atof( pMsg->m_vecValueList[0].c_str() );
|
||
if( fValue > 1.f ) fValue = 1.f;
|
||
else if( fValue < 0.f ) fValue = 0.01f;
|
||
Game_Sky_Color_MidHeightPercent( fValue );
|
||
return;
|
||
}
|
||
|
||
//좌표|X|Y|라이트|화일|카메라|화일|
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_set_in") )
|
||
{
|
||
LobbySet( pMsg->m_vecValueList[0].c_str() );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_camera_out") )
|
||
{
|
||
FILE* pF = fopen( pMsg->m_vecValueList[0].c_str(), "wt" );
|
||
if( pF )
|
||
{
|
||
m_pBGCamera->FileTextOut(pF);
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_camera_in") )
|
||
{
|
||
_TerrainCameraIn( pMsg->m_vecValueList[0].c_str() );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_light_out") )
|
||
{
|
||
FILE* pF = fopen( pMsg->m_vecValueList[0].c_str(), "wt" );
|
||
if( pF )
|
||
{
|
||
fprintf( pF, "TYPE|%d|", m_pBGLight->type );
|
||
fprintf( pF, "DIFFUSE|%f|%f|%f|%f|" , m_pBGLight->diffuse.r , m_pBGLight->diffuse.g , m_pBGLight->diffuse.b , m_pBGLight->diffuse.a );
|
||
fprintf( pF, "SPECULAR|%f|%f|%f|%f|", m_pBGLight->specular.r, m_pBGLight->specular.g, m_pBGLight->specular.b, m_pBGLight->specular.a );
|
||
fprintf( pF, "AMBIENT|%f|%f|%f|%f|" , m_pBGLight->ambient.r , m_pBGLight->ambient.g , m_pBGLight->ambient.b , m_pBGLight->ambient.a );
|
||
fprintf( pF, "POSITION|%f|%f|%f|" , m_pBGLight->position.x, m_pBGLight->position.y, m_pBGLight->position.z );
|
||
fprintf( pF, "DIRECTION|%f|%f|%f|", m_pBGLight->direction.x, m_pBGLight->direction.y, m_pBGLight->direction.z );
|
||
fprintf( pF, "RANGE|%f|" , m_pBGLight->range );
|
||
fprintf( pF, "ATTENUATION0|%f|", m_pBGLight->attenuation0 );
|
||
fprintf( pF, "ATTENUATION1|%f|", m_pBGLight->attenuation1 );
|
||
fprintf( pF, "ATTENUATION2|%f|", m_pBGLight->attenuation2 );
|
||
fprintf( pF, "FALLOFF|%f|" , m_pBGLight->falloff );
|
||
fprintf( pF, "THETA|%f|" , m_pBGLight->theta );
|
||
fprintf( pF, "PHI|%f|" ,m_pBGLight-> phi );
|
||
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_light_in") )
|
||
{
|
||
_LightIn( pMsg->m_vecValueList[0].c_str(), m_pBGLight );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_sky_out") )
|
||
{
|
||
FILE* pF = fopen( pMsg->m_vecValueList[0].c_str(), "wt" );
|
||
if( pF )
|
||
{
|
||
fprintf( pF, "SKY_COLOR_START|%f|%f|%f|", m_Sky_Color_Start.r, m_Sky_Color_Start.g, m_Sky_Color_Start.b );
|
||
fprintf( pF, "SKY_COLOR_MID|%f|%f|%f|", m_Sky_Color_Mid.r, m_Sky_Color_Mid.g, m_Sky_Color_Mid.b );
|
||
fprintf( pF, "SKY_COLOR_END|%f|%f|%f|", m_Sky_Color_End.r, m_Sky_Color_End.g, m_Sky_Color_End.b );
|
||
|
||
fprintf( pF, "SKYMIDHEIGHTPERCENT|%f|", m_fSkyMidHeightPercent );
|
||
|
||
KColor cloud = m_pSky->GetCloudColor();
|
||
fprintf( pF, "CLOUD_COLOR|%d|%d|%d|%d|", cloud.r, cloud.g, cloud.b, cloud.a );
|
||
|
||
//Fog
|
||
fprintf( pF, "FOGENABLE|%d|", (m_bTerrainFogEnable == true) ? 1 : 0 );
|
||
fprintf( pF, "COLORFOG|%d|%d|%d|%d|", m_colorTerrainFog.r, m_colorTerrainFog.g, m_colorTerrainFog.b, m_colorTerrainFog.a );
|
||
fprintf( pF, "FOGMODE|%d|", m_dwTerrainFogMode );
|
||
fprintf( pF, "HEIGHTFOG_START|%f|", m_fTerrainHeightFog_Start );
|
||
fprintf( pF, "HEIGHTFOG_END|%f|" , m_fTerrainHeightFog_End );
|
||
fprintf( pF, "LINEARFOG_START|%f|", m_fTerrainLinearFog_Start );
|
||
fprintf( pF, "LINEARFOG_END|%f|" , m_fTerrainLinearFog_End );
|
||
|
||
fclose(pF);
|
||
}
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_sky_in") )
|
||
{
|
||
_TerrainSkyIn( pMsg->m_vecValueList[0].c_str() );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_light_out") )
|
||
{
|
||
FILE* pF = fopen( pMsg->m_vecValueList[0].c_str(), "wt" );
|
||
if( pF )
|
||
{
|
||
fprintf( pF, "TYPE|%d|", m_pMainLight->type );
|
||
fprintf( pF, "DIFFUSE|%f|%f|%f|%f|" , m_pMainLight->diffuse.r , m_pMainLight->diffuse.g , m_pMainLight->diffuse.b , m_pMainLight->diffuse.a );
|
||
fprintf( pF, "SPECULAR|%f|%f|%f|%f|", m_pMainLight->specular.r, m_pMainLight->specular.g, m_pMainLight->specular.b, m_pMainLight->specular.a );
|
||
fprintf( pF, "AMBIENT|%f|%f|%f|%f|" , m_pMainLight->ambient.r , m_pMainLight->ambient.g , m_pMainLight->ambient.b , m_pMainLight->ambient.a );
|
||
fprintf( pF, "POSITION|%f|%f|%f|" , m_pMainLight->position.x, m_pMainLight->position.y, m_pMainLight->position.z );
|
||
fprintf( pF, "DIRECTION|%f|%f|%f|", m_pMainLight->direction.x, m_pMainLight->direction.y, m_pMainLight->direction.z );
|
||
fprintf( pF, "RANGE|%f|" , m_pMainLight->range );
|
||
fprintf( pF, "ATTENUATION0|%f|", m_pMainLight->attenuation0 );
|
||
fprintf( pF, "ATTENUATION1|%f|", m_pMainLight->attenuation1 );
|
||
fprintf( pF, "ATTENUATION2|%f|", m_pMainLight->attenuation2 );
|
||
fprintf( pF, "FALLOFF|%f|" , m_pMainLight->falloff );
|
||
fprintf( pF, "THETA|%f|" , m_pMainLight->theta );
|
||
fprintf( pF, "PHI|%f|" ,m_pMainLight-> phi );
|
||
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_light_in") )
|
||
{
|
||
_LightIn( pMsg->m_vecValueList[0].c_str(), m_pMainLight );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "terrain_fog_enable") ) { Terrain_Fog_Enable( 0 != atoi( pMsg->m_vecValueList[0].c_str() ) ); }
|
||
|
||
#endif
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_fog_enable") ) { Lobby_Fog_Enable( 0 != atoi( pMsg->m_vecValueList[0].c_str() ) ); }
|
||
|
||
if( pMsg->m_nValueCount < 2 ) return;
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_fog_dist") ) { Lobby_Fog_Dist ( atof( pMsg->m_vecValueList[0].c_str() ), atof( pMsg->m_vecValueList[1].c_str() ) ); }
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_fog_height_dist") ) { Lobby_Fog_Height_Dist( atof( pMsg->m_vecValueList[0].c_str() ), atof( pMsg->m_vecValueList[1].c_str() ) ); }
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "terrain_fog_dist") ) { Terrain_Fog_Dist ( atof( pMsg->m_vecValueList[0].c_str() ), atof( pMsg->m_vecValueList[1].c_str() ) ); }
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "terrain_fog_height_dist") ) { Terrain_Fog_Height_Dist( atof( pMsg->m_vecValueList[0].c_str() ), atof( pMsg->m_vecValueList[1].c_str() ) ); }
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_warp") )
|
||
{
|
||
// _LobbyWarp( atoi(pMsg->m_vecValueList[0].c_str()), atoi(pMsg->m_vecValueList[1].c_str()), true );
|
||
}
|
||
#endif
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_sky_color_start") || !::_stricmp(pMsg->m_strKey.c_str(), "game_sky_cstart") )
|
||
{
|
||
Game_Sky_Color_Start( atoi( pMsg->m_vecValueList[0].c_str()) , atoi( pMsg->m_vecValueList[1].c_str() ), atoi( pMsg->m_vecValueList[2].c_str() ) );
|
||
return;
|
||
}
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_sky_color_mid") || !::_stricmp(pMsg->m_strKey.c_str(), "game_sky_cmid") )
|
||
{
|
||
Game_Sky_Color_Mid( atoi( pMsg->m_vecValueList[0].c_str()) , atoi( pMsg->m_vecValueList[1].c_str() ), atoi( pMsg->m_vecValueList[2].c_str() ) );
|
||
return;
|
||
}
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_sky_color_end") || !::_stricmp(pMsg->m_strKey.c_str(), "game_sky_cend") )
|
||
{
|
||
Game_Sky_Color_End( atoi( pMsg->m_vecValueList[0].c_str()) , atoi( pMsg->m_vecValueList[1].c_str() ), atoi( pMsg->m_vecValueList[2].c_str() ) );
|
||
return;
|
||
}
|
||
|
||
if( pMsg->m_nValueCount < 3 ) return;
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_light_diff" ) )
|
||
{
|
||
K3DColor diff = K3DColor( atoi( pMsg->m_vecValueList[0].c_str())/255.f , atoi( pMsg->m_vecValueList[1].c_str())/255.f, atoi( pMsg->m_vecValueList[2].c_str())/255.f );
|
||
Terrain_Light( 0, diff );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_light_spec" ) )
|
||
{
|
||
K3DColor spec = K3DColor( atoi( pMsg->m_vecValueList[0].c_str())/255.f , atoi( pMsg->m_vecValueList[1].c_str())/255.f, atoi( pMsg->m_vecValueList[2].c_str())/255.f );
|
||
Terrain_Light( 1, spec );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_light_ambient" ) )
|
||
{
|
||
K3DColor ambient = K3DColor( atoi( pMsg->m_vecValueList[0].c_str())/255.f , atoi(pMsg->m_vecValueList[1].c_str())/255.f, atoi( pMsg->m_vecValueList[2].c_str())/255.f );
|
||
Terrain_Light( 2, ambient );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_terrain_light_pos" ) )
|
||
Terrain_Light_Pos ( atoi(pMsg->m_vecValueList[0].c_str()), atoi(pMsg->m_vecValueList[1].c_str()), atoi(pMsg->m_vecValueList[2].c_str()) );
|
||
|
||
#endif
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_light_pos" ) || !::_stricmp(pMsg->m_strKey.c_str(), "game_lt_p" ) )
|
||
Game_Light_Pos ( atoi(pMsg->m_vecValueList[0].c_str()), atoi(pMsg->m_vecValueList[1].c_str()), atoi(pMsg->m_vecValueList[2].c_str()) );
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_light_diff" ) || !::_stricmp(pMsg->m_strKey.c_str(), "game_lt_d" ) )
|
||
{
|
||
K3DColor diff = K3DColor( atoi( pMsg->m_vecValueList[0].c_str())/255.f , atoi( pMsg->m_vecValueList[1].c_str())/255.f, atoi( pMsg->m_vecValueList[2].c_str())/255.f );
|
||
Game_Light( 0, diff );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_light_spec") || !::_stricmp(pMsg->m_strKey.c_str(), "game_lt_s") )
|
||
{
|
||
K3DColor spec = K3DColor( atoi( pMsg->m_vecValueList[0].c_str())/255.f , atoi( pMsg->m_vecValueList[1].c_str())/255.f, atoi( pMsg->m_vecValueList[2].c_str())/255.f );
|
||
Game_Light( 1, spec );
|
||
}
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_light_ambient" ) || !::_stricmp(pMsg->m_strKey.c_str(), "game_lt_a" ) )
|
||
{
|
||
K3DColor ambient = K3DColor( atoi( pMsg->m_vecValueList[0].c_str())/255.f , atoi(pMsg->m_vecValueList[1].c_str())/255.f, atoi( pMsg->m_vecValueList[2].c_str())/255.f );
|
||
Game_Light( 2, ambient );
|
||
}
|
||
|
||
if( pMsg->m_nValueCount < 4 ) return;
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "lobby_fog_color") ) { Lobby_Fog_Color( atoi( pMsg->m_vecValueList[0].c_str() ), atoi( pMsg->m_vecValueList[1].c_str() ), atoi( pMsg->m_vecValueList[2].c_str() ), atoi( pMsg->m_vecValueList[3].c_str() ) ); }
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "terrain_fog_color") ) { Terrain_Fog_Color( atoi( pMsg->m_vecValueList[0].c_str() ), atoi( pMsg->m_vecValueList[1].c_str() ), atoi( pMsg->m_vecValueList[2].c_str() ), atoi( pMsg->m_vecValueList[3].c_str() ) ); }
|
||
|
||
if( !::_stricmp(pMsg->m_strKey.c_str(), "game_cloud_color") )
|
||
{
|
||
KColor Color = KColor( atoi( pMsg->m_vecValueList[0].c_str()) , atoi( pMsg->m_vecValueList[1].c_str() ), atoi( pMsg->m_vecValueList[2].c_str() ), atoi( pMsg->m_vecValueList[3].c_str() ) );
|
||
if( m_pSky ) m_pSky->SetCloudColor( Color );
|
||
return;
|
||
}
|
||
#endif
|
||
|
||
}
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
|
||
void SGameRenewalLobby::_PerformMainLogo()
|
||
{
|
||
|
||
}
|
||
|
||
void SGameRenewalLobby::_LoadLobbyRaceNX3Data( KSeqForm*& pObj, KMsgREQ_EVBOX& rEventBox, const char* lpFileName, bool bOutEvent/*true*/ )
|
||
{
|
||
_CID( REQ_EVBOX );
|
||
|
||
pObj = new KSeqForm;
|
||
pObj->AddAnimation( "default", lpFileName, true );
|
||
pObj->PlayAnimation( m_dwTime, "default", SEQTYPE_LOOP );
|
||
|
||
if( bOutEvent )
|
||
{
|
||
if( pObj ) pObj->Perform( id_REQ_EVBOX, rEventBox ); //캐릭터 위치
|
||
else _oprint( "!!! Graphic Resource Effect Pos Error: %s\n", lpFileName );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::_LoadLobbyNX3Prop()
|
||
{
|
||
SAFE_DELETE(m_pGaiaNX3Prop);
|
||
SAFE_DELETE(m_pDevaNX3Prop);
|
||
SAFE_DELETE(m_pAsuraNX3Prop);
|
||
|
||
KMsgREQ_EVBOX EventBox0;
|
||
_LoadLobbyRaceNX3Data( m_pGaiaNX3Prop, EventBox0, c_szLobbyGaiaNX3PropName );
|
||
GetEventPos(EventBox0, m_GaiaEventpos);
|
||
|
||
KMsgREQ_EVBOX EventBox1;
|
||
_LoadLobbyRaceNX3Data( m_pDevaNX3Prop, EventBox1, c_szLobbyDevaNX3PropName );
|
||
GetEventPos(EventBox1, m_DevaEventpos);
|
||
|
||
KMsgREQ_EVBOX EventBox2;
|
||
_LoadLobbyRaceNX3Data( m_pAsuraNX3Prop, EventBox2, c_szLobbyAsuraNX3PropName );
|
||
GetEventPos(EventBox2, m_AsuraEventpos);
|
||
|
||
// 이펙트 관련 NX3 Loading ////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
KMsgREQ_EVBOX TempEventBox;
|
||
for( int i(0); i<c_nAsuraNX3EffectMaxPos; ++ i )
|
||
{
|
||
SAFE_DELETE(m_pAsuraNX3DffectProp[i]);
|
||
_LoadLobbyRaceNX3Data( m_pAsuraNX3DffectProp[i], TempEventBox, c_szLobbyAsuraNX3EffectPropName, false );
|
||
}
|
||
|
||
// KSeqModel* pObj = new KSeqModel;
|
||
// pObj->AddAnimation( "default", c_szLobbyAsuraNX3EffectPropName, true );
|
||
// pObj->PlayAnimation( m_dwTime, "default", SEQTYPE_LOOP );
|
||
|
||
// m_pAsuraNX3DffectProp = pObj;
|
||
}
|
||
|
||
void SGameRenewalLobby::InitCreateSeenAvatar()
|
||
{
|
||
SAFE_DELETE(m_pDevaManAvatar);
|
||
SAFE_DELETE(m_pDevaWomanAvatar);
|
||
SAFE_DELETE(m_pGaiaManAvatar);
|
||
SAFE_DELETE(m_pGaiaWomanAvatar);
|
||
SAFE_DELETE(m_pAsuraManAvatar);
|
||
SAFE_DELETE(m_pAsuraWomanAvatar);
|
||
|
||
m_pDevaManAvatar = new SAvatarSelector();
|
||
m_pDevaWomanAvatar = new SAvatarSelector();
|
||
|
||
m_pGaiaManAvatar = new SAvatarSelector();
|
||
m_pGaiaWomanAvatar = new SAvatarSelector();
|
||
|
||
m_pAsuraManAvatar = new SAvatarSelector();
|
||
m_pAsuraWomanAvatar = new SAvatarSelector();
|
||
|
||
InitAvatar( m_pGaiaManAvatar, m_GaiaEventpos );
|
||
InitAvatar( m_pGaiaWomanAvatar, m_GaiaEventpos );
|
||
|
||
InitAvatar( m_pDevaManAvatar, m_DevaEventpos );
|
||
InitAvatar( m_pDevaWomanAvatar, m_DevaEventpos );
|
||
|
||
InitAvatar( m_pAsuraManAvatar, m_AsuraEventpos );
|
||
InitAvatar( m_pAsuraWomanAvatar, m_AsuraEventpos );
|
||
#ifdef CREATE_CHAR_EFFECT
|
||
m_pCreateSuccessEffect = new KSeqModel;
|
||
m_pCreateSuccessEffect->Initialize();
|
||
|
||
K3DMatrix mat;
|
||
K3DMatrixIdentity( mat );
|
||
mat._11 = c_fAvatarScale;
|
||
mat._22 = c_fAvatarScale;
|
||
mat._33 = c_fAvatarScale;
|
||
m_pAsuraWomanAvatar->SetScale(c_fAvatarScale);
|
||
m_pCreateSuccessEffect->SetTransform( mat );
|
||
|
||
NX3LoadPack loadpack;
|
||
m_pCreateSuccessEffect->AddAnimation( c_szAvatarEffectStartAniName, c_lpCreateEffectFileName, KNX3Manager::SEQTYPE_ALL, &loadpack );
|
||
#endif
|
||
}
|
||
|
||
void SGameRenewalLobby::GetRaceEventPos(int nRace, K3DVector& vAvatarPos)
|
||
{
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_DEVA: vAvatarPos = m_DevaEventpos; break;
|
||
case GCLAN_ASURA: vAvatarPos = m_AsuraEventpos; break;
|
||
case GCLAN_GAIA: vAvatarPos = m_GaiaEventpos; break;
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::GetEventPos( KMsgREQ_EVBOX& Event, K3DVector& vAvatarPos )
|
||
{
|
||
int nEventCnt = Event.GetBoxCount();
|
||
if( nEventCnt <= 0 ) return;
|
||
|
||
KEventBoxSeq* pEventSeq = Event.GetBox(0); //지금 아바타 관련해서 이벤트 포인트는 하나기 때문에 그냥 0번 인덱스에서 얻어오게 제한적으로 처리
|
||
if( pEventSeq == NULL ) return;
|
||
|
||
K3DMatrix MT = pEventSeq->GetCube().GetTransform();
|
||
vAvatarPos = MT.GetPosVector();
|
||
}
|
||
|
||
void SGameRenewalLobby::InitAvatar( SAvatarSelector* pAvatar, const K3DVector& vAvatarPos )
|
||
{
|
||
if( pAvatar == NULL ) return;
|
||
|
||
K3DMatrix mat;
|
||
K3DMatrixIdentity( mat );
|
||
mat._11 = c_fAvatarScale;
|
||
mat._22 = c_fAvatarScale;
|
||
mat._33 = c_fAvatarScale;
|
||
pAvatar->SetScale(c_fAvatarScale);
|
||
|
||
mat.SetPosVector( vAvatarPos );
|
||
pAvatar->SetTransform( mat );
|
||
pAvatar->AvatarRotate(c_fInitRotate, false, true);
|
||
}
|
||
|
||
void SGameRenewalLobby::InitCamera()
|
||
{
|
||
SAFE_DELETE(m_pAsuraCamera);
|
||
SAFE_DELETE(m_pGaiaCamera);
|
||
SAFE_DELETE(m_pDevaCamera);
|
||
|
||
m_pAsuraCamera = new KSeqForm;
|
||
m_pGaiaCamera = new KSeqForm;
|
||
m_pDevaCamera = new KSeqForm;
|
||
|
||
for ( int i(0); 3>i; i++ )
|
||
{
|
||
m_pAsuraCamera->AddAnimation( pCamAniKey[LOBBY_CAMERA_ZOOMOUT+i], pAsuraCreate[i], true, KNX3Manager::SEQTYPE_CAMERA );
|
||
m_pGaiaCamera->AddAnimation( pCamAniKey[LOBBY_CAMERA_ZOOMOUT+i], pGaiaCreate[i], true, KNX3Manager::SEQTYPE_CAMERA );
|
||
m_pDevaCamera->AddAnimation( pCamAniKey[LOBBY_CAMERA_ZOOMOUT+i], pDevaCreate[i], true, KNX3Manager::SEQTYPE_CAMERA );
|
||
}
|
||
}
|
||
//
|
||
//void SGameRenewalLobby::InitQJTV( SGameQJTV*& pQJTV, const char* lpFile, bool bUseAlpha )
|
||
//{
|
||
// if( pQJTV == NULL )
|
||
// pQJTV = new SGameQJTV(m_pRenderDevice);
|
||
//
|
||
// DWORD dwOption(QJTV::FULL|QJTV::CENTER|QJTV::ALPHA);
|
||
// pQJTV->SetQJTV(lpFile, dwOption, 0, 0, 25, KColor(0,0,0,255));
|
||
//
|
||
// pQJTV->SetScreenCenter();
|
||
// pQJTV->SetRepeat(true);
|
||
//}
|
||
|
||
/*void SGameRenewalLobby::InitQJTVs()
|
||
{
|
||
m_pMuitiQJTV->AddQJTV( szBG_Asura, QJTV::FULL|QJTV::CENTER|QJTV::ALPHA );
|
||
m_pMuitiQJTV->AddQJTV( szBG_Deva, QJTV::FULL|QJTV::CENTER|QJTV::ALPHA );
|
||
m_pMuitiQJTV->AddQJTV( szBG_Gaia, QJTV::FULL|QJTV::CENTER|QJTV::ALPHA );
|
||
}*/
|
||
|
||
const short aIntTime[] = { 7, 3, 5, 7, 15, 20, 3, 5, 9, 9 };
|
||
|
||
/*
|
||
void SGameRenewalLobby::_RefreshJTVLogo()
|
||
{
|
||
int fixFps = 24;
|
||
|
||
float msFps = 1000.f / fixFps;
|
||
if ( (GetSafeTickCount() - m_dwRefreshTime) < msFps )
|
||
return;
|
||
|
||
if( !m_bLogoPlay )
|
||
{
|
||
short nRandIndex = rand()%10;
|
||
short nValue = rand()%100;
|
||
|
||
if( aIntTime[nRandIndex] > nValue )
|
||
m_bLogoPlay = true;
|
||
|
||
return;
|
||
}
|
||
|
||
if( m_pQJTVObj && m_spLogoTexture )
|
||
{
|
||
if( m_nCurFrame >= m_pQJTVObj->GetFrameCount() )
|
||
{
|
||
m_nCurFrame = 0;
|
||
m_bLogoPlay = false;
|
||
}
|
||
|
||
BYTE* pBit(NULL);
|
||
int nW, nH;
|
||
nW = nH = 0;
|
||
m_pQJTVObj->GetFrame( m_nCurFrame, pBit, nW, nH );
|
||
|
||
if( m_bIncrease )
|
||
m_nCurFrame++;
|
||
|
||
if( pBit )
|
||
{
|
||
K3DTexture* pTexture = (K3DTexture*)m_spLogoTexture;
|
||
|
||
m_bInitLogo = _refreshTexture( pTexture, pBit, nW, nH );
|
||
}
|
||
}
|
||
|
||
m_dwRefreshTime = GetSafeTickCount();
|
||
}
|
||
*/
|
||
|
||
void SGameRenewalLobby::LobbySetforGameRes( const char* pFileName )
|
||
{
|
||
if( pFileName == NULL ) return;
|
||
|
||
if( !m_strCurLobbySet.empty() )
|
||
{
|
||
if( stricmp( m_strCurLobbySet.c_str(), pFileName ) == 0 )
|
||
return;
|
||
}
|
||
|
||
m_strCurLobbySet = pFileName;
|
||
|
||
KStream* pRes = KFileManager::Instance().CreateStreamFromResource( pFileName );
|
||
if( !pRes ) return;
|
||
|
||
size_t nLen = pRes->GetLength();
|
||
char* pstrTemp = new char[nLen+1];
|
||
pstrTemp[nLen] = '\0';
|
||
for( size_t i(0); nLen > i; i++ )
|
||
{
|
||
pRes->Read( &pstrTemp[i], 1 );
|
||
}
|
||
|
||
_LobbySetLoadforGameRes( pstrTemp, m_pMainLight );
|
||
delete [] pstrTemp;
|
||
|
||
KFileManager::Instance().DeleteStream( pRes );
|
||
}
|
||
|
||
void SGameRenewalLobby::LobbySet( const char * pFileName )
|
||
{
|
||
FILE* pF = fopen( pFileName, "rb" );
|
||
if( pF )
|
||
{
|
||
// 데이터 파일 크기 세팅
|
||
fseek( pF, 0, SEEK_END );
|
||
size_t fsize = ftell( pF );
|
||
fseek( pF, 0, SEEK_SET );
|
||
|
||
char *pBuf = new char[fsize];
|
||
fread( pBuf, sizeof(char)*fsize, 1, pF );
|
||
|
||
_LobbySetLoad( pBuf, m_pMainLight );
|
||
|
||
delete [] pBuf;
|
||
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::_LobbySetLoadforGameRes( char *pBuf, K3DLight* pLight )
|
||
{
|
||
std::vector< std::string > vString;
|
||
MsgSplit( pBuf, vString, L"|\r\n" );
|
||
|
||
int nLoop = (int)vString.size();
|
||
|
||
if( nLoop >= 6 )
|
||
{
|
||
for( int i(0); 1 > i; i++ )
|
||
{
|
||
vString[i++].c_str(); // Light
|
||
_LightInforGameRes(vString[i++].c_str(), pLight); // Light file
|
||
|
||
vString[i++].c_str(); // Camera
|
||
_MainCameraInforGameRes(vString[i++].c_str()); // Camera file
|
||
|
||
vString[i++].c_str(); // Sky
|
||
_SkyInforGameRes(vString[i++].c_str()); // Sky file
|
||
}
|
||
}
|
||
vString.clear();
|
||
}
|
||
|
||
void SGameRenewalLobby::_LobbySetLoad( char *pBuf, K3DLight* pLight )
|
||
{
|
||
if( pLight == NULL ) return;
|
||
|
||
std::vector< std::string > vString;
|
||
MsgSplit( pBuf, vString, L"|\r\n" );
|
||
|
||
int nLoop = (int)vString.size();
|
||
|
||
if( nLoop >= 6 )
|
||
{
|
||
for( int i(0); 1>i; i++ )
|
||
{
|
||
vString[i++].c_str(); //라이트
|
||
_LightIn( vString[i++].c_str(), pLight ); //라이트 화일
|
||
|
||
vString[i++].c_str(); //카메라
|
||
_TerrainCameraIn( vString[i++].c_str() ); //카메라 화일
|
||
|
||
vString[i++].c_str(); //스카이
|
||
_TerrainSkyIn( vString[i++].c_str() ); //스카이 화일
|
||
}
|
||
}
|
||
vString.clear();
|
||
}
|
||
|
||
void SGameRenewalLobby::_SkyInforGameRes( const char * pFileName )
|
||
{
|
||
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( pFileName );
|
||
if( !pRes ) return;
|
||
|
||
size_t nLen = pRes->GetLength();
|
||
char * pstrTemp = new char[nLen+1];
|
||
pstrTemp[nLen] = '\0';
|
||
for( size_t i(0); nLen>i; i++ )
|
||
{
|
||
pRes->Read( &pstrTemp[i], 1 );
|
||
}
|
||
|
||
_TerrainSkyInLoad( pstrTemp );
|
||
delete [] pstrTemp;
|
||
|
||
KFileManager::Instance().DeleteStream( pRes );
|
||
}
|
||
|
||
void SGameRenewalLobby::_TerrainSkyInLoad( char *pBuf )
|
||
{
|
||
std::vector< std::string > vString;
|
||
MsgSplit( pBuf, vString, L"|\r\n" );
|
||
|
||
int nLoop = (int)vString.size();
|
||
|
||
if( nLoop >= 36 )
|
||
{
|
||
for( int i(0); 1>i; i++ )
|
||
{
|
||
vString[i++].c_str(); //SKY_COLOR_START
|
||
m_Sky_Color_Start.r = atof( vString[i++].c_str() );
|
||
m_Sky_Color_Start.g = atof( vString[i++].c_str() );
|
||
m_Sky_Color_Start.b = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //SKY_COLOR_MID
|
||
m_Sky_Color_Mid.r = atof( vString[i++].c_str() );
|
||
m_Sky_Color_Mid.g = atof( vString[i++].c_str() );
|
||
m_Sky_Color_Mid.b = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //SKY_COLOR_END
|
||
m_Sky_Color_End.r = atof( vString[i++].c_str() );
|
||
m_Sky_Color_End.g = atof( vString[i++].c_str() );
|
||
m_Sky_Color_End.b = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //SKYMIDHEIGHTPERCENT
|
||
m_fSkyMidHeightPercent = atof( vString[i++].c_str() );
|
||
|
||
KColor cloud;
|
||
vString[i++].c_str(); //CLOUD_COLOR
|
||
cloud.r = atoi( vString[i++].c_str() );
|
||
cloud.g = atoi( vString[i++].c_str() );
|
||
cloud.b = atoi( vString[i++].c_str() );
|
||
cloud.a = atoi( vString[i++].c_str() );
|
||
cloud.a = 0xff; // [sonador:temporary] to make cloud be visible
|
||
|
||
m_pSky->SetCloudColor( cloud );
|
||
|
||
vString[i++].c_str(); //FOGENABLE
|
||
m_bTerrainFogEnable = (atoi( vString[i++].c_str() ) == 1) ? true : false;
|
||
|
||
vString[i++].c_str(); //COLORFOG
|
||
m_colorTerrainFog.r = atoi( vString[i++].c_str() );
|
||
m_colorTerrainFog.g = atoi( vString[i++].c_str() );
|
||
m_colorTerrainFog.b = atoi( vString[i++].c_str() );
|
||
m_colorTerrainFog.a = atoi( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //FOGMODE
|
||
m_dwTerrainFogMode = atoi( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //HEIGHTFOG_START
|
||
m_fTerrainHeightFog_Start = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //HEIGHTFOG_END
|
||
m_fTerrainHeightFog_End = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //LINEARFOG_START
|
||
m_fTerrainLinearFog_Start = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //LINEARFOG_END
|
||
m_fTerrainLinearFog_End = atof( vString[i++].c_str() );
|
||
}
|
||
}
|
||
vString.clear();
|
||
}
|
||
|
||
void SGameRenewalLobby::_TerrainSkyIn( const char * pFileName )
|
||
{
|
||
FILE* pF = fopen( pFileName, "rb" );
|
||
if( pF )
|
||
{
|
||
// 데이터 파일 크기 세팅
|
||
fseek( pF, 0, SEEK_END );
|
||
size_t fsize = ftell( pF );
|
||
fseek( pF, 0, SEEK_SET );
|
||
|
||
char *pBuf = new char[fsize];
|
||
fread( pBuf, sizeof(char)*fsize, 1, pF );
|
||
|
||
_TerrainSkyInLoad( pBuf );
|
||
|
||
delete [] pBuf;
|
||
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::_GameLightInforGameRes( const char * pFileName, K3DLight* pLight )
|
||
{
|
||
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( pFileName );
|
||
if( !pRes ) return;
|
||
|
||
size_t nLen = pRes->GetLength();
|
||
char * pstrTemp = new char[nLen+1];
|
||
pstrTemp[nLen] = '\0';
|
||
for( size_t i(0); nLen>i; i++ )
|
||
{
|
||
pRes->Read( &pstrTemp[i], 1 );
|
||
}
|
||
|
||
_LightInLoad( pstrTemp, pLight );
|
||
delete [] pstrTemp;
|
||
|
||
KFileManager::Instance().DeleteStream( pRes );
|
||
}
|
||
|
||
void SGameRenewalLobby::_LightInforGameRes( const char * pFileName, K3DLight* pLight )
|
||
{
|
||
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( pFileName );
|
||
if( !pRes ) return;
|
||
|
||
size_t nLen = pRes->GetLength();
|
||
char * pstrTemp = new char[nLen+1];
|
||
pstrTemp[nLen] = '\0';
|
||
for( size_t i(0); nLen>i; i++ )
|
||
{
|
||
pRes->Read( &pstrTemp[i], 1 );
|
||
}
|
||
|
||
_LightInLoad( pstrTemp, pLight );
|
||
delete [] pstrTemp;
|
||
|
||
KFileManager::Instance().DeleteStream( pRes );
|
||
}
|
||
|
||
void SGameRenewalLobby::_LightInLoad( char *pBuf, K3DLight* pLight )
|
||
{
|
||
if( pLight == NULL ) return;
|
||
|
||
std::vector< std::string > vString;
|
||
MsgSplit( pBuf, vString, L"|\r\n" );
|
||
|
||
int nLoop = (int)vString.size();
|
||
|
||
if( nLoop >= 39 )
|
||
{
|
||
for( int i(0); 1>i; i++ )
|
||
{
|
||
vString[i++].c_str(); //TYPE
|
||
pLight->type = atoi( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //DIFFUSE
|
||
pLight->diffuse.r = atof( vString[i++].c_str() );
|
||
pLight->diffuse.g = atof( vString[i++].c_str() );
|
||
pLight->diffuse.b = atof( vString[i++].c_str() );
|
||
pLight->diffuse.a = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //SPECULAR
|
||
pLight->specular.r = atof( vString[i++].c_str() );
|
||
pLight->specular.g = atof( vString[i++].c_str() );
|
||
pLight->specular.b = atof( vString[i++].c_str() );
|
||
pLight->specular.a = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //AMBIENT
|
||
pLight->ambient.r = atof( vString[i++].c_str() );
|
||
pLight->ambient.g = atof( vString[i++].c_str() );
|
||
pLight->ambient.b = atof( vString[i++].c_str() );
|
||
pLight->ambient.a = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //POSITION
|
||
pLight->position.x = atof( vString[i++].c_str() );
|
||
pLight->position.y = atof( vString[i++].c_str() );
|
||
pLight->position.z = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //DIRECTION
|
||
pLight->direction.x = atof( vString[i++].c_str() );
|
||
pLight->direction.y = atof( vString[i++].c_str() );
|
||
pLight->direction.z = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //RANGE
|
||
pLight->range = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //ATTENUATION0
|
||
pLight->attenuation0 = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //ATTENUATION1
|
||
pLight->attenuation1 = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //ATTENUATION2
|
||
pLight->attenuation2 = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //FALLOFF
|
||
pLight->falloff = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //THETA
|
||
pLight->theta = atof( vString[i++].c_str() );
|
||
|
||
vString[i++].c_str(); //PHI
|
||
pLight-> phi = atof( vString[i++].c_str() );
|
||
}
|
||
}
|
||
vString.clear();
|
||
}
|
||
|
||
void SGameRenewalLobby::_LightIn( const char * pFileName, K3DLight* pLight )
|
||
{
|
||
FILE* pF = fopen( pFileName, "rb" );
|
||
if( pF )
|
||
{
|
||
// 데이터 파일 크기 세팅
|
||
fseek( pF, 0, SEEK_END );
|
||
size_t fsize = ftell( pF );
|
||
fseek( pF, 0, SEEK_SET );
|
||
|
||
char *pBuf = new char[fsize];
|
||
fread( pBuf, sizeof(char)*fsize, 1, pF );
|
||
|
||
_LightInLoad( pBuf, pLight );
|
||
|
||
delete [] pBuf;
|
||
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::_MainCameraInforGameRes( const char * pFileName )
|
||
{
|
||
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( pFileName );
|
||
if( !pRes ) return;
|
||
|
||
size_t nLen = pRes->GetLength();
|
||
char * pstrTemp = new char[nLen+1];
|
||
pstrTemp[nLen] = '\0';
|
||
for( size_t i(0); nLen>i; i++ )
|
||
{
|
||
pRes->Read( &pstrTemp[i], 1 );
|
||
}
|
||
|
||
m_pBGCamera->FileTextIn(pstrTemp);
|
||
|
||
delete [] pstrTemp;
|
||
|
||
KFileManager::Instance().DeleteStream( pRes );
|
||
}
|
||
|
||
void SGameRenewalLobby::_TerrainCameraIn( const char * pFileName )
|
||
{
|
||
FILE* pF = fopen( pFileName, "rb" );
|
||
if( pF )
|
||
{
|
||
// 데이터 파일 크기 세팅
|
||
fseek( pF, 0, SEEK_END );
|
||
size_t fsize = ftell( pF );
|
||
fseek( pF, 0, SEEK_SET );
|
||
|
||
char *pBuf = new char[fsize];
|
||
fread( pBuf, sizeof(char)*fsize, 1, pF );
|
||
|
||
m_pBGCamera->FileTextIn(pBuf);
|
||
|
||
delete [] pBuf;
|
||
|
||
fclose( pF );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::Terrain_Light ( int type, K3DColor col )
|
||
{
|
||
if( m_pBGLight )
|
||
{
|
||
switch( type )
|
||
{
|
||
case 0 : m_pBGLight->diffuse = col; break;
|
||
case 1 : m_pBGLight->specular = col; break;
|
||
case 2 : m_pBGLight->ambient = col; break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::Terrain_Light_Pos ( int nX, int nY, int nZ )
|
||
{
|
||
if( m_pBGLight )
|
||
{
|
||
m_pBGLight->position.x = nX;
|
||
m_pBGLight->position.y = nY;
|
||
m_pBGLight->position.z = nZ;
|
||
|
||
m_pBGLight->direction = -m_pBGLight->position;
|
||
Normalize(m_pBGLight->direction);
|
||
}
|
||
}
|
||
|
||
#endif
|
||
|
||
void SGameRenewalLobby::Game_Sky_Color_Start( int nR, int nG, int nB ) //Sky Color
|
||
{
|
||
m_Sky_Color_Start = K3DColor( nR/255.f, nG/255.f, nB/255.f );
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Sky_Color_Mid ( int nR, int nG, int nB )
|
||
{
|
||
m_Sky_Color_Mid = K3DColor( nR/255.f, nG/255.f, nB/255.f );
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Sky_Color_End ( int nR, int nG, int nB )
|
||
{
|
||
m_Sky_Color_End = K3DColor( nR/255.f, nG/255.f, nB/255.f );
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Sky_Color_MaxHeight( float fMaxHeight )
|
||
{
|
||
m_fSkyColorMaxHeight = fMaxHeight;
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Sky_Color_MidHeightPercent( float fMidHeightPercent )
|
||
{
|
||
m_fSkyMidHeightPercent = fMidHeightPercent;
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Sky_Color_MinHeight( float fMinHeight )
|
||
{
|
||
m_fSkyColorMinHeight = fMinHeight;
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Light ( int type, K3DColor col )
|
||
{
|
||
if( m_pMainLight )
|
||
{
|
||
switch( type )
|
||
{
|
||
case 0 : m_pMainLight->diffuse = col; break;
|
||
case 1 : m_pMainLight->specular = col; break;
|
||
case 2 : m_pMainLight->ambient = col; break;
|
||
}
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::Game_Light_Pos ( int nX, int nY, int nZ )
|
||
{
|
||
if( m_pMainLight )
|
||
{
|
||
m_pMainLight->position.x = nX;
|
||
m_pMainLight->position.y = nY;
|
||
m_pMainLight->position.z = nZ;
|
||
|
||
m_pMainLight->direction = -m_pMainLight->position;
|
||
Normalize(m_pMainLight->direction);
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::SetViewPort( SGameViewPort* pViewPort )
|
||
{
|
||
pViewPort->SetClipRange( 5.f, 15000.f );
|
||
pViewPort->SetHdrQuality( 0 );
|
||
pViewPort->SetEnableSelectOutLine(false);
|
||
pViewPort->SetChildViewportObj( m_pChildViewPort[0] );
|
||
|
||
{
|
||
//m_spBlendSource = KDeviceManager::GetDeviceManager()->GetRenderDevice()->CreateRenderTarget( cBlend_Width, cBlend_Width, 1, K3DFMT_X8R8G8B8, K3DRenderTarget::DEPTH_ENABLE );
|
||
if( GetGameOption().GetResolution_Width() > 1024 )
|
||
m_spBlendSource = KDeviceManager::GetDeviceManager()->GetRenderDevice()->CreateRenderTarget( 2048, 2048, 1, K3DFMT_X8R8G8B8, K3DRenderTarget::DEPTH_ENABLE );
|
||
else
|
||
m_spBlendSource = KDeviceManager::GetDeviceManager()->GetRenderDevice()->CreateRenderTarget( cBlend_Width, cBlend_Width, 1, K3DFMT_X8R8G8B8, K3DRenderTarget::DEPTH_ENABLE );
|
||
|
||
if(m_spBlendSource == NULL)
|
||
return;
|
||
|
||
m_spBlendResSprite = new KResSprite;
|
||
|
||
m_spBlendResSprite->SetTexture(m_spBlendSource, NULL);
|
||
//m_BlendSpritePrimitive.SetTargetSize( 1024, 768 );
|
||
int w = GetGameOption().GetResolution_Width();
|
||
int h = GetGameOption().GetResolution_Height();
|
||
m_BlendSpritePrimitive.SetTargetSize( w, h );
|
||
|
||
|
||
K3DMatrix mat;
|
||
K3DMatrixIdentity( mat );
|
||
mat.SetPosVector( K3DVertex( 0, 0, 10.f ) );
|
||
m_spBlendResSprite->SetTransform(mat);
|
||
|
||
m_BlendSpritePrimitive.SetTransform(mat);
|
||
m_BlendSpritePrimitive.SetRes( m_spBlendResSprite );
|
||
m_BlendSpritePrimitive.SetVisibility( 1.0f );
|
||
}
|
||
|
||
SGame::SetViewPort( pViewPort );
|
||
}
|
||
|
||
bool SGameRenewalLobby::Render( unsigned long uRenderBitVector, KViewportObject** ppViewPortList, int nViewportCount )
|
||
{
|
||
if( GetGameRef() == STAGE_END || GetGameRef() == STAGE_NOTHING ) return true;
|
||
|
||
|
||
|
||
for(int vit = 0; vit < nViewportCount; ++vit)
|
||
{
|
||
if( (ppViewPortList[vit]->GetAttributes() & KViewportObject::VIEWPORT_GAME ) == 0 &&
|
||
(ppViewPortList[vit]->GetAttributes() & KViewportObject::VIEWPORT_SHADOW) == 0 )
|
||
continue;
|
||
|
||
KViewportObject* viewport = ppViewPortList[vit];
|
||
|
||
viewport->SetFogMode( m_dwFogMode, m_colorLobbyFog, m_fLinearFog_Start, m_fLinearFog_End, m_fHeightFog_Start, m_fHeightFog_End );
|
||
|
||
viewport->AddLight( m_pMainLight );
|
||
m_pChildViewPort[0]->SetCamera( m_pBGCamera );
|
||
|
||
switch( GetCurState() )
|
||
{
|
||
|
||
case GAMELOGIN_PREPARE_CHARSELECT:
|
||
{
|
||
if( m_BeforeCharListState == GAMELOGIN_CREATECHAR_CUSTOMIZING ||
|
||
m_BeforeCharListState == GAMELOGIN_CREATECHAR_SUCCESS )
|
||
{
|
||
RenderRaceBackGround_N_Avatar(viewport, m_pChildViewPort[0], m_nSelectCustomRace, GetCrrCustomizingAvatar());
|
||
}
|
||
else if( m_BeforeCharListState == GAMELOGIN_CHARSELECT )
|
||
{
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount )
|
||
{
|
||
RenderRaceBackGround_N_Avatar(viewport, m_pChildViewPort[0], m_nSelectChrRace, m_Avatars[ m_nSelectedCharIndex ].pAvatar);
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CREATECHAR_SUCCESS:
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
RenderRaceBackGround_N_Avatar(viewport, m_pChildViewPort[0], m_nSelectCustomRace, pSelectAvatar, m_pCreateSuccessEffect);
|
||
}
|
||
break;
|
||
case GAMELOGIN_CREATECHAR_CUSTOMIZING:
|
||
{
|
||
RenderRaceBackGround_N_Avatar(viewport, m_pChildViewPort[0], m_nSelectCustomRace, GetCrrCustomizingAvatar());
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CHARSELECT_WAIT_TIME:
|
||
case GAMELOGIN_CHARSELECT:
|
||
{
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount)
|
||
{
|
||
RenderRaceBackGround_N_Avatar(viewport, m_pChildViewPort[0], m_nSelectChrRace, m_Avatars[ m_nSelectedCharIndex ].pAvatar);
|
||
|
||
if( m_dwBlendStartTime != 0 && viewport->GetAttributes() & KViewportObject::VIEWPORT_GAME )
|
||
viewport->Register( &m_BlendSpritePrimitive );
|
||
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
if( m_pSceneMgr )
|
||
m_pSceneMgr->render( ppViewPortList[0] );
|
||
|
||
return true;
|
||
}
|
||
|
||
KSeqForm* SGameRenewalLobby::GetRaceCamera( int nRace )
|
||
{
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_DEVA: return m_pDevaCamera;
|
||
case GCLAN_ASURA: return m_pAsuraCamera;
|
||
case GCLAN_GAIA: return m_pGaiaCamera;
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
KSeqForm* SGameRenewalLobby::GetRaceNX3obj( int nRace )
|
||
{
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_DEVA: return m_pDevaNX3Prop;
|
||
case GCLAN_ASURA: return m_pAsuraNX3Prop;
|
||
case GCLAN_GAIA: return m_pGaiaNX3Prop;
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
void SGameRenewalLobby::RenderAsuraFireEffect( KViewportObject* viewport )
|
||
{
|
||
if( !viewport ) return;
|
||
|
||
static float s_fValue = 0.9777f;
|
||
|
||
int x(0), y(0), z(0.1);
|
||
for( int i(0); i<c_nAsuraNX3EffectMaxPos; ++i )
|
||
{
|
||
if( !m_pAsuraNX3DffectProp[i] ) break;
|
||
|
||
x = c_nAsuraNX3EffectPos[i][0];
|
||
y = c_nAsuraNX3EffectPos[i][1];
|
||
|
||
K3DVector v3D;
|
||
viewport->Get2DVto3DV( K3DVector(x,y,s_fValue), v3D );
|
||
|
||
K3DMatrix mat;
|
||
K3DMatrixIdentity( mat );
|
||
mat.SetPosVector(v3D);
|
||
|
||
m_pAsuraNX3DffectProp[i]->SetParentTransform(&mat);
|
||
// m_pAsuraNX3DffectProp[i]->SetTransform(mat);
|
||
m_pAsuraNX3DffectProp[i]->Render(viewport, KRenderObject::RENDEREFX_AFTER_SPRITE);
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::RenderRaceBackGround_N_Avatar( KViewportObject* viewport, KViewportObject* ChildViewport, int nRace, SAvatarSelector* pAvatar, KSeqModel* pEffect/*=NULL*/ )
|
||
{
|
||
if( viewport->GetAttributes() & KViewportObject::VIEWPORT_GAME )
|
||
{
|
||
ChildViewport->SetCamera( m_pBGCamera );
|
||
|
||
if( m_pSky )
|
||
{
|
||
ChildViewport->SetSkyColorHeight( m_fSkyColorMinHeight, m_fSkyColorMaxHeight, m_fSkyMidHeightPercent );
|
||
ChildViewport->SetSkyColor( m_Sky_Color_Start, m_Sky_Color_Mid, m_Sky_Color_End );
|
||
// ChildViewport->SetFogMode( m_dwTerrainFogMode, m_colorTerrainFog, m_fTerrainLinearFog_Start, m_fTerrainLinearFog_End, m_fTerrainHeightFog_Start, m_fTerrainHeightFog_End );
|
||
// ChildViewport->AddLight( m_pBGLight );
|
||
|
||
m_pSky->Render( ChildViewport );
|
||
}
|
||
|
||
if( m_bShowBG )
|
||
{
|
||
if(m_pCharaterBgSceneMgr)
|
||
{
|
||
m_pCharaterBgSceneMgr->render( ChildViewport );
|
||
}
|
||
}
|
||
//m_pMuitiQJTV->Render(ChildViewport);
|
||
|
||
if( nRace == GCLAN_ASURA )
|
||
RenderAsuraFireEffect( ChildViewport );
|
||
}
|
||
|
||
if( pAvatar == NULL ) return;
|
||
|
||
// 종족별로 카메라의 ani가 다르기 때문에 여기서 그에 맞는 카메라를 얻어와서 쎄팅해준다. ////////////////////////////////////
|
||
KSeqForm* pCamera = GetRaceCamera( nRace );
|
||
if( pCamera )
|
||
pCamera->Render( viewport );
|
||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
viewport->AddLight( m_pMainLight );
|
||
|
||
KSeqObject* pObj = GetCrrRaceProp( nRace );
|
||
if( viewport->GetAttributes() & KViewportObject::VIEWPORT_SHADOW )
|
||
{
|
||
DWORD renderFlag = MAKELONG( KRenderObject::RENDEREFX_SHADOW, SHADOW_DY_CAST );
|
||
pAvatar->Render( viewport, renderFlag );
|
||
}
|
||
else
|
||
{
|
||
if( pObj ) pObj->Render( viewport );
|
||
pAvatar->Render( viewport );
|
||
|
||
if( pEffect )
|
||
pEffect->Render( viewport );
|
||
}
|
||
}
|
||
|
||
KSeqObject* SGameRenewalLobby::GetCrrRaceProp( int nRace )
|
||
{
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_DEVA: return m_pDevaNX3Prop;
|
||
case GCLAN_GAIA: return m_pGaiaNX3Prop;
|
||
case GCLAN_ASURA: return m_pAsuraNX3Prop;
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCharSelectState( int nSelectIndex )
|
||
{
|
||
_oprint( "Character Selection Mode\n" );
|
||
|
||
SetCurState( GAMELOGIN_CHARSELECT );
|
||
|
||
m_BgScene->activate( false );
|
||
|
||
m_BgScene_Pane_Type02->activate(false);
|
||
m_BgScene_Pane_Type02->play(false);
|
||
m_BgScene_Pane_Type03->activate(true);
|
||
m_BgScene_Pane_Type03_right->activate(true);
|
||
|
||
m_BgScene_ClanDesc_Asura->activate(false);
|
||
m_BgScene_ClanDesc_Deva->activate(false);
|
||
m_BgScene_ClanDesc_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Asura->activate(false);
|
||
m_BgScene_ClanSelect_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Deva->activate(false);
|
||
m_BgScene_ClanSelect->activate(false);
|
||
|
||
m_bRatateL = false; m_bRatateR = false;
|
||
|
||
if( 0 <= nSelectIndex && nSelectIndex < GameRule::nMaxCharactersPerAccount )
|
||
{
|
||
AvatarSelect( nSelectIndex ); //이안에서 m_nSelectedCharIndex 를 쎄팅한다.
|
||
}
|
||
|
||
if( m_BeforeCharListState == GAMELOGIN_GAMESERVER_LOGIN )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERLIST, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERMENU, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERTEXT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE, false ) );
|
||
|
||
SetOtherNavigateClose( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT );
|
||
}
|
||
else if( m_BeforeCharListState == GAMELOGIN_CREATECHAR_CUSTOMIZING ||
|
||
m_BeforeCharListState == GAMELOGIN_CREATECHAR_SUCCESS )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, false) );
|
||
}
|
||
else if( m_BeforeCharListState == GAMELOGIN_CREATECHAR_RACE_SELECT_BACK )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_SELECT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, false) );
|
||
}
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SELECTCHAR_INFO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, true ) );
|
||
////m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE01, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARNAMELIST, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT, true) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
|
||
m_pGameMng->PostMsgAtDynamic( new SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARNAMELIST, "set_focus_charnamelist_wnd" ) );
|
||
|
||
if( m_pGameMng->IsShowLoadingWnd() )
|
||
m_pGameMng->SetShowLoadingWnd( false );
|
||
|
||
if( m_bCreateCharSuccess )
|
||
{
|
||
m_pGameMng->PostMsgAtDynamic( new SMSG_SEND_DATA( "CreateMotion" ) );
|
||
}
|
||
|
||
if (m_pGameMng)
|
||
//m_pGameMng->UpdateLoadingProgress(0.0f);
|
||
m_pGameMng->InitLoadingBar();
|
||
}
|
||
|
||
|
||
void SGameRenewalLobby::SetToIntroState(bool bPlayIntromove)
|
||
{
|
||
_oprint("Intro출력\n");
|
||
SetCurState( GAMELOGIN_INTRO );
|
||
|
||
m_strCrrBGM = "";
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_GAMERATING, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBMENU, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_TEXT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
|
||
//m_BgScene->activate(false);
|
||
//m_BgScene_Pane_Type02->activate(false);
|
||
|
||
// 2010.07.06 - prodongi
|
||
/*
|
||
static bool b_FirstIntro = true;
|
||
|
||
if(b_FirstIntro == false)
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INTRO_SUB, true ) );
|
||
}
|
||
|
||
b_FirstIntro = false;
|
||
*/
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INTRO_SUB, true ) );
|
||
|
||
if(m_IntroScene)
|
||
{
|
||
// 2010.07.06 - prodongi
|
||
//m_pSceneMgr->addScene( *m_IntroScene );
|
||
m_pSceneMgr->addScene(*m_IntroScene, m_BgScene_ClanDesc_Gaia);
|
||
m_IntroScene->activate();
|
||
m_IntroScene->play(true);
|
||
}
|
||
|
||
if(m_IntroScene_Navislamia)
|
||
{
|
||
m_IntroScene_Navislamia->activate(false);
|
||
m_IntroScene_Navislamia->play(false);
|
||
m_pSceneMgr->removeScene( *m_IntroScene_Navislamia );
|
||
}
|
||
|
||
if(m_IntroScene_GoldenMonarch)
|
||
{
|
||
m_IntroScene_GoldenMonarch->activate(false);
|
||
m_IntroScene_GoldenMonarch->play(false);
|
||
m_pSceneMgr->removeScene( *m_IntroScene_GoldenMonarch );
|
||
}
|
||
|
||
}
|
||
|
||
|
||
void SGameRenewalLobby::SetToLoginState()
|
||
{
|
||
_oprint( "로긴 모드\n" );
|
||
SetCurState( GAMELOGIN_LOGIN );
|
||
|
||
m_TryConnectAuthServer = false;
|
||
m_BgScene->activate();
|
||
m_BgScene->play();
|
||
m_BgScene->SetAdditiveRenderMode(true);
|
||
m_BgScene_Pane_Type02->activate();
|
||
m_BgScene_Pane_Type02->play();
|
||
//m_BgScene_Pane_Type02->activate(false);
|
||
m_BgScene_Pane_Type03->activate(false);
|
||
m_BgScene_Pane_Type03_right->activate(false);
|
||
|
||
|
||
if(m_CreditsScene)
|
||
{
|
||
m_CreditsScene->activate( false );
|
||
m_CreditsScene->play(false);
|
||
m_pSceneMgr->removeScene2( *m_CreditsScene );
|
||
}
|
||
|
||
if(m_CreditsScene2)
|
||
{
|
||
m_CreditsScene2->activate( false );
|
||
m_CreditsScene2->play(false);
|
||
m_pSceneMgr->removeScene2( *m_CreditsScene2 );
|
||
}
|
||
|
||
if(m_CreditsScene3)
|
||
{
|
||
m_CreditsScene3->activate( false );
|
||
m_CreditsScene3->play(false);
|
||
m_pSceneMgr->removeScene2( *m_CreditsScene3 );
|
||
}
|
||
|
||
if( m_CreditsScene4 )
|
||
{
|
||
m_CreditsScene4->activate( false );
|
||
m_CreditsScene4->play(false);
|
||
m_pSceneMgr->removeScene2( *m_CreditsScene4 );
|
||
}
|
||
|
||
if(m_IntroScene)
|
||
{
|
||
m_IntroScene->activate( false);
|
||
m_IntroScene->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene );
|
||
//SAFE_DELETE(m_IntroScene);
|
||
}
|
||
|
||
if(m_IntroScene_Navislamia)
|
||
{
|
||
m_IntroScene_Navislamia->activate( false);
|
||
m_IntroScene_Navislamia->play(false);
|
||
m_pSceneMgr->removeScene( *m_IntroScene_Navislamia );
|
||
}
|
||
|
||
if(m_IntroScene_GoldenMonarch)
|
||
{
|
||
m_IntroScene_GoldenMonarch->activate( false);
|
||
m_IntroScene_GoldenMonarch->play(false);
|
||
m_pSceneMgr->removeScene( *m_IntroScene_GoldenMonarch );
|
||
}
|
||
|
||
m_BgScene_ClanDesc_Asura->activate(false);
|
||
m_BgScene_ClanDesc_Deva->activate(false);
|
||
m_BgScene_ClanDesc_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Asura->activate(false);
|
||
m_BgScene_ClanSelect_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Deva->activate(false);
|
||
m_BgScene_ClanSelect->activate(false);
|
||
|
||
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREDIT, true ) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREDIT_TEXT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREDIT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREDIT_TEXT, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INTRO_SUB, false ) );
|
||
|
||
|
||
m_nSelectChrRace = -1;
|
||
m_nSelectedCharIndex = -1;
|
||
//if( !m_strCrrBGM.empty() )
|
||
//{
|
||
// m_pMSoundMgr->PlayBGM( m_strCrrBGM.c_str(), 100, true );
|
||
//}
|
||
|
||
if(m_strCrrBGM != "rappelz_newmain.mp3")
|
||
{
|
||
if(m_strCrrBGM.empty())
|
||
{
|
||
m_strCrrBGM = "rappelz_newmain.mp3";//c_szLOBBY_BGM[GetGameOption().GetLobbyTheme()];
|
||
m_pMSoundMgr->PlayBGM( m_strCrrBGM.c_str(), 50, true );
|
||
}
|
||
else
|
||
{
|
||
m_strCrrBGM = "rappelz_newmain.mp3";
|
||
m_pMSoundMgr->SwapPlayBGM(m_strCrrBGM.c_str(),100,1000,50,true);
|
||
}
|
||
m_pMSoundMgr->StopMusic();
|
||
}
|
||
|
||
|
||
m_dwBlendStartTime = 0;
|
||
|
||
// floyd 3.11.1 iMBC 채널링 구현
|
||
if( ENV().IsExist( "imbclogin" ) )
|
||
{
|
||
std::string strAccount = ENV().GetString( "account" );
|
||
std::string strPassword = ENV().GetString( "password" );
|
||
|
||
if( (!strAccount.empty() && !strPassword.empty() ) && strAccount != "<NULL>" && strPassword!= "<NULL>" )
|
||
{ //대만 웹 로그인 임.
|
||
ProcMsgAtStatic( &SIMSG_LOGIN_IMBC_ACCOUNT( strAccount.c_str(), strPassword.c_str() ) );
|
||
}
|
||
}
|
||
/* 2011.10.05 대만의 웹 로그인 방식 삭제(안 쓰임) - prodongi
|
||
else if( stricmp( ENV().GetString( "locale" ).c_str(), "BIG5" ) == 0 && stricmp( ENV().GetString( "country" ).c_str(), "TW" ) == 0 )
|
||
{
|
||
if( !ENV().IsExist( "noautologin" ) )
|
||
{
|
||
std::string strAccount = ENV().GetString( "account" );
|
||
std::string strOTP = ENV().GetString( "otp" );
|
||
|
||
if( (!strAccount.empty() && !strOTP.empty() ) && strAccount != "<NULL>" && strOTP != "<NULL>" )
|
||
{ //대만 웹 로그인 임.
|
||
ProcMsgAtStatic( &SIMSG_LOGIN_OTP_ACCOUNT( strAccount.c_str(), strOTP.c_str() ) );
|
||
}
|
||
}
|
||
else
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_GAMERATING, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBMENU, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_TEXT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
}
|
||
}
|
||
*/
|
||
else
|
||
{
|
||
bool bWebLogin( ENV().IsExist( "web_login" ) );
|
||
if( !bWebLogin )
|
||
{
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_GAMERATING, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBMENU, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_TEXT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN, true ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
}
|
||
|
||
if( ENV().IsExist( "noautologin" ) )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_GAMERATING, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBMENU, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_TEXT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN, true ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
}
|
||
|
||
}
|
||
|
||
if(GetLocaleOption().GetValueString("LOGIN_RAPPELZ_LOGO",NULL) == NULL)
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, false ) );
|
||
if(GetLocaleOption().GetValueString("LOGIN_PUBLISHER_LOGO",NULL) == NULL)
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, false ) ); // sonador #2.3.3.4 (국내) copy rights 변경
|
||
if(GetLocaleOption().GetValueString("LOGIN_RAPPELZ_SUBTITLE",NULL) == NULL)
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, false ) );
|
||
if(GetLocaleOption().GetValueString("LOGIN_NFLAVOR_LOGO",NULL) == NULL)
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, false ) );
|
||
|
||
SetOtherNavigateClose( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERLIST, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERMENU, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERTEXT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE, false ) );
|
||
|
||
if(m_DisconnectAuthServer)
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_SERVER_DISCONNECT ) );
|
||
m_DisconnectAuthServer = false;
|
||
}
|
||
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GAME_RATING, true ) ); //게임 등급
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GAME_RATING_18ONLY, true ) ); //게임 등급
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToLogOut()
|
||
{
|
||
m_pGameMng->CloseToServer();
|
||
m_pGameMng->ClearDummy();
|
||
m_bUseCharacterSelect = false;
|
||
|
||
if( m_pAuthConn ) m_pAuthConn->Close();
|
||
SAFE_DELETE( m_pAuthConn );
|
||
SAFE_DELETE( m_pRecvQueue );
|
||
|
||
m_pAuthConn = new XSyncStreamConnection( true, true );
|
||
m_pRecvQueue = IQueue::MakeQueue( 1*1024 );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARNAMELIST, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SELECTCHAR_INFO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT, false) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE01, false ) );
|
||
}
|
||
|
||
void SGameRenewalLobby::RequestCharacterList()
|
||
{
|
||
TS_CS_CHARACTER_LIST msgCharList;
|
||
|
||
// #2.1.12
|
||
msgCharList.account[ GameRule::MAX_ACCOUNT_LEN ] = '\0';
|
||
::strncpy( msgCharList.account, g_UserInfo.GetAccountName(), GameRule::MAX_ACCOUNT_LEN );
|
||
|
||
PendMessage( &msgCharList );
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToRaceSelectState()
|
||
{
|
||
_oprint( "SGameRenewalLobby::SetToRaceSelectState()\n" );
|
||
SetCurState( GAMELOGIN_CREATECHAR_RACE_SELECT );
|
||
m_nSelectCustomRace = -1;
|
||
|
||
if(m_strCrrBGM != "05_Pioneer_of_Distorted_Land.ogg")
|
||
{
|
||
if(m_strCrrBGM.empty())
|
||
{
|
||
m_strCrrBGM = "05_Pioneer_of_Distorted_Land.ogg";
|
||
m_pMSoundMgr->PlayBGM( m_strCrrBGM.c_str(), 100, true );
|
||
}
|
||
else
|
||
{
|
||
m_strCrrBGM = "05_Pioneer_of_Distorted_Land.ogg";
|
||
m_pMSoundMgr->SwapPlayBGM(m_strCrrBGM.c_str(),100,1000,1000,true);
|
||
}
|
||
}
|
||
|
||
m_pMSoundMgr->StopMusic();
|
||
m_BgScene->activate(false);
|
||
|
||
m_BgScene_Pane_Type02->activate(true);
|
||
m_BgScene_Pane_Type02->play();
|
||
//m_BgScene_Pane_Type02->activate(false);
|
||
m_BgScene_Pane_Type03->activate(false);
|
||
m_BgScene_Pane_Type03_right->activate(false);
|
||
|
||
m_BgScene_ClanDesc_Asura->activate(false);
|
||
m_BgScene_ClanDesc_Deva->activate(false);
|
||
m_BgScene_ClanDesc_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Asura->activate(true);
|
||
m_BgScene_ClanSelect_Deva->activate(true);
|
||
m_BgScene_ClanSelect_Gaia->activate(true);
|
||
m_BgScene_ClanSelect_Gaia->setLocalVisibility(0.f);
|
||
m_BgScene_ClanSelect_Deva->setLocalVisibility(0.f);
|
||
m_BgScene_ClanSelect_Asura->setLocalVisibility(0.f);
|
||
|
||
m_BgScene_ClanSelect->activate(true);
|
||
|
||
|
||
|
||
|
||
SetOtherNavigateClose( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERLIST, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERMENU, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERTEXT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARNAMELIST, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SELECTCHAR_INFO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, false ) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE01, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_SELECT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, false) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, "init_movie" ) );
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCreditsState(_LOGIN_STATE state, rp::SGameSceneIPtr& creditsScene, char const* filmFileFormat, int filmCount)
|
||
{
|
||
_oprint( "크레딧 모드\n" );
|
||
SetCurState( state );
|
||
|
||
m_strCrrBGM = "";
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_GAMERATING, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBMENU, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_TEXT, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREDIT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREDIT_TEXT, true ) );
|
||
|
||
rp::SGameCreditsScene* _CreditsScene = static_cast< rp::SGameCreditsScene* >( creditsScene.get() );
|
||
if(_CreditsScene)
|
||
{
|
||
if(_CreditsScene->getFilmCount() == 0)
|
||
{
|
||
std::string fileName;
|
||
for (int i = 0; i < filmCount; ++i)
|
||
{
|
||
XStringUtil::Format(fileName, filmFileFormat, i+1);
|
||
_CreditsScene->addFilm(fileName.c_str());
|
||
}
|
||
}
|
||
}
|
||
|
||
if(creditsScene)
|
||
{
|
||
// 2010.07.06 - prodongi
|
||
//m_pSceneMgr->addScene( *m_CreditsScene );
|
||
m_pSceneMgr->addScene(*creditsScene, m_BgScene_ClanDesc_Gaia);
|
||
creditsScene->play(false);
|
||
creditsScene->play(true);
|
||
creditsScene->activate();
|
||
m_BgScene->SetAdditiveRenderMode(false);
|
||
}
|
||
// 2010.07.06 - prodongi
|
||
m_BgScene_Pane_Type02->activate(true);
|
||
m_BgScene_Pane_Type02->play(true);
|
||
m_BgScene_Pane_Type03->activate(false);
|
||
m_BgScene_Pane_Type03->play(false);
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCreditsState()
|
||
{
|
||
removeSceneInactivate(m_CreditsScene2);
|
||
removeSceneInactivate(m_CreditsScene3);
|
||
removeSceneInactivate(m_CreditsScene4);
|
||
|
||
SetToCreditsState(GAMELOGIN_CREDITS, m_CreditsScene, "epic5_credit_%02d.jpg", 16);
|
||
}
|
||
void SGameRenewalLobby::SetToCredits2State()
|
||
{
|
||
removeSceneInactivate(m_CreditsScene);
|
||
removeSceneInactivate(m_CreditsScene3);
|
||
removeSceneInactivate(m_CreditsScene4);
|
||
|
||
SetToCreditsState(GAMELOGIN_CREDITS2, m_CreditsScene2, "epic6_credit_%02d.jpg", 17);
|
||
}
|
||
|
||
void SGameRenewalLobby::removeSceneInactivate(rp::SGameSceneIPtr& creditsScene)
|
||
{
|
||
if(creditsScene)
|
||
{
|
||
creditsScene->activate(false);
|
||
m_pSceneMgr->removeScene( *creditsScene );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCredits3State()
|
||
{
|
||
removeSceneInactivate(m_CreditsScene);
|
||
removeSceneInactivate(m_CreditsScene2);
|
||
removeSceneInactivate(m_CreditsScene4);
|
||
|
||
SetToCreditsState(GAMELOGIN_CREDITS3, m_CreditsScene3, "epic7_credit_%02d.jpg", 16);
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCredits4State()
|
||
{
|
||
removeSceneInactivate(m_CreditsScene);
|
||
removeSceneInactivate(m_CreditsScene2);
|
||
removeSceneInactivate(m_CreditsScene3);
|
||
|
||
SetToCreditsState(GAMELOGIN_CREDITS4, m_CreditsScene4, "epic8_credit_%02d.jpg", 16);
|
||
}
|
||
|
||
void SGameRenewalLobby::InitCostomizingAvatar( int nRace, int nSex, SAvatarSelector* pSelectAvatar )
|
||
{
|
||
if( pSelectAvatar == NULL ) return;
|
||
|
||
pSelectAvatar->SetRace(nRace);
|
||
pSelectAvatar->SetSex( nSex );
|
||
|
||
pSelectAvatar->SetNudeCode( MODEL_INFO::NUDE_HAIR, GetDefaultItemDB().GetHairID(0) );
|
||
pSelectAvatar->SetNudeCode( MODEL_INFO::NUDE_FACE, GetDefaultItemDB().GetFaceID(0) );
|
||
pSelectAvatar->SetNudeCode( MODEL_INFO::NUDE_BODY, GetDefaultItemDB().GetBodyID(0) );
|
||
pSelectAvatar->SetNudeCode( MODEL_INFO::NUDE_HAND, GetDefaultItemDB().GetHandID(0) );
|
||
pSelectAvatar->SetNudeCode( MODEL_INFO::NUDE_FOOT, GetDefaultItemDB().GetFootID(0) );
|
||
|
||
pSelectAvatar->SetHairIndex( 0 );
|
||
pSelectAvatar->SetFaceIndex( 0 );
|
||
pSelectAvatar->SetBodyIndex( 0 );
|
||
pSelectAvatar->SetHandIndex( 0 );
|
||
pSelectAvatar->SetFootIndex( 0 );
|
||
|
||
pSelectAvatar->SetDecoIndex( 1 );
|
||
|
||
for( int i(0); ItemBase::MAX_ITEM_WEAR > i; i++ )
|
||
{
|
||
pSelectAvatar->SetWearIndex( i, 0, 0 );
|
||
}
|
||
|
||
if (XRandom(0, 1) == 0)
|
||
{
|
||
int nRandIndex = SUICreateCharSecondDlg::m_CharacterHairDyesMap->at(XRandom(330, 333));
|
||
pSelectAvatar->SetHairColorRGB(-16777216);
|
||
pSelectAvatar->SetHairColorIndex(nRandIndex);
|
||
}
|
||
else
|
||
{
|
||
int nRandRGB = SUICreateCharSecondDlg::m_CharacterHairDyesMap->at(XRandom(300, 329));
|
||
|
||
pSelectAvatar->SetHairColorRGB(nRandRGB);
|
||
pSelectAvatar->SetHairColorIndex(0);
|
||
}
|
||
pSelectAvatar->RefreshAvatar();
|
||
|
||
// Default hair color is 0
|
||
unsigned long color_value = GetSkinColorTable().GetColorValue( nRace - GCLAN_GAIA, 0 );
|
||
pSelectAvatar->SetSkinColorized( color_value, K3DTexture::COLORIZED_DEF, color_value );
|
||
}
|
||
|
||
void SGameRenewalLobby::InitCostomizingAvatars( int nRace )
|
||
{
|
||
switch(nRace)
|
||
{
|
||
case GCLAN_DEVA:
|
||
{
|
||
InitCostomizingAvatar( GCLAN_DEVA, SEX_MALE, m_pDevaManAvatar );
|
||
InitCostomizingAvatar( GCLAN_DEVA, SEX_FEMALE, m_pDevaWomanAvatar );
|
||
break;
|
||
}
|
||
case GCLAN_GAIA:
|
||
{
|
||
InitCostomizingAvatar( GCLAN_GAIA, SEX_MALE, m_pGaiaManAvatar );
|
||
InitCostomizingAvatar( GCLAN_GAIA, SEX_FEMALE, m_pGaiaWomanAvatar );
|
||
break;
|
||
}
|
||
case GCLAN_ASURA:
|
||
{
|
||
InitCostomizingAvatar( GCLAN_ASURA, SEX_MALE, m_pAsuraManAvatar );
|
||
InitCostomizingAvatar( GCLAN_ASURA, SEX_FEMALE, m_pAsuraWomanAvatar );
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
const char* SGameRenewalLobby::GetRaceOptionFile( int nRace )
|
||
{
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_GAIA: return c_pBG_Set[ 0 ];
|
||
case GCLAN_DEVA: return c_pBG_Set[ 1 ];
|
||
case GCLAN_ASURA: return c_pBG_Set[ 2 ];
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCostomizing()
|
||
{
|
||
_oprint( "Character customization initialization\n" );
|
||
SetCurState( GAMELOGIN_CREATECHAR_CUSTOMIZING );
|
||
|
||
m_BgScene_Pane_Type02->activate(false);
|
||
m_BgScene_Pane_Type02->play(false);
|
||
m_BgScene_Pane_Type03->activate(true);
|
||
m_BgScene_Pane_Type03_right->activate(true);
|
||
|
||
|
||
m_BgScene_ClanSelect->activate(false);
|
||
|
||
m_BgScene_ClanDesc_Asura->activate(false);
|
||
m_BgScene_ClanDesc_Deva->activate(false);
|
||
m_BgScene_ClanDesc_Gaia->activate(false);
|
||
|
||
m_BgScene_ClanSelect_Asura->activate(false);
|
||
m_BgScene_ClanSelect_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Deva->activate(false);
|
||
|
||
//InitQJTVs();
|
||
ChangeCharacterBG( m_nSelectCustomRace );
|
||
LobbySetforGameRes( GetRaceOptionFile( m_nSelectCustomRace ) ); // Light, sky and camera
|
||
InitCostomizingAvatars( m_nSelectCustomRace );
|
||
|
||
SAvatarSelector* pAvatar = GetCrrCustomizingAvatar();
|
||
if( pAvatar )
|
||
{
|
||
pAvatar->AvatarRotate(c_fInitRotate, false, true);
|
||
m_bRatateL = false; m_bRatateR = false;
|
||
SendCustomizingMsgToWnd( pAvatar );
|
||
}
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_SELECT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT, true) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, true) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, true) );
|
||
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMOUT;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ON ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_CHANGE ) );
|
||
|
||
KSeqForm* pCamera = GetRaceCamera( m_nSelectCustomRace );
|
||
if( pCamera ) pCamera->PlayAnimation( m_dwTime, pCamAniKey[LOBBY_CAMERA_ZOOMOUT], SEQTYPE_LOOP );
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToServerSelectState()
|
||
{
|
||
_oprint( "Server selection mode\n" );
|
||
SetCurState( GAMELOGIN_SERVERSELECT );
|
||
|
||
if( m_bIsCan_ReqServerList )
|
||
SetToServerSelectStateOn();
|
||
}
|
||
|
||
void SGameRenewalLobby::CheckCamera( KSeqForm * pCamera )
|
||
{
|
||
if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOMING && !pCamera->IsPlaying() )
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOM;
|
||
pCamera->PlayAnimation( m_dwTime, pCamAniKey[LOBBY_CAMERA_ZOOM], SEQTYPE_LOOP );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_OUT_ANI ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ON ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, number_t( false ), "ani_cam" ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLON ) );
|
||
}
|
||
else if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOMING_OUT && !pCamera->IsPlaying() )
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMOUT;
|
||
pCamera->PlayAnimation( m_dwTime, pCamAniKey[LOBBY_CAMERA_ZOOMOUT], SEQTYPE_LOOP );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_IN_ANI ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ON ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, number_t( false ), "ani_cam" ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLON ) );
|
||
}
|
||
else if( m_nNewCameraIndex == LOBBY_CAMERA_CHANGE && !pCamera->IsPlaying() )
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOM;
|
||
pCamera->PlayAnimation( m_dwTime, pCamAniKey[LOBBY_CAMERA_ZOOM], SEQTYPE_LOOP );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLON) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, number_t( false ), "ani_cam" ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLON ) );
|
||
}
|
||
}
|
||
|
||
SAvatarSelector* SGameRenewalLobby::GetCrrCustomizingAvatar()
|
||
{
|
||
switch (m_nSelectCustomRace)
|
||
{
|
||
case GCLAN_GAIA:
|
||
{
|
||
return m_nSelectSex == SEX_MALE ? m_pGaiaManAvatar : m_pGaiaWomanAvatar;
|
||
break;
|
||
}
|
||
case GCLAN_DEVA:
|
||
{
|
||
return m_nSelectSex == SEX_MALE ? m_pDevaManAvatar : m_pDevaWomanAvatar;
|
||
break;
|
||
}
|
||
case GCLAN_ASURA:
|
||
{
|
||
return m_nSelectSex == SEX_MALE ? m_pAsuraManAvatar : m_pAsuraWomanAvatar;
|
||
break;
|
||
}
|
||
}
|
||
return NULL;
|
||
}
|
||
|
||
bool SGameRenewalLobby::Process( DWORD time, unsigned long uProcessBitVector )
|
||
{
|
||
if( GetGameRef() == STAGE_END || GetGameRef() == STAGE_NOTHING ) return true;
|
||
|
||
m_dwTime = time;
|
||
|
||
if( m_dwBlendStartTime != 0 )
|
||
{
|
||
if( m_dwTime - m_dwBlendStartTime > 1000 )
|
||
{
|
||
m_dwBlendStartTime = 0;
|
||
m_BlendSpritePrimitive.SetVisibility( 0.0f );
|
||
}
|
||
else
|
||
{
|
||
float fValue = 1.f-(m_dwTime - m_dwBlendStartTime)/1000.f;
|
||
m_BlendSpritePrimitive.SetVisibility( fValue );
|
||
}
|
||
}
|
||
|
||
if( m_pAuthConn && m_pRecvQueue )
|
||
{
|
||
if( m_pAuthConn->IsReadable() || (m_pRecvQueue->Size() >= sizeof( TS_MESSAGE )) )
|
||
m_pGameMng->onReadEvent( m_pAuthConn, m_pRecvQueue );
|
||
|
||
//인증서버와 연결이 끊길 시 게임 종료 2009.09.03 sfreer
|
||
//다시하자 =_=...
|
||
|
||
if( GetCurState() == GAMELOGIN_SERVERSELECT_ON && m_TryConnectAuthServer && !m_pAuthConn->IsConnected() )
|
||
{
|
||
m_DisconnectAuthServer = true;
|
||
m_TryConnectAuthServer = false;
|
||
|
||
SetToLogOut();
|
||
SetToLoginState();
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, SYS_MSG_SERVER_DISCONNECT ) );
|
||
//m_TryConnectAuthServer = false;
|
||
//OpenMessageBox( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_OK, SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, false, SYS_MSG_SERVER_DISCONNECT );
|
||
}
|
||
}
|
||
|
||
if( m_bUseCharacterSelect )
|
||
{
|
||
KTextureManager::GetManager()->ReloadRes( true );
|
||
|
||
// 인터페이스 새로 생성
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_RELOAD(false) );
|
||
|
||
m_ThreadManager.StartThread( "SGameLobby", 1 );
|
||
m_ThreadManager.Push( m_pNoticeReceiver );
|
||
|
||
//캐릭터 요청 상태
|
||
m_dwStartCharSelectListWaitTime = m_dwTime;
|
||
m_nAppointmentCharSelectIndex = 0;
|
||
SetCurState( GAMELOGIN_BACK_CHARSELECT_TO_GAME );
|
||
|
||
RequestCharacterList();
|
||
m_bUseCharacterSelect = false;
|
||
SGameObject::Activate();
|
||
|
||
}
|
||
|
||
_LOGIN_STATE State = GetCurState();
|
||
if( State == GAMELOGIN_SERVERSELECT_ON || State == GAMELOGIN_PREPARE_CHARSELECT )
|
||
g_bServerListFocus = true;
|
||
else g_bServerListFocus = false;
|
||
|
||
if( State == GAMELOGIN_SERVERSELECT_ON || State == GAMELOGIN_PREPARE_CHARSELECT ||
|
||
State == GAMELOGIN_SERVERSELECT || State == GAMELOGIN_GAMESERVER_LOGIN )
|
||
g_bServerListSeen = true;
|
||
else g_bServerListSeen = false;
|
||
|
||
g_bCharListSeen = State == GAMELOGIN_CHARSELECT ? true : false;
|
||
|
||
switch( State )
|
||
{
|
||
case GAMELOGIN_CREATECHAR_RACE_SELECT:
|
||
{
|
||
|
||
if(m_ClanSelect_Asura_RollOver)
|
||
{
|
||
if( m_BgScene_ClanSelect_Asura->getLocalVisibility() < 1)
|
||
m_BgScene_ClanSelect_Asura->setLocalVisibility( m_BgScene_ClanSelect_Asura->getLocalVisibility() + 0.02f);
|
||
|
||
if( m_BgScene_ClanSelect_Asura->getLocalVisibility() > 1)
|
||
m_BgScene_ClanSelect_Asura->setLocalVisibility( 1 );
|
||
}
|
||
else
|
||
{
|
||
if( m_BgScene_ClanSelect_Asura->getLocalVisibility() > 0)
|
||
m_BgScene_ClanSelect_Asura->setLocalVisibility( m_BgScene_ClanSelect_Asura->getLocalVisibility() - 0.02f);
|
||
|
||
if( m_BgScene_ClanSelect_Asura->getLocalVisibility() < 0)
|
||
m_BgScene_ClanSelect_Asura->setLocalVisibility( 0 );
|
||
|
||
}
|
||
|
||
if(m_ClanSelect_Deva_RollOver)
|
||
{
|
||
if( m_BgScene_ClanSelect_Deva->getLocalVisibility() < 1)
|
||
m_BgScene_ClanSelect_Deva->setLocalVisibility( m_BgScene_ClanSelect_Deva->getLocalVisibility() + 0.02f);
|
||
|
||
if( m_BgScene_ClanSelect_Deva->getLocalVisibility() > 1)
|
||
m_BgScene_ClanSelect_Deva->setLocalVisibility( 1 );
|
||
}
|
||
else
|
||
{
|
||
if( m_BgScene_ClanSelect_Deva->getLocalVisibility() > 0)
|
||
m_BgScene_ClanSelect_Deva->setLocalVisibility( m_BgScene_ClanSelect_Deva->getLocalVisibility() - 0.02f);
|
||
|
||
if( m_BgScene_ClanSelect_Deva->getLocalVisibility() < 0)
|
||
m_BgScene_ClanSelect_Deva->setLocalVisibility( 0 );
|
||
}
|
||
|
||
if(m_ClanSelect_Gaia_RollOver)
|
||
{
|
||
if( m_BgScene_ClanSelect_Gaia->getLocalVisibility() < 1)
|
||
m_BgScene_ClanSelect_Gaia->setLocalVisibility( m_BgScene_ClanSelect_Gaia->getLocalVisibility() + 0.02f);
|
||
|
||
if( m_BgScene_ClanSelect_Gaia->getLocalVisibility() > 1)
|
||
m_BgScene_ClanSelect_Gaia->setLocalVisibility( 1 );
|
||
}
|
||
else
|
||
{
|
||
if( m_BgScene_ClanSelect_Gaia->getLocalVisibility() > 0)
|
||
m_BgScene_ClanSelect_Gaia->setLocalVisibility( m_BgScene_ClanSelect_Gaia->getLocalVisibility() - 0.02f);
|
||
|
||
if( m_BgScene_ClanSelect_Gaia->getLocalVisibility() < 0)
|
||
m_BgScene_ClanSelect_Gaia->setLocalVisibility( 0 );
|
||
}
|
||
|
||
|
||
|
||
}
|
||
break;
|
||
case GAMELOGIN_UNINITIALIZED:
|
||
{
|
||
SGameObject::Activate();
|
||
|
||
//게임 등급
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GAME_RATING ) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GAME_RATING_18ONLY ) );
|
||
|
||
|
||
//SetToPrepareLoginState();
|
||
//SetToIntroState();
|
||
SetToLoginState();
|
||
|
||
m_ThreadManager.StartThread( "SGameLobby", 1 );
|
||
m_ThreadManager.Push( m_pNoticeReceiver );
|
||
|
||
if( m_pSky ) m_pSky->Process( m_dwTime );
|
||
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_DEVELOPERS_LOGIN:
|
||
if( m_pSky ) m_pSky->Process( m_dwTime );
|
||
break;
|
||
|
||
case GAMELOGIN_INTRO:
|
||
{
|
||
//mLastTime
|
||
/*if(m_IntroScene == 0)
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
else*/
|
||
{
|
||
}
|
||
//else if(!m_IntroScene->isActivated())//&& m_IntroScene->getLastTime() > 0)
|
||
//SetToLoginState();*/
|
||
if(m_IntroScene && m_IntroScene_Navislamia &&m_IntroScene_GoldenMonarch)
|
||
{
|
||
if(!m_IntroScene->isActivated() && !m_IntroScene_Navislamia->isActivated() && !m_IntroScene_GoldenMonarch->isActivated() )
|
||
SetToLoginState();
|
||
}
|
||
}
|
||
break;
|
||
|
||
|
||
case GAMELOGIN_PREPARE_SERVERSELECT:
|
||
{
|
||
SetToServerSelectState();
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_SERVERSELECT:
|
||
case GAMELOGIN_SERVERSELECT_ON:
|
||
case GAMELOGIN_GAMESERVER_LOGIN:
|
||
{
|
||
if( m_dwServerWaitStartTime && m_dwServerWaitTime )
|
||
{
|
||
//대기가 끝났으면, 캐릭터 선택 화면으로
|
||
if( m_dwTime - m_dwServerWaitStartTime > m_dwServerWaitTime )
|
||
{
|
||
m_pGameMng->ConnectToServer( m_SelectServer_IP.c_str(), m_SelectServer_PORT ); //게임서버에 접속
|
||
LoginAccount( g_UserInfo.GetAccountName(), m_one_time_key ); //TS_CS_ACCOUNT_WITH_AUTH 를 통해 인증
|
||
|
||
_oprint( "Waiting ended!\n" );
|
||
m_dwServerWaitStartTime = 0;
|
||
m_dwServerWaitTime = 0;
|
||
m_one_time_key = 0;
|
||
}
|
||
else
|
||
{
|
||
//MSG 박스 갱신
|
||
if( m_dwServerWaitStartTime && m_dwServerWaitTime )
|
||
{
|
||
DWORD nTime = m_dwServerWaitTime - (m_dwTime - m_dwServerWaitStartTime);
|
||
if( (nTime - m_dwMsgSendTime) >= 1000 )
|
||
{
|
||
m_dwMsgSendTime = nTime;
|
||
|
||
std::string strMsg;
|
||
GetPendingTimeString( nTime, strMsg );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UPDATE_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_LOGINWAITING, strMsg.c_str() ) );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CHARSELECT:
|
||
{
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount )
|
||
{
|
||
ProcessRaceBackGround_N_Avatar(m_nSelectChrRace, m_Avatars[ m_nSelectedCharIndex ].pAvatar);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CREATECHAR_SUCCESS:
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
ProcessRaceBackGround_N_Avatar( m_nSelectCustomRace, pSelectAvatar, m_pCreateSuccessEffect );
|
||
|
||
if( !m_pCreateSuccessEffect || !m_pCreateSuccessEffect->IsPlaying() )
|
||
{
|
||
SetToPrepareCharSelectState(true);
|
||
m_bCreating = false;
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CREATECHAR_CUSTOMIZING:
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
ProcessRaceBackGround_N_Avatar(m_nSelectCustomRace, pSelectAvatar);
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CHARSELECT_WAIT_TIME:
|
||
{
|
||
if( m_dwStartCharSelectListWaitTime - m_dwTime > 2000 )
|
||
{
|
||
SetToCharSelectState( m_nAppointmentCharSelectIndex );
|
||
m_nAppointmentCharSelectIndex = -1;
|
||
m_dwStartCharSelectListWaitTime = 0;
|
||
}
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount )
|
||
{
|
||
ProcessRaceBackGround_N_Avatar(m_nSelectChrRace, m_Avatars[ m_nSelectedCharIndex ].pAvatar);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CREDITS:
|
||
case GAMELOGIN_CREDITS2:
|
||
case GAMELOGIN_CREDITS3:
|
||
case GAMELOGIN_CREDITS4:
|
||
{
|
||
if(m_CreditsScene && m_CreditsScene2 && m_CreditsScene3 && m_CreditsScene4 )
|
||
{
|
||
if( !m_CreditsScene->isActivated() &&
|
||
!m_CreditsScene2->isActivated() &&
|
||
!m_CreditsScene3->isActivated() &&
|
||
!m_CreditsScene4->isActivated())
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_BACKTO_LOGOUT:
|
||
{
|
||
}
|
||
break;
|
||
}
|
||
|
||
if( m_pSceneMgr )
|
||
m_pSceneMgr->tick( m_dwTime );
|
||
if( m_pCharaterBgSceneMgr )
|
||
m_pCharaterBgSceneMgr->tick( m_dwTime);
|
||
|
||
|
||
if( NULL != m_pNoticeReceiver )
|
||
{
|
||
if( m_pNoticeReceiver->IsFinished() )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SET_NOTICEWND( m_pNoticeReceiver->GetNotice().c_str() ) );
|
||
SAFE_DELETE( m_pNoticeReceiver );
|
||
}
|
||
}
|
||
|
||
|
||
return true;
|
||
}
|
||
|
||
|
||
void SGameRenewalLobby::ProcessRaceBackGround_N_Avatar( int nRace, SAvatarSelector* pSelectAvatar, KSeqModel* pEffect/*=NULL*/ )
|
||
{
|
||
if( GetGameRef() == STAGE_END || GetGameRef() == STAGE_NOTHING ) return;
|
||
|
||
if( m_pSky ) m_pSky->Process( m_dwTime );
|
||
|
||
KSeqForm* pCamera = GetRaceCamera( nRace );
|
||
if( pCamera )
|
||
pCamera->Process( m_dwTime );
|
||
|
||
KSeqForm* pNX3Obj = GetRaceNX3obj( nRace );
|
||
if( pNX3Obj )
|
||
pNX3Obj->Process( m_dwTime );
|
||
|
||
if( nRace == GCLAN_ASURA )
|
||
{
|
||
for( int i(0); i < c_nAsuraNX3EffectMaxPos; ++ i )
|
||
{
|
||
if( m_pAsuraNX3DffectProp[i] )
|
||
m_pAsuraNX3DffectProp[i]->Process(m_dwTime);
|
||
}
|
||
}
|
||
|
||
if( pSelectAvatar )
|
||
{
|
||
if( m_bRatateL || m_bRatateR )
|
||
RotationAvatar_Z( pSelectAvatar, m_bRatateL );
|
||
|
||
if( m_bCreateCharSuccess )
|
||
{
|
||
if( !pSelectAvatar->IsPlaying() )
|
||
{
|
||
pSelectAvatar->Ani_Default();
|
||
m_bCreateCharSuccess = false;
|
||
}
|
||
}
|
||
|
||
pSelectAvatar->Process( m_dwTime );
|
||
|
||
KSeqForm* pCamera = GetRaceCamera( nRace );
|
||
if( pCamera ) CheckCamera( pCamera );
|
||
|
||
if( pEffect )
|
||
pEffect->Process( m_dwTime );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::ProcessAvatars( DWORD dwTime )
|
||
{
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount )
|
||
{
|
||
SAvatarSelector* pAvatar = m_Avatars[ m_nSelectedCharIndex ].pAvatar;
|
||
if( pAvatar ) pAvatar->Process( dwTime );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::SetAvatarSelectStart()
|
||
{
|
||
m_bUseCharacterSelect = true;
|
||
//m_bIncrease = true;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_OPEN_UPDATE( true ) );
|
||
}
|
||
|
||
void SGameRenewalLobby::Bot_Accept( int nSelect, const char * pName )
|
||
{
|
||
SDEBUGLOG("SGameRenewalLobby::Bot_Accept() - fucntion begin");
|
||
|
||
SetGameRef( STAGE_END );
|
||
RemoveModelFiles();
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::Bot_Accept() - fucntion end");
|
||
|
||
}
|
||
|
||
void SGameRenewalLobby::SetCurState( _LOGIN_STATE state )
|
||
{
|
||
m_CurrentState = state;
|
||
_oprint( "SGameLogin::SetCurState [%d] : %s\n", state, pLOGIN_STATE[state] );
|
||
}
|
||
|
||
void SGameRenewalLobby::AuthPendMessage( const TS_MESSAGE * pMessage )
|
||
{
|
||
if( m_pGameMng )
|
||
m_pGameMng->ConnPendMessage( m_pAuthConn, pMessage );
|
||
}
|
||
|
||
void SGameRenewalLobby::LoginAccount( const char* szAccount, __int64 & one_time_key )
|
||
{
|
||
::LoginAccount( this, szAccount, one_time_key );
|
||
}
|
||
|
||
void SGameRenewalLobby::RotationAvatar_Z( SAvatarSelector* pAvatar, bool bRatateL )
|
||
{
|
||
if( pAvatar == NULL ) return;
|
||
|
||
if( bRatateL ) //pAvatar->AvatarRotate( 1.f*K3D_PI/180.f, !bRatateL );
|
||
pAvatar->AvatarRotate( 1.f*K3D_PI/180.f, false );
|
||
else pAvatar->AvatarRotate( 1.f*K3D_PI/180.f, true );
|
||
|
||
}
|
||
|
||
void SGameRenewalLobby::ChangeCharacterBG( int nRace )
|
||
{
|
||
|
||
m_Bg_Deva->activate(false);
|
||
m_Bg_Asura->activate(false);
|
||
m_Bg_Gaia->activate(false);
|
||
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_GAIA: m_Bg_Gaia->activate(); break;
|
||
case GCLAN_DEVA: m_Bg_Deva->activate(); break;
|
||
case GCLAN_ASURA: m_Bg_Asura->activate(); break;
|
||
}
|
||
|
||
}
|
||
|
||
/*
|
||
void SGameRenewalLobby::ChangeQJTV( int nRace )
|
||
{
|
||
std::string strMoviewName;
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_GAIA: strMoviewName = szBG_Gaia; break;
|
||
case GCLAN_DEVA: strMoviewName = szBG_Deva; break;
|
||
case GCLAN_ASURA: strMoviewName = szBG_Asura; break;
|
||
}
|
||
m_pMuitiQJTV->SetCrrMovie( strMoviewName.c_str() );
|
||
m_pMuitiQJTV->SetState( QJTV::STARTPLAY );
|
||
}
|
||
*/
|
||
|
||
void SGameRenewalLobby::AvatarSelect( int nSelectIndex/* = (-1)*/ )
|
||
{
|
||
if( nSelectIndex < 0 )
|
||
{
|
||
g_UserInfo.SetClassName("");
|
||
g_UserInfo.SetLevel(0);
|
||
}
|
||
|
||
if( m_nCharacterCount == 0 ) return;
|
||
|
||
// Disable character selection during camera zoom in/out animation to avoid jerky scene transitions
|
||
if( IsCameraZooming( m_nSelectChrRace ) )
|
||
return;
|
||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
if( m_nSelectChrRace != m_nSelectCustomRace ||
|
||
(-1) <= nSelectIndex && nSelectIndex < m_nCharacterCount && m_nSelectedCharIndex != nSelectIndex )
|
||
{
|
||
// Use the existing one
|
||
if( (-1) != m_nSelectedCharIndex )
|
||
{
|
||
m_Avatars[ m_nSelectedCharIndex ].pAvatar->Ani_Default();
|
||
}
|
||
|
||
if( nSelectIndex >= 0 )
|
||
{
|
||
int nRace = m_Avatars[ nSelectIndex ].pAvatar->GetRace();
|
||
K3DVector vAvatarPos;
|
||
GetRaceEventPos(nRace, vAvatarPos);
|
||
m_Avatars[nSelectIndex].pAvatar->AvatarRotate(c_fInitRotate, false, true);
|
||
|
||
if( m_nSelectedCharIndex != -1 )
|
||
{
|
||
// Create previous frame
|
||
RenderRaceBackGround_N_Avatar(m_pViewPort, m_pChildViewPort[0], m_nSelectChrRace, m_Avatars[ m_nSelectedCharIndex ].pAvatar);
|
||
m_pViewPort->Render( m_spBlendSource, 0, true );
|
||
|
||
m_dwBlendStartTime = m_dwTime;
|
||
m_BlendSpritePrimitive.SetVisibility( 1.0f );
|
||
}
|
||
|
||
m_nSelectedCharIndex = nSelectIndex;
|
||
m_nSelectChrRace = nRace;
|
||
//GetRaceIndex(nRace) -> 안에서 이미 0, c_nMaxRace사이의 값으로 옳바른 인덱스를 return 해준다.
|
||
ChangeCharacterBG( nRace );
|
||
// PlayRaceSound( nRace );
|
||
|
||
//라이트.. 카메라 변경
|
||
LobbySetforGameRes( GetRaceOptionFile(nRace) );
|
||
// 2010.04.22 - prodongi
|
||
// GetDefaultTextureResourceDB().SetDecoIndex( m_Avatars[ m_nSelectedCharIndex ].pAvatar->GetDecoIndex() );
|
||
GetSelectedAvatarInfo().setDecoIndex( m_Avatars[ m_nSelectedCharIndex ].pAvatar->GetDecoIndex() );
|
||
|
||
// Setting hair color index&color
|
||
GetSelectedAvatarInfo().setHairColorIndex(m_Avatars[ m_nSelectedCharIndex ].pAvatar->GetHairColorIndex());
|
||
DWORD HairColorRGBValue = m_Avatars[m_nSelectedCharIndex].pAvatar->GetHairColorRGB();// &0x00FFFFFF;
|
||
_oprint("HairColorRGBValue: %u\n", HairColorRGBValue);
|
||
GetSelectedAvatarInfo().setHairColorRgb( HairColorRGBValue );
|
||
// 2010.05.20 - prodongi
|
||
GetSelectedAvatarInfo().setHideEquipInfo(m_Avatars[m_nSelectedCharIndex].pAvatar->getHideEquipInfo());
|
||
}
|
||
|
||
//새로 선택 된 것
|
||
if( (-1) != m_nSelectedCharIndex )
|
||
{
|
||
g_UserInfo.SetLevel( m_Avatars[ m_nSelectedCharIndex ].pAvatar->GetLevel() );
|
||
int nJobID = m_Avatars[ m_nSelectedCharIndex ].pAvatar->GetJobID();
|
||
if( nJobID >= 0 ) g_UserInfo.SetClassName( GetJobDB().GetJobName( nJobID ) );
|
||
else g_UserInfo.SetClassName( "" );
|
||
|
||
RefreshCharNameWindow();
|
||
}
|
||
|
||
KSeqForm* pCamera = GetRaceCamera( m_nSelectChrRace );
|
||
if( pCamera )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ON ) );
|
||
|
||
pCamera->PlayAnimation( m_dwTime, pCamAniKey[m_nNewCameraIndex], SEQTYPE_LOOP );
|
||
if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOMOUT )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_IN_ANI ) );
|
||
}
|
||
else if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOM )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOM( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_OUT_ANI ) );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
bool SGameRenewalLobby::IsCameraZooming( int nRace, int nCameraIndex/*-1*/ )
|
||
{
|
||
KSeqForm* pCamera = GetRaceCamera( nRace );
|
||
if( pCamera && pCamera->IsPlaying() )
|
||
{
|
||
if( m_nNewCameraIndex == nCameraIndex )
|
||
return true;
|
||
else if( m_nNewCameraIndex == nCameraIndex )
|
||
return true;
|
||
else if( nCameraIndex == -1 )
|
||
{
|
||
if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOMING || m_nNewCameraIndex == LOBBY_CAMERA_ZOOMING_OUT )
|
||
return true;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
void SGameRenewalLobby::CreateNewAvatar( const char* szName )
|
||
{
|
||
::CreateNewAvatar( this, szName, m_pNewAvatar );
|
||
}
|
||
|
||
void SGameRenewalLobby::_gotoAccount()
|
||
{
|
||
if( m_CurrentState != GAMELOGIN_SERVERSELECT_ON &&
|
||
m_CurrentState != GAMELOGIN_PREPARE_CHARSELECT &&
|
||
m_CurrentState != GAMELOGIN_GAMESERVER_LOGIN ) return; //서버응답이 와야 로그인으로 갈 수 있다.
|
||
//창 닫기
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERLIST, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERMENU, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERTEXT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE, false ) );
|
||
|
||
SetOtherNavigateClose( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARNAMELIST, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SELECTCHAR_INFO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT, false) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE01, false ) );
|
||
|
||
////로그 아웃 처리임.
|
||
SetToLogOut();
|
||
SetToLoginState();
|
||
|
||
m_dwServerWaitTime = 0;
|
||
m_dwServerWaitStartTime = 0;
|
||
m_one_time_key = 0;
|
||
}
|
||
|
||
void SGameRenewalLobby::RefreshCharNameWindow()
|
||
{
|
||
for ( int n( 0 ); n < GameRule::nMaxCharactersPerAccount; ++n )
|
||
{
|
||
if( n < m_nCharacterCount )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_CHARLIST_SELECTEDINFO
|
||
( n
|
||
, m_Avatars[n].pAvatar->GetLevel()
|
||
, m_Avatars[n].pAvatar->GetJobLevel()
|
||
, m_Avatars[n].pAvatar->GetJobID()
|
||
, m_Avatars[n].pAvatar->GetName()
|
||
, (n == m_nSelectedCharIndex) ) );
|
||
}
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_CHARLIST_SELECTEDINFO( n ) );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::GameStart( const char* szName, int nRace )
|
||
{
|
||
// m_pGameMng->StartSound( "ui_click_select01.wav" );
|
||
|
||
SDEBUGLOG("SGameRenewalLobby::GameStart - fucntion begin");
|
||
SDEBUGLOG("name[%s] race[%d]", szName, nRace);
|
||
|
||
assert( _CrtCheckMemory( ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECT ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARNAMELIST ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SELECTCHAR_INFO ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00 ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_TITLE_MAIN, "refresh")); // 2012. 6. 18 - marine 호칭리스트 리셋
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE01 ) );
|
||
|
||
SDEBUGLOG("completed - lobby UI Hide ");
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_OPEN_UPDATE( false ) );
|
||
|
||
SDEBUGLOG("completed - SIMSG_UI_OPEN_UPDATE");
|
||
|
||
CharacterLogin( szName, nRace );
|
||
|
||
SDEBUGLOG("completed - CharacterLogin");
|
||
|
||
SetGameRef( STAGE_END ); // 다음 게임으로 ...
|
||
|
||
SDEBUGLOG("completed - SetGameRef");
|
||
|
||
NX3LoadPack::SetTextureLevel( m_nOldResourceQual );
|
||
KTextureManager::GetManager()->SetMipMapBiasLevel( m_nOldMipBias );
|
||
|
||
SDEBUGLOG("completed - Texture setting");
|
||
// GetGameOption().SetTextureMipBias(m_nOldMipBias);
|
||
|
||
RemoveModelFiles();
|
||
|
||
SDEBUGLOG("completed - RemoveModelFiles");
|
||
|
||
//유저 해상도 변경
|
||
/*
|
||
KSize sizResolution;
|
||
int nWidth = GetGameOption().GetResolution_Width();
|
||
int nHeight = GetGameOption().GetResolution_Height();
|
||
sizResolution = KSize(nWidth, nHeight);
|
||
|
||
if( m_pGameMng ) m_pGameMng->SetResolution( nWidth, nHeight );
|
||
*/
|
||
|
||
m_strCrrBGM = "";
|
||
//m_pMSoundMgr->StopAllSound();
|
||
m_pMSoundMgr->StopMusic();
|
||
m_pMSoundMgr->SwapPlayBGM( "", 500, 500, 100, false );
|
||
|
||
SDEBUGLOG("completed - StopMusic");
|
||
|
||
//mSceneMgr.milesSoundMgr().StopBgm();
|
||
//mSceneMgr.milesSoundMgr().StopMusic();
|
||
|
||
m_pGameMng->SetShowLoadingWnd( true );
|
||
//m_pGameMng->UpdateLoadingProgress(0.0f);
|
||
m_pGameMng->InitLoadingBar();
|
||
|
||
SDEBUGLOG("completed - InitLoadingBar");
|
||
SDEBUGLOG("SGameRenewalLobby::GameStart - fucntion end");
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToCreateCharSuccess()
|
||
{
|
||
SetCurState( GAMELOGIN_CREATECHAR_SUCCESS );
|
||
|
||
SAvatarSelector* pAvatar = GetCrrCustomizingAvatar();
|
||
if( !pAvatar ) return;
|
||
|
||
if( m_pCreateSuccessEffect )
|
||
{
|
||
const K3DVector vPos = pAvatar->GetTransform().GetPosVector();
|
||
m_pCreateSuccessEffect->SetPosition( vPos );
|
||
m_pCreateSuccessEffect->PlayAnimation( m_dwTime, "effect_start" );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToPrepareCharSelectState( bool bReqCharList )
|
||
{
|
||
_oprint( "Character Select Ready Mode\n" );
|
||
|
||
//m_BgScene_PanelUp->play(false);
|
||
//m_BgScene_PanelDown->play(false);
|
||
|
||
m_BeforeCharListState = m_CurrentState;
|
||
SetCurState( GAMELOGIN_PREPARE_CHARSELECT );
|
||
|
||
m_old_pos = K3DVector( 8.f, -100.f, 400.f );
|
||
m_new_pos = K3DVector( 8.f, -100.f, 10.f );
|
||
m_bLightProcess = true;
|
||
m_dwLightStartTime = m_dwTime;
|
||
|
||
m_strAccount = g_UserInfo.GetAccountName(); //저장 하고 있는 것으로 설정
|
||
|
||
if( bReqCharList )
|
||
{
|
||
RequestCharacterList();
|
||
SGameObject::Activate();
|
||
}
|
||
else
|
||
{
|
||
m_dwStartCharSelectListWaitTime = m_dwTime;
|
||
m_nAppointmentCharSelectIndex = 0;
|
||
SetCurState( GAMELOGIN_CHARSELECT_WAIT_TIME );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToServerSelectStateOn()
|
||
{
|
||
_oprint( "서버 선택 가능\n" );
|
||
SetCurState( GAMELOGIN_SERVERSELECT_ON );
|
||
|
||
if( m_bIsAgree )
|
||
{
|
||
|
||
//"http://interfacelift.com/dl/wallpaper/00660_splash_480x272.jpg"
|
||
// std::string strURL = "http://www.rappelz.com/community/screen.aspx?menu=read&no=4495";
|
||
//strURL 로 길드 관리 웹페이지 열기
|
||
//724, 543
|
||
// SetOtherNavigate( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, strURL.c_str(), 512, 384 );
|
||
// SetOtherNavigateMove( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, 100, 245 );
|
||
|
||
|
||
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERTEXT, true ) );
|
||
|
||
if(GameRule::GetCurrentLocalBitSet() == GameRule::LOCAL_BITSET::RU)
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, true ) );
|
||
}
|
||
else if(GetLocaleOption().GetValueString("NOTICE_URL",NULL) != NULL )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERMENU, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, true ) );
|
||
}
|
||
else
|
||
{
|
||
if(m_vStrServerURLIndex>=0)
|
||
{
|
||
int nResolutionW = KUIWndManager::GetResolution().cx;
|
||
int blankwidth = (nResolutionW - (549 + 296 + 5))/2;
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, true) );
|
||
|
||
SetOtherNavigate( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, m_vStrServerURL[m_vStrServerURLIndex].c_str(), 500, 400 );
|
||
SetOtherNavigateMove( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, 25 + blankwidth , KUIWndManager::GetResolution().cy/2 - 463/2 + 45);
|
||
}
|
||
}
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERLIST, true ) );
|
||
|
||
|
||
}
|
||
else
|
||
{
|
||
//라이센스 창 OPEN
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE, true ) );
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToPrepareServerSelectState()
|
||
{
|
||
_oprint( "서버선택 준비 모드\n" );
|
||
SetCurState( GAMELOGIN_PREPARE_SERVERSELECT );
|
||
|
||
m_BgScene_ClanDesc_Asura->activate(false);
|
||
m_BgScene_ClanDesc_Deva->activate(false);
|
||
m_BgScene_ClanDesc_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Asura->activate(false);
|
||
m_BgScene_ClanSelect_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Deva->activate(false);
|
||
m_BgScene_ClanSelect->activate(false);
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_LOGO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_PUBLISHER, false ) ); // sonador #2.3.3.4 (국내) copy rights 변경
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBTITLE, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_COPYRIGHT_LOGO, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_GAMERATING, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_SUBMENU, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LOGIN_TEXT, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
|
||
|
||
m_old_pos = K3DVector( 8.f, -100.f, 10.f );
|
||
m_new_pos = K3DVector( 8.f, -100.f, 400.f );
|
||
m_bLightProcess = true;
|
||
m_dwLightStartTime = m_dwTime;
|
||
}
|
||
|
||
void SGameRenewalLobby::CharacterLogin( const char* szName, int nRace )
|
||
{
|
||
::CharacterLogin( this, szName, nRace );
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToLoginStateOff()
|
||
{
|
||
_oprint( "로긴 모드 결과 대기\n" );
|
||
SetCurState( GAMELOGIN_LOGIN_OFF );
|
||
|
||
m_BgScene->activate();
|
||
m_BgScene->play();
|
||
m_BgScene_Pane_Type02->activate();
|
||
m_BgScene_Pane_Type02->play();
|
||
m_BgScene_Pane_Type03->activate(false);
|
||
m_BgScene_Pane_Type03_right->activate(false);
|
||
|
||
m_BgScene_ClanDesc_Asura->activate(false);
|
||
m_BgScene_ClanDesc_Deva->activate(false);
|
||
m_BgScene_ClanDesc_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Asura->activate(false);
|
||
m_BgScene_ClanSelect_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Deva->activate(false);
|
||
m_BgScene_ClanSelect->activate(false);
|
||
|
||
m_TryConnectAuthServer = true;
|
||
|
||
|
||
//m_SubTitleScene->activate(); // sonador #2.1.19.1
|
||
//m_SubTitleScene->play();
|
||
//m_LogoScene->activate();
|
||
//m_LogoScene->play();
|
||
|
||
m_nSelectRaceBGM = -1;
|
||
m_nSelectRaceEffectSound = -1;
|
||
}
|
||
|
||
void SGameRenewalLobby::SetToBackToCharSelectState()
|
||
{
|
||
_oprint( "Mode for completing creation\n" );
|
||
SetCurState( GAMELOGIN_BACKTO_CHARSELECT );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, false) );
|
||
}
|
||
|
||
void SGameRenewalLobby::DeleteAvatar( const char* szName, const char* szSecurityNo )
|
||
{
|
||
::DeleteAvatar( this, szName, szSecurityNo );
|
||
}
|
||
|
||
|
||
void SGameRenewalLobby::OnMsgResult( SGameMessage* pGameMsg )
|
||
{
|
||
_oprint( ">>>MSG_AC_RESULT : %d\n", GetCurState() );
|
||
|
||
SMSG_AC_RESULT* pMsgResult = (SMSG_AC_RESULT*)pGameMsg;
|
||
|
||
switch( m_CurrentState )
|
||
{
|
||
case GAMELOGIN_LOGIN_OFF :
|
||
{
|
||
if( pMsgResult->request_msg_id == TM_CA_ACCOUNT )
|
||
{
|
||
if( pMsgResult->result == RESULT_SUCCESS )
|
||
{
|
||
m_invalidPasswordCount = 0; // 로그인 하면 에러 카운트 0으로 초기화
|
||
|
||
enum
|
||
{
|
||
FLAG_EULA = 1 << 0, //eula 창
|
||
FLAG_MSG = 1 << 1, //경고 창
|
||
};
|
||
|
||
if( pMsgResult->value & FLAG_EULA )
|
||
m_bIsAgree = true;//0 약관 동의 안함, 1 약관 동의
|
||
else
|
||
m_bIsAgree = false;
|
||
|
||
m_bIsAgree = true; // by Testors, 임시
|
||
|
||
if( /*true ||*/ pMsgResult->value & FLAG_MSG )
|
||
{
|
||
//'너 경고 당했으니까 조심해라.' 메세지 박스 띄우기 작업
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_BAD_USER_WARNING, S(945) ) );
|
||
}
|
||
else
|
||
{
|
||
//인증 성공
|
||
TS_CA_SERVER_LIST msg_server_list;
|
||
AuthPendMessage( &msg_server_list );
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if( ENV().IsExist( "web_login" ) && pMsgResult->result == RESULT_ALREADY_EXIST )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_ALREADYEXIST, S(110) ) );
|
||
break;
|
||
}
|
||
|
||
//인증 실패,//연결 종료
|
||
std::string strErr;
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_NOT_EXIST: //101 ID가 존재하지 않거나 잘못된 비밀번호 입니다. Rappler Creer의 회원이 아니면 회원가입을 해주십시오.
|
||
{
|
||
XStringUtil::Format( strErr, S(101) ); ///*"인증 실패 : [%d]"*/, pMsgResult->result );
|
||
|
||
++m_invalidPasswordCount; // 에러 카운트 증가
|
||
|
||
break;
|
||
}
|
||
case RESULT_NOT_ACTABLE: // sonador 1.10.2 인증실패 메시지 추가
|
||
{
|
||
XStringUtil::Format( strErr, S( SYS_MSG_NETCAFE_MESSAGE01 ) );
|
||
break;
|
||
}
|
||
case RESULT_ACCESS_DENIED:
|
||
{
|
||
XStringUtil::Format( strErr, S(109) ); //해당 계정은 접속이 제한 되어 있습니다.
|
||
break;
|
||
}
|
||
case RESULT_ALREADY_EXIST:
|
||
{
|
||
XStringUtil::Format( strErr, S(110) ); //이미 접속 중인데, 끊겼다
|
||
break;
|
||
}
|
||
case RESULT_NOT_ENOUGH_MONEY:
|
||
{
|
||
XStringUtil::Format( strErr, S(6383) ); //돈이 모자람
|
||
break;
|
||
}
|
||
case RESULT_NOT_ENOUGH_AGE:
|
||
{
|
||
XStringUtil::Format( strErr, S(851) ); //라펠즈는 15세 이상의 유저가 이용하실 수 있습니다.
|
||
break;
|
||
}
|
||
case RESULT_WITHDRAW_WAITING:
|
||
{
|
||
std::string strTime = GetCutTimeString( pMsgResult->value, 1 );
|
||
strErr = SR(120, "#@AccountTime@#", strTime.c_str() );
|
||
break;
|
||
}
|
||
case RESULT_REALNAME_REQUIRED:
|
||
{
|
||
XStringUtil::Format( strErr, S(135) ); //실명 인증 즐
|
||
break;
|
||
}
|
||
|
||
case RESULT_IP_BLOCKED :
|
||
{
|
||
// m_pGameMng->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_IP_BLOCK, true, true, pMsgResult->value ) );
|
||
|
||
SIMSG_REQ_WINDOW_OBJECT reqWndObj( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_IP_BLOCK );
|
||
m_pGameMng->InterfaceMsg( &reqWndObj );
|
||
|
||
if ( reqWndObj.window )
|
||
{
|
||
_CID( updateIPBlockWnd );
|
||
|
||
reqWndObj.window->PerformKV( id_updateIPBlockWnd, KID( "error_code" ), pMsgResult->value );
|
||
}
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_IP_BLOCK, true, true ) );
|
||
|
||
break;
|
||
}
|
||
case RESULT_COOL_TIME:
|
||
{
|
||
XStringUtil::Format( strErr, S(141) ); //여러번 로그인 실패시 30분 혹 하루종일 블럭 당할때 나오는 메시지 2009.06.01. sfreer
|
||
break;
|
||
}
|
||
case RESULT_NOT_ENOUGH_AGE_PERIOD:
|
||
{
|
||
XStringUtil::Format( strErr, S(2935) );
|
||
break;
|
||
}
|
||
case RESULT_WEBZEN_DUPLICATE_ACCOUNT: // 유럽, 미국 웹젠 통합관련 처리
|
||
{
|
||
XStringUtil::Format( strErr, S(186) );
|
||
break;
|
||
}
|
||
case RESULT_WEBZEN_NEED_ACCEPT_EULA: // 웹젠 통합관련 게임 이용 동의 요청
|
||
{
|
||
XStringUtil::Format( strErr, "RESULT_WEBZEN_NEED_ACCEPT_EULA" );
|
||
break;
|
||
}
|
||
|
||
default: // sonador 1.10.2 인증실패 메시지 추가
|
||
{
|
||
XStringUtil::Format( strErr, S( SYS_MSG_NETCAFE_MESSAGE02 ), pMsgResult->result );
|
||
break;
|
||
}
|
||
}
|
||
|
||
// floyd 3.11.1 iMBC 채널링 구현
|
||
if ( ENV().IsExist( "imbclogin" ) )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, strErr.c_str(), false ) );
|
||
}
|
||
else
|
||
{
|
||
if ( !strErr.empty() )
|
||
{
|
||
if( pMsgResult->result == RESULT_WEBZEN_DUPLICATE_ACCOUNT ||
|
||
pMsgResult->result == RESULT_WEBZEN_NEED_ACCEPT_EULA )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL_AND_HTTP_LINK, strErr.c_str(), true ) );
|
||
}
|
||
else
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, strErr.c_str(), true ) );
|
||
}
|
||
}
|
||
|
||
m_pGameMng->ClearDummy(); //인증 실패 했으므로, 로긴 가능 하도록 클리어 더미
|
||
|
||
m_pAuthConn->Close();
|
||
SAFE_DELETE( m_pAuthConn );
|
||
SAFE_DELETE( m_pRecvQueue );
|
||
m_pAuthConn = new XSyncStreamConnection( true, true );
|
||
m_pRecvQueue = IQueue::MakeQueue( 1*1024 );
|
||
|
||
SetCurState( GAMELOGIN_LOGIN );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
pGameMsg->bUse = true;
|
||
}
|
||
|
||
/// 2011.05.20 - prodongi
|
||
void SGameRenewalLobby::OnMsgResultWithString( SGameMessage* pGameMsg )
|
||
{
|
||
_oprint( ">>>MSG_AC_RESULT_WITH_STRING : %d\n", GetCurState() );
|
||
|
||
SMSG_AC_RESULT_WITH_STRING* pMsgResult = (SMSG_AC_RESULT_WITH_STRING*)pGameMsg;
|
||
|
||
switch( m_CurrentState )
|
||
{
|
||
case GAMELOGIN_LOGIN_OFF :
|
||
{
|
||
if( pMsgResult->request_msg_id == TM_CA_ACCOUNT )
|
||
{
|
||
if( pMsgResult->result == RESULT_SUCCESS )
|
||
{
|
||
m_invalidPasswordCount = 0; // 로그인 하면 에러 카운트 0으로 초기화
|
||
|
||
enum
|
||
{
|
||
FLAG_EULA = 1 << 0, //eula 창
|
||
FLAG_MSG = 1 << 1, //경고 창
|
||
};
|
||
|
||
if( pMsgResult->value & FLAG_EULA )
|
||
m_bIsAgree = true;//0 약관 동의 안함, 1 약관 동의
|
||
else
|
||
m_bIsAgree = false;
|
||
|
||
m_bIsAgree = true; // by Testors, 임시
|
||
|
||
if( /*true ||*/ pMsgResult->value & FLAG_MSG )
|
||
{
|
||
//'너 경고 당했으니까 조심해라.' 메세지 박스 띄우기 작업
|
||
if (pMsgResult->str)
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_BAD_USER_WARNING, pMsgResult->str ) );
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_BAD_USER_WARNING, S(945) ) );
|
||
}
|
||
else
|
||
{
|
||
//인증 성공
|
||
TS_CA_SERVER_LIST msg_server_list;
|
||
AuthPendMessage( &msg_server_list );
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if( ENV().IsExist( "web_login" ) && pMsgResult->result == RESULT_ALREADY_EXIST )
|
||
{
|
||
if (pMsgResult->str)
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_ALREADYEXIST, pMsgResult->str ) );
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_ALREADYEXIST, S(110) ) );
|
||
break;
|
||
}
|
||
|
||
//인증 실패,//연결 종료
|
||
std::string strErr;
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_NOT_EXIST: //101 ID가 존재하지 않거나 잘못된 비밀번호 입니다. Rappler Creer의 회원이 아니면 회원가입을 해주십시오.
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str ); ///*"인증 실패 : [%d]"*/, pMsgResult->result );
|
||
else
|
||
XStringUtil::Format( strErr, S(101) ); ///*"인증 실패 : [%d]"*/, pMsgResult->result );
|
||
|
||
++m_invalidPasswordCount; // 에러 카운트 증가
|
||
|
||
break;
|
||
}
|
||
case RESULT_NOT_ACTABLE: // sonador 1.10.2 인증실패 메시지 추가
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S( SYS_MSG_NETCAFE_MESSAGE01 ) );
|
||
break;
|
||
}
|
||
case RESULT_ACCESS_DENIED:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(109) ); //해당 계정은 접속이 제한 되어 있습니다.
|
||
break;
|
||
}
|
||
case RESULT_ALREADY_EXIST:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(110) ); //이미 접속 중인데, 끊겼다
|
||
break;
|
||
}
|
||
case RESULT_NOT_ENOUGH_MONEY:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(6383) ); //돈이 모자람
|
||
break;
|
||
}
|
||
case RESULT_NOT_ENOUGH_AGE:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(851) ); //라펠즈는 15세 이상의 유저가 이용하실 수 있습니다.
|
||
break;
|
||
}
|
||
case RESULT_WITHDRAW_WAITING:
|
||
{
|
||
std::string strTime = GetCutTimeString( pMsgResult->value, 1 );
|
||
strErr = SR(120, "#@AccountTime@#", strTime.c_str() );
|
||
break;
|
||
}
|
||
case RESULT_REALNAME_REQUIRED:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(135) ); //실명 인증 즐
|
||
break;
|
||
}
|
||
|
||
case RESULT_IP_BLOCKED :
|
||
{
|
||
// m_pGameMng->PostMsg( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_IP_BLOCK, true, true, pMsgResult->value ) );
|
||
|
||
SIMSG_REQ_WINDOW_OBJECT reqWndObj( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_IP_BLOCK );
|
||
m_pGameMng->InterfaceMsg( &reqWndObj );
|
||
|
||
if ( reqWndObj.window )
|
||
{
|
||
_CID( updateIPBlockWnd );
|
||
|
||
reqWndObj.window->PerformKV( id_updateIPBlockWnd, KID( "error_code" ), pMsgResult->value );
|
||
}
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_IP_BLOCK, true, true ) );
|
||
|
||
break;
|
||
}
|
||
case RESULT_COOL_TIME:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(141) ); //여러번 로그인 실패시 30분 혹 하루종일 블럭 당할때 나오는 메시지 2009.06.01. sfreer
|
||
break;
|
||
}
|
||
case RESULT_NOT_ENOUGH_AGE_PERIOD:
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(2935) );
|
||
break;
|
||
}
|
||
case RESULT_WEBZEN_DUPLICATE_ACCOUNT: // 유럽, 미국 웹젠 통합관련 처리
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S(186) );
|
||
break;
|
||
}
|
||
case RESULT_WEBZEN_NEED_ACCEPT_EULA: // 웹젠 통합관련 게임 이용 동의 요청
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, "RESULT_WEBZEN_NEED_ACCEPT_EULA" );
|
||
break;
|
||
}
|
||
|
||
default: // sonador 1.10.2 인증실패 메시지 추가
|
||
{
|
||
if (pMsgResult->str)
|
||
XStringUtil::Format( strErr, pMsgResult->str );
|
||
else
|
||
XStringUtil::Format( strErr, S( SYS_MSG_NETCAFE_MESSAGE02 ), pMsgResult->result );
|
||
break;
|
||
}
|
||
}
|
||
|
||
// floyd 3.11.1 iMBC 채널링 구현
|
||
if ( ENV().IsExist( "imbclogin" ) )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, strErr.c_str(), false ) );
|
||
}
|
||
else
|
||
{
|
||
if ( !strErr.empty() )
|
||
{
|
||
if( pMsgResult->result == RESULT_WEBZEN_DUPLICATE_ACCOUNT ||
|
||
pMsgResult->result == RESULT_WEBZEN_NEED_ACCEPT_EULA )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL_AND_HTTP_LINK, strErr.c_str(), true ) );
|
||
}
|
||
else
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, strErr.c_str(), true ) );
|
||
}
|
||
}
|
||
|
||
m_pGameMng->ClearDummy(); //인증 실패 했으므로, 로긴 가능 하도록 클리어 더미
|
||
|
||
m_pAuthConn->Close();
|
||
SAFE_DELETE( m_pAuthConn );
|
||
SAFE_DELETE( m_pRecvQueue );
|
||
m_pAuthConn = new XSyncStreamConnection( true, true );
|
||
m_pRecvQueue = IQueue::MakeQueue( 1*1024 );
|
||
|
||
SetCurState( GAMELOGIN_LOGIN );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
pGameMsg->bUse = true;
|
||
}
|
||
|
||
void SGameRenewalLobby::ProcMsgAtStatic( SGameMessage * pGameMsg )
|
||
{
|
||
SGame::ProcMsgAtStatic(pGameMsg);
|
||
|
||
if( GetGameRef() == SGame::STAGE_END || GetGameRef() == SGame::STAGE_NOTHING )
|
||
{
|
||
return;
|
||
}
|
||
|
||
if( m_pGameMng->IsShowEndingWnd() )
|
||
{
|
||
//m_pGameMng->GameExit();
|
||
switch( pGameMsg->nType )
|
||
{
|
||
case IMSG_HOTKEY_EX:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
SIMSG_HOTKEY_EX* pHotKeyMsg = (SIMSG_HOTKEY_EX*)pGameMsg;
|
||
|
||
if( LOWORD(pHotKeyMsg->wParam ) == VK_ESCAPE )
|
||
{
|
||
m_pGameMng->GameExit();
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
return;
|
||
}
|
||
//m_pGameMng->SetShowLoadingWnd( false );
|
||
|
||
switch( pGameMsg->nType )
|
||
{
|
||
case MSG_SECRET_KEY:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
SMSG_SECRET_KEY* pSecret = static_cast< SMSG_SECRET_KEY* >( pGameMsg );
|
||
|
||
unsigned char buffer[1024];
|
||
size_t nDeSize = 0;
|
||
m_Crypto.DecryptForLocal( pSecret->pEncryptData, pSecret->nEncryptSize, buffer, sizeof( buffer ), &nDeSize );
|
||
|
||
XAES_128_CBC_KEY Key;
|
||
memcpy( Key.byKey, buffer, sizeof( Key.byKey ) );
|
||
memcpy( Key.byIV, buffer+sizeof( Key.byKey ), sizeof( Key.byIV ) );
|
||
|
||
m_Crypto.SetSecretKey( Key );
|
||
|
||
if( m_nAuthType == ACCOUNT_AUTH_IMBC )
|
||
{
|
||
//결과와 인증키를 받아야 함
|
||
TS_CA_IMBC_ACCOUNT msg_account;
|
||
// #2.1.12
|
||
msg_account.account[ GameRule::MAX_ACCOUNT_LEN ] = '\0';
|
||
::strncpy( msg_account.account, g_UserInfo.GetAccountName(), GameRule::MAX_ACCOUNT_LEN - 5 );
|
||
|
||
m_Crypto.EncryptForSecret( m_strTempPass.c_str(), m_strTempPass.size(), msg_account.password, sizeof( msg_account.password ), &msg_account.password_en_len );
|
||
|
||
AuthPendMessage( &msg_account );
|
||
|
||
// m_pGameMng->StartSound( "ui_bgm_antechamber01.wav" );
|
||
|
||
m_pGameMng->GameGuardSendAccount( g_UserInfo.GetAccountName() );
|
||
}
|
||
else if( m_nAuthType == ACCOUNT_AUTH_OTP )
|
||
{
|
||
//결과와 인증키를 받아야 함
|
||
// #2.1.12
|
||
TS_CA_OTP_ACCOUNT msg_account;
|
||
|
||
msg_account.account[ GameRule::MAX_ACCOUNT_LEN ] = '\0';
|
||
::strncpy( msg_account.account, g_UserInfo.GetAccountName(), GameRule::MAX_ACCOUNT_LEN );
|
||
|
||
m_Crypto.EncryptForSecret( m_strTempPass.c_str(), m_strTempPass.size(), msg_account.OTP, sizeof( msg_account.OTP ), &msg_account.otp_en_len );
|
||
|
||
AuthPendMessage( &msg_account );
|
||
|
||
// m_pGameMng->StartSound( "ui_bgm_antechamber01.wav" );
|
||
|
||
m_pGameMng->GameGuardSendAccount( g_UserInfo.GetAccountName() );
|
||
}
|
||
else if( ACCOUNT_AUTH_SID == m_nAuthType )
|
||
{
|
||
// TODO: Remove later everything related to GameXP
|
||
TS_CA_RUSSIA_SID msg_sid;
|
||
std::string strSID = ENV().GetString( "gamexp_sid" );
|
||
if( false == strSID.empty() )
|
||
{
|
||
m_Crypto.EncryptForSecret( strSID.c_str(), strSID.size(), msg_sid.sid, sizeof( msg_sid.sid ), &msg_sid.sid_en_len );
|
||
AuthPendMessage( &msg_sid );
|
||
}
|
||
else
|
||
{
|
||
MessageBox( NULL, "ERROR: _SID is empty...", "Auth Error", MB_OK );
|
||
m_pGameMng->GameExit();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
//결과와 인증키를 받아야 함
|
||
TS_CA_ACCOUNT msg_account;
|
||
|
||
msg_account.account[ GameRule::MAX_ACCOUNT_LEN ] = '\0';
|
||
::strncpy( msg_account.account, g_UserInfo.GetAccountName(), GameRule::MAX_ACCOUNT_LEN );
|
||
|
||
m_Crypto.EncryptForSecret( m_strTempPass.c_str(), m_strTempPass.size(), msg_account.password, sizeof( msg_account.password ), &msg_account.password_en_len );
|
||
|
||
//2011.08.22 If the user is in the U.S., black box information is appended after TS_CA_ACCOUNT before sending – prodongi
|
||
if (GameRule::GetCurrentLocalBitSet() == GameRule::LOCAL_BITSET::US)
|
||
{
|
||
sendAccountWithIovation(msg_account);
|
||
}
|
||
else if (isEurope())
|
||
{
|
||
sendAccountWithMacAddress(msg_account);
|
||
}
|
||
else
|
||
{
|
||
AuthPendMessage( &msg_account );
|
||
}
|
||
|
||
|
||
// m_pGameMng->StartSound( "ui_bgm_antechamber01.wav" );
|
||
|
||
m_pGameMng->GameGuardSendAccount( g_UserInfo.GetAccountName() );
|
||
}
|
||
}
|
||
break;
|
||
case MSG_ACCOUNT_INFO:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
SMSG_ACCOUNT_INFO* pAccountInfo = static_cast< SMSG_ACCOUNT_INFO* >( pGameMsg );
|
||
|
||
g_UserInfo.SetAccountName( pAccountInfo->strAccount.c_str() );
|
||
g_UserInfo.SetUserNo(pAccountInfo->user_no);
|
||
m_pGameMng->GameGuardSendAccount( g_UserInfo.GetAccountName() );
|
||
}
|
||
break;
|
||
case MSG_AC_RESULT: OnMsgResult( pGameMsg ); break;
|
||
case MSG_AC_RESULT_WITH_STRING: OnMsgResultWithString(pGameMsg); break; /// 2011.05.20 GNE 인증 방식 - prodongi
|
||
case MSG_AC_SERVER_LIST :
|
||
{
|
||
_oprint( ">>>MSG_AC_SERVER_LIST : %d\n", GetCurState() );
|
||
|
||
SMSG_AC_SERVER_LIST* pServerList = (SMSG_AC_SERVER_LIST*)pGameMsg;
|
||
|
||
for( int i(0); i<pServerList->count; ++i )
|
||
{
|
||
m_vStrServerURL.push_back( pServerList->m_pServerInfo[i].server_screenshot_url );
|
||
}
|
||
|
||
switch( m_CurrentState )
|
||
{
|
||
case GAMELOGIN_SERVERSELECT:
|
||
{ //지연되었을 경우 직접 변경
|
||
m_pGameMng->InterfaceMsg( pGameMsg );
|
||
m_bIsCan_ReqServerList = true;
|
||
SetToServerSelectStateOn();
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
case GAMELOGIN_LOGIN_OFF:
|
||
{ //애니메이션 순차 처리
|
||
m_pGameMng->InterfaceMsg( pGameMsg ); //서버 리스트 UI 에 추가
|
||
m_bIsCan_ReqServerList = true;
|
||
SetToPrepareServerSelectState();
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
|
||
case MSG_AC_SELECT_SERVER:
|
||
{
|
||
_oprint( ">>>MSG_AC_SELECT_SERVER : %d\n", GetCurState() );
|
||
|
||
if( m_CurrentState == GAMELOGIN_GAMESERVER_LOGIN )
|
||
{
|
||
SMSG_AC_SELECT_SERVER * pSelectServer = static_cast<SMSG_AC_SELECT_SERVER *>(pGameMsg);
|
||
if( pSelectServer->result == RESULT_SUCCESS )
|
||
{
|
||
m_pAuthConn->Close();
|
||
m_pRecvQueue->Clear();
|
||
m_pGameMng->ClearDummy(); //인증 서버와 통신이 끝났으므로 더미 삭제
|
||
|
||
unsigned char byOneTimeKeyTemp[sizeof( pSelectServer->one_time_key ) + GameRule::MAX_CRYPTO_BLOCK_LEN];
|
||
size_t nDeSize = 0;
|
||
m_Crypto.DecryptForSecret( pSelectServer->one_time_key, pSelectServer->one_time_key_en_len, &byOneTimeKeyTemp, sizeof( byOneTimeKeyTemp ), &nDeSize );
|
||
|
||
assert( nDeSize == sizeof( __int64 ) );
|
||
|
||
m_one_time_key = *reinterpret_cast< __int64* >( byOneTimeKeyTemp );
|
||
|
||
if( pSelectServer->pending_time != 0 )
|
||
{//pending_time 만큼 대기하고 로그인 가능
|
||
|
||
m_dwServerWaitStartTime = m_dwTime;
|
||
|
||
m_dwServerWaitTime = pSelectServer->pending_time*10;
|
||
|
||
//MSG 박스 띄운다.
|
||
std::string strMsg;
|
||
GetPendingTimeString(m_dwServerWaitTime, strMsg);
|
||
|
||
//접속중 닫기
|
||
m_pGameMng->InterfaceMsg( &SMSG_SEND_DATA( "close_all_message_box" ) );
|
||
|
||
g_bServerListSeen = true;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_LOGINWAITING, strMsg.c_str(), false, m_dwServerWaitTime ) );
|
||
g_bServerListSeen = false;
|
||
}
|
||
else
|
||
{
|
||
//캐릭터 요청 상태
|
||
m_pGameMng->ConnectToServer( m_SelectServer_IP.c_str(), m_SelectServer_PORT ); //게임서버에 접속
|
||
LoginAccount( g_UserInfo.GetAccountName(), m_one_time_key ); //TS_CS_ACCOUNT_WITH_AUTH 를 통해 인증
|
||
}
|
||
}
|
||
// 18세서버
|
||
else if( pSelectServer->result == RESULT_ACCESS_DENIED )
|
||
{
|
||
g_bServerListSeen = true;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(6399), true ) );
|
||
g_bServerListSeen = false;
|
||
}
|
||
// 중국 보급코드 인증실패.
|
||
else if( pSelectServer->result == RESULT_INVALID_ARGUMENT )
|
||
{
|
||
g_bServerListSeen = true;
|
||
// TODO 이 스트링 번호 이상하다.
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(6354), true ) );
|
||
g_bServerListSeen = false;
|
||
}
|
||
else
|
||
{
|
||
//인증 서버에서 서버 선택 실패 되었음.
|
||
assert( 0 && "인증 서버에서 서버 선택 실패 되었음." );
|
||
_oprint( "ErrorCode[%d] : %s\n", pSelectServer->result, GetErrorStr( pSelectServer->result ) );
|
||
}
|
||
}
|
||
// break;
|
||
//}
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
|
||
case MSG_AC_UPDATE_PENDING_TIME:
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_SERVERSELECT || m_CurrentState == GAMELOGIN_SERVERSELECT_ON || m_CurrentState == GAMELOGIN_GAMESERVER_LOGIN )
|
||
{//pending_time 만큼 대기하고 로그인 가능
|
||
SMSG_AC_UPDATE_PENDING_TIME * pUpdatePendingTime = static_cast<SMSG_AC_UPDATE_PENDING_TIME *>(pGameMsg);
|
||
UpdatePendingTime(pUpdatePendingTime->pending_time);
|
||
}
|
||
}
|
||
break;
|
||
|
||
case MSG_RESULT: // 서버 결과 메시지
|
||
{
|
||
SMSG_RESULT* pMsgResult = (SMSG_RESULT*)pGameMsg;
|
||
|
||
_oprint( "[MSG_RESULT] CurState: [%d]\n", GetCurState() );
|
||
|
||
switch( m_CurrentState )
|
||
{
|
||
case GAMELOGIN_DEVELOPERS_LOGIN: //개발 전용 로긴 상태시
|
||
{
|
||
if( TM_CS_ACCOUNT == pMsgResult->request_msg_id )
|
||
{
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_SUCCESS:
|
||
|
||
if( ENV().IsExist( "account" ) && ENV().IsExist( "password" ) && ENV().IsExist( "avatar" ) )
|
||
{
|
||
CharacterLogin( ENV().GetString( "avatar" ).c_str(), 0 );
|
||
|
||
SetGameRef( STAGE_END ); // 다음 게임으로 ...
|
||
SDEBUGLOG("MSG_RESULT::GAMELOGIN_DEVELOPERS_LOGIN - begin");
|
||
RemoveModelFiles();
|
||
SDEBUGLOG("MSG_RESULT::GAMELOGIN_DEVELOPERS_LOGIN - end");
|
||
|
||
// It can only be used once because it takes you back to the lobby
|
||
ENV().Remove( "account" );
|
||
ENV().Remove( "password" );
|
||
ENV().Remove( "avatar" );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_CHARSELECT:
|
||
{
|
||
if( pMsgResult->request_msg_id == TM_CS_DELETE_CHARACTER )
|
||
{
|
||
// #2.1.2.8.3 sonador
|
||
if( m_pGameMng->GetWndManager() )
|
||
m_pGameMng->GetWndManager()->CloseAllMessageBox();
|
||
|
||
SIMSG_UI_PASSWORD_COMPARE::COMPARE_RESULT result = SIMSG_UI_PASSWORD_COMPARE::SUCCESS_FROM_SERVER;
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_SUCCESS:
|
||
m_passwordCount.clear();
|
||
SetToPrepareCharSelectState(true);
|
||
// RequestCharacterList();
|
||
break;
|
||
case RESULT_DB_ERROR: //알 수 없는 오류가 발생했습니다. 운영자에게 문의하세요.
|
||
result = SIMSG_UI_PASSWORD_COMPARE::FAILED_DB_ERROR_FROM_SERVER;
|
||
break;
|
||
case RESULT_PASSWORD_MISMATCH: //입력하신 보안비밀번호가 맞지 않습니다. 다시 시도하세요.
|
||
m_passwordCount.inc(); /// 2012.04.04 - prodongi
|
||
if (m_passwordCount.end())
|
||
{
|
||
pMsgResult->bUse = true;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, SYS_MSG_SERVER_DISCONNECT ) );
|
||
return ;
|
||
}
|
||
result = SIMSG_UI_PASSWORD_COMPARE::FAILED_MATCH_FROM_SERVER;
|
||
break;
|
||
case RESULT_ACCESS_DENIED: //길드마스터일 경우는 캐릭터 삭제가 불가능합니다. 길드 탈퇴 또는 해체 후 다시 시도하세요
|
||
result = SIMSG_UI_PASSWORD_COMPARE::FAILED_ACCESS_DENIED_FROM_SERVER;
|
||
break;
|
||
case RESULT_NOT_EXIST: //해당 보안비밀번호에 적합한 캐릭터가 없습니다. 운영자에게 문의하세요.
|
||
result = SIMSG_UI_PASSWORD_COMPARE::FAILED_NOT_EXIT_FROM_SERVER;
|
||
//m_bFreezeSelect = false;
|
||
break;
|
||
default:
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(804), true ) );
|
||
break;
|
||
}
|
||
|
||
if( result != SIMSG_UI_PASSWORD_COMPARE::SUCCESS_FROM_SERVER )
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_PASSWORD_COMPARE( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SECURITYCHARACTER, result ) );
|
||
}
|
||
else if( pMsgResult->request_msg_id == TM_CS_SECURITY_NO )
|
||
{
|
||
SIMSG_UI_PASSWORD_COMPARE::COMPARE_RESULT result = SIMSG_UI_PASSWORD_COMPARE::SUCCESS_FROM_SERVER;
|
||
|
||
if( pMsgResult->result != RESULT_SUCCESS )
|
||
result = SIMSG_UI_PASSWORD_COMPARE::FAILED_MATCH_FROM_SERVER;
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_PASSWORD_COMPARE( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SECURITYSTORAGE, result ) );
|
||
}
|
||
}
|
||
break;
|
||
|
||
case GAMELOGIN_GAMESERVER_LOGIN:
|
||
// case GAMELOGIN_SERVERSELECT_ON:
|
||
// case GAMELOGIN_CHARSELECT: // 캐랙터 선택 상태시
|
||
switch( pMsgResult->request_msg_id )
|
||
{
|
||
case TM_CS_ACCOUNT_WITH_AUTH :
|
||
{
|
||
// 사용자 정보 전송. 추가 bintitle. 2010.05.06. MAC ADDRESS.
|
||
m_pGameMng->ConnectToServer( m_SelectServer_IP.c_str(), m_SelectServer_PORT, true );
|
||
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_SUCCESS: //캐릭터 요청
|
||
{
|
||
SetToPrepareCharSelectState(true);
|
||
}
|
||
break;
|
||
case RESULT_ACCESS_DENIED: // block된 계정
|
||
case RESULT_INVALID_PASSWORD: // 패스워드 틀림
|
||
case RESULT_NOT_EXIST: // 계정이 없음
|
||
SetCurState( GAMELOGIN_SERVERSELECT_ON );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_ID_NOTEXIST ) );
|
||
break;
|
||
|
||
case RESULT_LIMIT_MAX: // 동접 한계치 초과
|
||
SetCurState( GAMELOGIN_SERVERSELECT_ON );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_SERVERLIMITMAX, S(803) ) );
|
||
break;
|
||
|
||
default:
|
||
{
|
||
// MessageBox( g_hWnd, "default","debug", MB_OK );
|
||
SetCurState( GAMELOGIN_SERVERSELECT_ON );
|
||
g_bServerListSeen = true;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, SYS_MSG_SERVER_DISCONNECT ) );
|
||
g_bServerListSeen = false;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
case TM_CS_CHARACTER_LIST:
|
||
{
|
||
if( RESULT_SUCCESS != pMsgResult->result )
|
||
{
|
||
g_bServerListSeen = true;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_NOCONNECTSERVER, SYS_MSG_SERVER_DISCONNECT ) );
|
||
g_bServerListSeen = false;
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
break;
|
||
case GAMELOGIN_CREATECHAR_CUSTOMIZING:
|
||
if( TM_CS_CHECK_CHARACTER_NAME == pMsgResult->request_msg_id )
|
||
{
|
||
_oprint("[debug RESULT_SUCCESS]! Result is: %d\n", static_cast<int>(pMsgResult->result));
|
||
if( pMsgResult->result != RESULT_SUCCESS ) m_strNewCharName = "";
|
||
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_SUCCESS:
|
||
{
|
||
::CreateNewAvatar( this, m_strNewCharName.c_str(), GetCrrCustomizingAvatar() );
|
||
}
|
||
break;
|
||
|
||
case RESULT_ALREADY_EXIST:
|
||
// Name already exists, fix it!!!
|
||
m_bCreating = false;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_NAME_EXIST, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, "create_fail" ) );
|
||
break;
|
||
|
||
case RESULT_INVALID_TEXT: // Forbidden word
|
||
m_bCreating = false;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_NAME_INVALID, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, "create_fail" ) );
|
||
break;
|
||
}
|
||
}
|
||
else if( TM_CS_CREATE_CHARACTER == pMsgResult->request_msg_id )
|
||
{
|
||
switch( pMsgResult->result )
|
||
{
|
||
case RESULT_SUCCESS:
|
||
{
|
||
m_bCreateCharSuccess = true;
|
||
SetToCreateCharSuccess();
|
||
}
|
||
break;
|
||
|
||
case RESULT_ALREADY_EXIST:
|
||
m_bCreating = false;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_NAME_EXIST, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, "create_fail" ) );
|
||
break;
|
||
|
||
case RESULT_INVALID_TEXT:
|
||
m_bCreating = false;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_NAME_INVALID, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, "create_fail" ) );
|
||
break;
|
||
|
||
default:
|
||
case RESULT_LIMIT_MAX:
|
||
m_bCreating = false;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(805), true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, "create_fail" ) );
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case MSG_CHARLIST: // 캐랙터 리스트
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
SMSG_CHARLIST* pMsgCharList = (SMSG_CHARLIST*)pGameMsg;
|
||
m_nCharacterCount = 0;
|
||
|
||
int nReceiveCharCount = pMsgCharList->nCharCount;
|
||
if( nReceiveCharCount > GameRule::nMaxCharactersPerAccount) nReceiveCharCount = GameRule::nMaxCharactersPerAccount;
|
||
|
||
if( nReceiveCharCount == 0 )
|
||
{
|
||
m_pGameMng->PostMsgAtDynamic( new SMSG_SEND_DATA( "select_server_msgbox" ) );
|
||
SetToRaceSelectState();
|
||
break;
|
||
}
|
||
|
||
int nNewCharIndex(-1);
|
||
LOBBY_CHARACTER_INFO* pCharInfo = pMsgCharList->pCharInfo;
|
||
for( int n( 0 ); n < nReceiveCharCount; ++n )
|
||
{
|
||
std::string strYear;
|
||
strYear.assign( std::string( pCharInfo->szDeleteTime ), 0, 4 );
|
||
std::string strDelCheck;
|
||
strDelCheck.assign( std::string( pCharInfo->name ), 0, 1 );
|
||
|
||
if( ::atoi( strYear.c_str() ) > 9000 && ::_stricmp( strDelCheck.c_str(), "@" ) != 0 )
|
||
{
|
||
if( m_strNewCharName == pCharInfo->name )
|
||
nNewCharIndex = n;
|
||
|
||
m_Avatars[n].pAvatar->SetDisplayInfo( pCharInfo->level, pCharInfo->job_level, pCharInfo->job );
|
||
m_Avatars[n].pAvatar->SetName ( pCharInfo->name );
|
||
m_Avatars[n].pAvatar->SetRace ( pCharInfo->race );
|
||
m_Avatars[n].pAvatar->SetSex ( pCharInfo->sex );
|
||
|
||
// Nude item
|
||
m_Avatars[n].pAvatar->SetHairIndex( GetDefaultItemDB().GetHairIndex( pCharInfo->model_id[0] ) );
|
||
m_Avatars[n].pAvatar->SetFaceIndex( GetDefaultItemDB().GetFaceIndex( pCharInfo->model_id[1] ) );
|
||
m_Avatars[n].pAvatar->SetBodyIndex( GetDefaultItemDB().GetBodyIndex( pCharInfo->model_id[2] ) );
|
||
m_Avatars[n].pAvatar->SetHandIndex( GetDefaultItemDB().GetHandIndex( pCharInfo->model_id[3] ) );
|
||
m_Avatars[n].pAvatar->SetFootIndex( GetDefaultItemDB().GetFootIndex( pCharInfo->model_id[4] ) );
|
||
|
||
m_Avatars[n].pAvatar->SetDecoIndex( pCharInfo->texture_id );
|
||
|
||
int nGroup = GetDefaultItemDB().GetFaceGroupID( GetDefaultItemDB().GetFaceIndex( pCharInfo->model_id[1] ) );
|
||
std::string m_strDecoName = GetDefaultTextureResourceDB().GetTextureName( nGroup, pCharInfo->texture_id, m_Avatars[n].pAvatar->GetRace(), m_Avatars[n].pAvatar->GetSex() );
|
||
|
||
int nRace( m_Avatars[n].pAvatar->GetRace() );
|
||
int nSex( m_Avatars[n].pAvatar->GetSex() );
|
||
int nFace( m_Avatars[n].pAvatar->GetFaceIndex() );
|
||
|
||
m_Avatars[n].pAvatar->setHideEquipInfo(pCharInfo->hide_equip_flag);
|
||
|
||
|
||
for( int i(0); 5>i; i++ )
|
||
m_Avatars[n].pAvatar->SetNudeCode( i, pCharInfo->model_id[i] );
|
||
|
||
// Equipped Items
|
||
for( int i(0); ItemBase::MAX_ITEM_WEAR > i; i++ )
|
||
{
|
||
if( pCharInfo->level == 0 && (i == ItemBase::WEAR_WEAPON || i == ItemBase::WEAR_SHIELD) )
|
||
m_Avatars[n].pAvatar->SetWearIndex( i, 0, 0 ,pCharInfo->wear_appearance_code[i]);
|
||
else
|
||
m_Avatars[n].pAvatar->SetWearIndex( i, pCharInfo->wear_info[i], 0, pCharInfo->wear_appearance_code[i] );
|
||
}
|
||
|
||
m_Avatars[n].pAvatar->SetHairColorIndex(pCharInfo->hair_color_index);
|
||
|
||
m_Avatars[n].pAvatar->RefreshAvatar();
|
||
|
||
// Temporary (characters created before the renewal)
|
||
if( pCharInfo->skin_color == 0 )
|
||
{
|
||
unsigned long color_value = GetSkinColorTable().GetColorValue( nRace - GCLAN_GAIA, 0 );
|
||
m_Avatars[n].pAvatar->SetSkinColorized( color_value, K3DTexture::COLORIZED_DEF, pCharInfo->hair_color_rgb );
|
||
}
|
||
else
|
||
{
|
||
m_Avatars[n].pAvatar->SetSkinColorized( pCharInfo->skin_color, K3DTexture::COLORIZED_DEF, pCharInfo->hair_color_rgb );
|
||
}
|
||
|
||
K3DVector vAvatarPos;
|
||
GetRaceEventPos(nRace, vAvatarPos);
|
||
InitAvatar( m_Avatars[n].pAvatar, vAvatarPos );
|
||
|
||
m_nCharacterCount++;
|
||
}
|
||
pCharInfo++;
|
||
}
|
||
|
||
int nSelectIndex(-1);
|
||
if( nNewCharIndex >= 0 )
|
||
nSelectIndex = nNewCharIndex;
|
||
else nSelectIndex = pMsgCharList->last_login_index;
|
||
|
||
if ( nSelectIndex >= nReceiveCharCount ) nSelectIndex = 0; // 프랑스 캐릭터 선택 인덱스 8로들어오는 문제로 인해 수정합니다.
|
||
|
||
// 꾸미기 아이콘 위치 설정
|
||
// 2010.04.22 - prodongi
|
||
// GetDefaultTextureResourceDB().SetDecoIndex( m_Avatars[ nSelectIndex ].pAvatar->GetDecoIndex() );
|
||
GetSelectedAvatarInfo().setDecoIndex(m_Avatars[ nSelectIndex ].pAvatar->GetDecoIndex());
|
||
|
||
m_dwStartCharSelectListWaitTime = m_dwTime;
|
||
m_nAppointmentCharSelectIndex = nSelectIndex;
|
||
SetCurState( GAMELOGIN_CHARSELECT_WAIT_TIME );
|
||
RefreshCharNameWindow();
|
||
|
||
m_pGameMng->PostMsgAtDynamic( new SMSG_SEND_DATA( "select_server_msgbox" ) );
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_DELETE_SELECTEDAVATAR:
|
||
{
|
||
SIMSG_DELETE_SELECTEDAVATAR* pDeleteMsg = static_cast<SIMSG_DELETE_SELECTEDAVATAR*>(pGameMsg);
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < m_nCharacterCount )
|
||
{
|
||
// #2.1.2.8.3 sonador
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_DELETECHARWAIT, SYS_MSG_SELECT_DELCHARACTOR, true ) );
|
||
|
||
DeleteAvatar( m_Avatars[m_nSelectedCharIndex].pAvatar->GetName(), pDeleteMsg->security_no );
|
||
}
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case TMSG_REQ_CLOSE:
|
||
m_pGameMng->GameExit();
|
||
break;
|
||
|
||
case IMSG_MOUSEMOVE :
|
||
{
|
||
if(m_CurrentState == GAMELOGIN_CREATECHAR_RACE_SELECT)
|
||
{
|
||
SIMSG_MOUSEMOVE* pMouseMove = static_cast<SIMSG_MOUSEMOVE*>(pGameMsg);
|
||
|
||
int adjustwidth = KUIWndManager::GetResolution().cy * 4 / 3;
|
||
/// 2010.12.28 - prodongi
|
||
if (adjustwidth > KUIWndManager::GetResolution().cx) adjustwidth = KUIWndManager::GetResolution().cx;
|
||
int adjustheight = KUIWndManager::GetResolution().cy;
|
||
int adjustx = KUIWndManager::GetResolution().cx/2 - adjustwidth/2;
|
||
|
||
int mx = GET_X_LPARAM(pMouseMove->lParam);
|
||
int my = GET_Y_LPARAM(pMouseMove->lParam);
|
||
|
||
m_ClanSelect_Asura_RollOver = false;
|
||
m_ClanSelect_Deva_RollOver = false;
|
||
m_ClanSelect_Gaia_RollOver = false;
|
||
|
||
|
||
if( mx >= adjustx && mx <= adjustx+(340*adjustwidth/1024)
|
||
&& my >= 0 && my <= (768*adjustheight/768) )
|
||
{
|
||
m_ClanSelect_Asura_RollOver = true;
|
||
}
|
||
else if( mx >= adjustx+340 && mx <= adjustx+(682*adjustwidth/1024)
|
||
&& my >= 0 && my <= (768*adjustheight/768) )
|
||
{
|
||
m_ClanSelect_Gaia_RollOver = true;
|
||
}
|
||
else if( mx >= adjustx+682 && mx <= adjustx+(1024*adjustwidth/1024)
|
||
&& my >= 0 && my <= (768*adjustheight/768) )
|
||
{
|
||
m_ClanSelect_Deva_RollOver = true;
|
||
}
|
||
|
||
}
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
SIMSG_MOUSEMOVE* pMouseMove = static_cast<SIMSG_MOUSEMOVE*>(pGameMsg);
|
||
pGameMsg->bUse = true;
|
||
|
||
/// 2010.11.10 - prodongi
|
||
//#ifdef _DEV
|
||
if (g_UserInfo.isMonkeyTail())
|
||
{
|
||
extern bool g_bDebugMode;
|
||
|
||
if( !g_bDebugMode ) return;
|
||
|
||
//시간 카메라로 바꾸자~
|
||
int dx = GET_X_LPARAM(pMouseMove->lParam) - m_ptOldPoint.x;
|
||
int dy = GET_Y_LPARAM(pMouseMove->lParam) - m_ptOldPoint.y;
|
||
|
||
m_ptOldPoint.x = GET_X_LPARAM(pMouseMove->lParam);
|
||
m_ptOldPoint.y = GET_Y_LPARAM(pMouseMove->lParam);
|
||
|
||
//카메라 제어
|
||
if( ( (pMouseMove->wParam & MK_LBUTTON) || (pMouseMove->wParam & MK_RBUTTON) ) )
|
||
{
|
||
if( (pMouseMove->wParam & MK_RBUTTON) )
|
||
{
|
||
// 카메라 제어
|
||
m_pBGCamera->Turn( (float)(-(float)dx * 3.14/m_nDeltaX) );
|
||
m_pBGCamera->Elevation( (float)((float)-dy * 3.14/m_nDeltaY) );
|
||
return;
|
||
}
|
||
}
|
||
|
||
if( ( GetKeyState( VK_SCROLL ) & 0x01 ) )
|
||
{
|
||
if( (pMouseMove->wParam & MK_MBUTTON) )
|
||
{
|
||
K3DVector vtView = m_pBGCamera->GetViewVector();
|
||
K3DVector vtUp = m_pBGCamera->GetUpVector();
|
||
K3DVector vtRes = CrossProduct(vtView, vtUp);
|
||
|
||
Normalize(vtRes);
|
||
vtUp = CrossProduct(vtRes, vtView);
|
||
Normalize(vtUp);
|
||
|
||
float x, y, z;
|
||
x = (-dx*m_fDeltaX*vtRes.x + dy*m_fDeltaY*vtUp.x) * .1f;
|
||
y = (-dx*m_fDeltaX*vtRes.y + dy*m_fDeltaY*vtUp.y) * .1f;
|
||
z = (-dx*m_fDeltaX*vtRes.z + dy*m_fDeltaY*vtUp.z) * .1f;
|
||
m_pBGCamera->Pan(x,y,z);
|
||
}
|
||
}
|
||
|
||
}
|
||
//#endif
|
||
|
||
#endif
|
||
|
||
//
|
||
|
||
|
||
|
||
}
|
||
break;
|
||
|
||
case IMSG_MOUSEWHEEL :
|
||
{
|
||
#ifdef _TERRAIN_ENABLE_
|
||
SIMSG_MOUSEWHEEL* pMouseWheel = static_cast<SIMSG_MOUSEWHEEL*>(pGameMsg);
|
||
pGameMsg->bUse = true;
|
||
|
||
/// 2010.11.10 - prodongi
|
||
//#ifdef _DEV
|
||
if (g_UserInfo.isMonkeyTail())
|
||
{
|
||
extern bool g_bDebugMode;
|
||
if( !g_bDebugMode ) return;
|
||
|
||
short zDelta;
|
||
zDelta = GET_WHEEL_DELTA_WPARAM(pMouseWheel->wParam);
|
||
|
||
//float fLen = m_pBGCamera->GetDistance();
|
||
|
||
//float m_fCamMaxDistRatio = 20.0f;
|
||
|
||
//float fFinalDelta = ( float ) zDelta * expf( logf ( fLen / ( 50.0f * m_fCamMaxDistRatio ) ) * 2.0f ) / -8.0f;
|
||
//if( fLen + fFinalDelta > 120.0f * m_fCamMaxDistRatio ) fFinalDelta = 120.0f * m_fCamMaxDistRatio - fLen;
|
||
//else if( fLen + fFinalDelta < 22.0f ) fFinalDelta = 22.0f - fLen;
|
||
|
||
m_pBGCamera->Zoom( -zDelta / 8 );
|
||
}
|
||
//#endif
|
||
|
||
#endif
|
||
}
|
||
break;
|
||
|
||
case IMSG_LBUTTONUP :
|
||
{
|
||
}
|
||
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_LBUTTONDOWN : // Terrain selection (Left mouse button)
|
||
{
|
||
#ifdef _TERRAIN_ENABLE_
|
||
SIMSG_LBUTTONDOWN* pMsg = (SIMSG_LBUTTONDOWN*)pGameMsg;
|
||
|
||
K3DVector vNear, vFar, res;
|
||
m_pChildViewPort[0]->SetCamera( m_pBGCamera );
|
||
m_pChildViewPort[0]->GetCameraSegmentView(GET_X_LPARAM(pMsg->lParam), GET_Y_LPARAM(pMsg->lParam), vNear, vFar );
|
||
|
||
_oprint( "Terrain Pick : %f, %f, %f\n", res.x, res.y, res.z );
|
||
#endif
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_KEYDOWN:
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_LBUTTONDBLCLK:
|
||
{
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_SHOW_UIWINDOW:
|
||
{
|
||
m_pGameMng->InterfaceMsg( pGameMsg );
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_HOTKEY_EX:
|
||
{
|
||
/// 2010.11.10 - prodongi
|
||
//#ifdef _DEV
|
||
// extern bool g_bDebugMode;
|
||
//#endif
|
||
extern bool g_bRenderUI;
|
||
|
||
SIMSG_HOTKEY_EX* pMsg = static_cast<SIMSG_HOTKEY_EX*>(pGameMsg);
|
||
if( !pMsg->bUp )
|
||
{
|
||
/*if( ( g_bDebugMode && pMsg->bAlt && pMsg->bCtrl && LOWORD(pMsg->wParam ) == 'H' ) )
|
||
{
|
||
//동영상 제작 지원용으로 사용 중...
|
||
g_bRenderUI = !g_bRenderUI;
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_OPEN_UPDATE( g_bRenderUI ) );
|
||
return;
|
||
}*/
|
||
|
||
//종료 메세지 보낸다.
|
||
if( pMsg->bAlt && pMsg->bCtrl && ( LOWORD(pMsg->wParam ) == VK_F4 ) )
|
||
{
|
||
ProcMsgAtStatic( &STMSG_REQ_CLOSE(false) );
|
||
}
|
||
|
||
//메인 게임 UI는 안 나오도록 수정 요망.
|
||
/*/if( ( pMsg->bCtrl && LOWORD(pMsg->wParam ) == 'H' ) )
|
||
{ //공식지원 메인 UI & 캐릭터 이름 숨기기
|
||
g_bRenderUI = !g_bRenderUI;
|
||
if( m_pGameMng )
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_OPEN_UPDATE( g_bRenderUI ) );
|
||
}*/
|
||
|
||
if( ( !pMsg->bShift && !pMsg->bAlt && !pMsg->bCtrl && LOWORD(pMsg->wParam ) == VK_RETURN ) )
|
||
{
|
||
if( g_bRenderUI == true ) return;
|
||
g_bRenderUI = true;
|
||
if( m_pGameMng )
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_OPEN_UPDATE( g_bRenderUI ) );
|
||
}
|
||
|
||
if( !pMsg->bShift && !pMsg->bAlt && !pMsg->bCtrl && LOWORD( pMsg->wParam ) == VK_ESCAPE )
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_CREDITS )
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
if( m_CurrentState == GAMELOGIN_CREDITS2 )
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
if( m_CurrentState == GAMELOGIN_CREDITS3 )
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
if( m_CurrentState == GAMELOGIN_CREDITS4 )
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
if( m_CurrentState == GAMELOGIN_CREDITSEPIC6PROLOGUE )
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
|
||
if( m_CurrentState == GAMELOGIN_INTRO )
|
||
{
|
||
SetToLoginState();
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
break;
|
||
|
||
case IMSG_LOGIN_OTP_ACCOUNT:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
if( m_CurrentState == GAMELOGIN_LOGIN )
|
||
{
|
||
SIMSG_LOGIN_OTP_ACCOUNT* pLoginAccountMsg = (SIMSG_LOGIN_OTP_ACCOUNT*)pGameMsg;
|
||
|
||
//인증 서버 접속
|
||
XAddr addr( ENV().GetString( "auth_ip", "" ).c_str(), ENV().GetInt( "auth_port", 4500 ) );
|
||
if( !m_pAuthConn->Connect( addr ) )
|
||
{
|
||
int nLastError = ::WSAGetLastError();
|
||
char szErrorMsg[1024] = "";
|
||
s_sprintf( szErrorMsg, _countof( szErrorMsg ), "%s(%d)", S( 6375 ), nLastError );
|
||
MessageBox( g_hWnd, szErrorMsg, "Rappelz-Error", MB_OK|MB_ICONINFORMATION );
|
||
m_pGameMng->GameExit();
|
||
//exit(-1);
|
||
return;
|
||
}
|
||
|
||
SetToLoginStateOff();
|
||
|
||
//인증 서버
|
||
g_UserInfo.SetAccountName( pLoginAccountMsg->m_strAccount.c_str() );
|
||
m_strTempPass = pLoginAccountMsg->m_strOTP.c_str();
|
||
m_nAuthType = ACCOUNT_AUTH_OTP;
|
||
|
||
//인증 서버에 데이타 보낸다.
|
||
TS_CA_VERSION msg_ver;
|
||
strcpy( msg_ver.szVersion, AUTH_VER );
|
||
AuthPendMessage( &msg_ver );
|
||
|
||
m_Crypto.GeneratePublicKey();
|
||
|
||
char buffer[1024];
|
||
TS_PUBLIC_KEY* pKeyMsg = new (buffer) TS_PUBLIC_KEY;
|
||
m_Crypto.GetLocalPublicKey( reinterpret_cast< unsigned char* >( pKeyMsg+1 ), sizeof( buffer )-sizeof( *pKeyMsg ), &pKeyMsg->nKeySize );
|
||
pKeyMsg->size += unsigned int( pKeyMsg->nKeySize );
|
||
pKeyMsg->set_check_sum();
|
||
AuthPendMessage( pKeyMsg );
|
||
}
|
||
}
|
||
break;
|
||
|
||
// floyd 3.11.1 iMBC 채널링 구현
|
||
case IMSG_LOGIN_IMBC_ACCOUNT:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
if( m_CurrentState == GAMELOGIN_LOGIN )
|
||
{
|
||
SIMSG_LOGIN_IMBC_ACCOUNT* pLoginAccountMsg = (SIMSG_LOGIN_IMBC_ACCOUNT*)pGameMsg;
|
||
|
||
//인증 서버 접속
|
||
XAddr addr( ENV().GetString( "auth_ip", "" ).c_str(), ENV().GetInt( "auth_port", 4500 ) );
|
||
if( !m_pAuthConn->Connect( addr ) )
|
||
{
|
||
int nLastError = ::WSAGetLastError();
|
||
char szErrorMsg[1024] = "";
|
||
s_sprintf( szErrorMsg, _countof( szErrorMsg ), "%s(%d)", S( 6375 ), nLastError );
|
||
MessageBox( g_hWnd, szErrorMsg, "Rappelz-Error", MB_OK|MB_ICONINFORMATION );
|
||
m_pGameMng->GameExit();
|
||
//exit(-1);
|
||
return;
|
||
}
|
||
|
||
SetToLoginStateOff();
|
||
|
||
//인증 서버
|
||
g_UserInfo.SetAccountName( pLoginAccountMsg->m_strAccount.c_str() );
|
||
m_strTempPass = pLoginAccountMsg->m_strPassword.c_str();
|
||
m_nAuthType = ACCOUNT_AUTH_IMBC;
|
||
|
||
//인증 서버에 데이타 보낸다.
|
||
TS_CA_VERSION msg_ver;
|
||
strcpy( msg_ver.szVersion, AUTH_VER );
|
||
AuthPendMessage( &msg_ver );
|
||
|
||
m_Crypto.GeneratePublicKey();
|
||
|
||
char buffer[1024];
|
||
TS_PUBLIC_KEY* pKeyMsg = new (buffer) TS_PUBLIC_KEY;
|
||
m_Crypto.GetLocalPublicKey( reinterpret_cast< unsigned char* >( pKeyMsg+1 ), sizeof( buffer )-sizeof( *pKeyMsg ), &pKeyMsg->nKeySize );
|
||
pKeyMsg->size += unsigned int( pKeyMsg->nKeySize );
|
||
pKeyMsg->set_check_sum();
|
||
AuthPendMessage( pKeyMsg );
|
||
}
|
||
}
|
||
break;
|
||
|
||
case IMSG_LOGIN_ACCOUNT:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
if( m_CurrentState == GAMELOGIN_LOGIN )
|
||
{
|
||
SIMSG_LOGIN_ACCOUNT* pLoginAccountMsg = (SIMSG_LOGIN_ACCOUNT*)pGameMsg;
|
||
|
||
/// 2010.11.10 - prodongi
|
||
//#ifdef _DEV
|
||
if (g_UserInfo.isMonkeyTail())
|
||
{
|
||
if( _stricmp( pLoginAccountMsg->m_strAccount.c_str(), "//debug" ) == 0 &&
|
||
_stricmp( pLoginAccountMsg->m_strPassword.c_str(), "//debug" ) == 0 )
|
||
{
|
||
extern bool g_bDebugMode;
|
||
g_bDebugMode = !g_bDebugMode;
|
||
return;
|
||
}
|
||
|
||
if( _stricmp( pLoginAccountMsg->m_strAccount.c_str(), "//camera" ) == 0 &&
|
||
_stricmp( pLoginAccountMsg->m_strPassword.c_str(), "//camera" ) == 0 )
|
||
{
|
||
g_bUserCamMode = !g_bUserCamMode;
|
||
return;
|
||
}
|
||
}
|
||
//#endif
|
||
|
||
//인증 서버 접속
|
||
XAddr addr( ENV().GetString( "auth_ip", "" ).c_str(), ENV().GetInt( "auth_port", 4500 ) );
|
||
if( !m_pAuthConn->Connect( addr ) )
|
||
{
|
||
int nLastError = ::WSAGetLastError();
|
||
char szErrorMsg[1024] = "";
|
||
s_sprintf( szErrorMsg, _countof( szErrorMsg ), "%s(%d)", S( 6375 ), nLastError );
|
||
MessageBox( g_hWnd, szErrorMsg, "Rappelz-Error", MB_OK|MB_ICONINFORMATION );
|
||
m_pGameMng->GameExit();
|
||
//exit(-1);
|
||
return;
|
||
}
|
||
|
||
SetToLoginStateOff();
|
||
|
||
//인증 서버
|
||
|
||
g_UserInfo.SetAccountName( pLoginAccountMsg->m_strAccount.c_str() );
|
||
m_strTempPass = pLoginAccountMsg->m_strPassword.c_str();
|
||
m_nAuthType = ACCOUNT_AUTH_NORMAL;
|
||
|
||
//인증 서버에 데이타 보낸다.
|
||
TS_CA_VERSION msg_ver;
|
||
strcpy( msg_ver.szVersion, AUTH_VER );
|
||
AuthPendMessage( &msg_ver );
|
||
|
||
m_Crypto.GeneratePublicKey();
|
||
|
||
char buffer[1024];
|
||
TS_PUBLIC_KEY* pKeyMsg = new (buffer) TS_PUBLIC_KEY;
|
||
m_Crypto.GetLocalPublicKey( reinterpret_cast< unsigned char* >( pKeyMsg+1 ), sizeof( buffer )-sizeof( *pKeyMsg ), &pKeyMsg->nKeySize );
|
||
pKeyMsg->size += unsigned int( pKeyMsg->nKeySize );
|
||
pKeyMsg->set_check_sum();
|
||
AuthPendMessage( pKeyMsg );
|
||
}
|
||
|
||
//게임 서버 접속
|
||
//TS_CS_ACCOUNT_WITH_AUTH 를 통해 인증(ONE_TIME_KEY는 ts_ac_select_Server할 때 받아옴)
|
||
|
||
// if( m_CurrentState == GAMELOGIN_LOGIN ) // 로긴 상태시
|
||
// LoginAccount( pLoginAccountMsg->m_strAccount.c_str(), pLoginAccountMsg->m_strPassword.c_str() );
|
||
}
|
||
|
||
break;
|
||
|
||
case IMSG_LOGIN_SID:
|
||
{
|
||
//gmpbigsun( 20130613 ) : SID를 이용한 접속
|
||
if( m_CurrentState == GAMELOGIN_LOGIN )
|
||
{
|
||
SIMSG_LOGIN_SID* pLoginAccountMsg = (SIMSG_LOGIN_SID*)pGameMsg;
|
||
|
||
//인증 서버 접속
|
||
XAddr addr( ENV().GetString( "auth_ip", "" ).c_str(), ENV().GetInt( "auth_port", 4500 ) );
|
||
if( !m_pAuthConn->Connect( addr ) )
|
||
{
|
||
int nLastError = ::WSAGetLastError();
|
||
char szErrorMsg[1024] = "";
|
||
s_sprintf( szErrorMsg, _countof( szErrorMsg ), "%s(%d)", S( 6375 ), nLastError );
|
||
MessageBox( g_hWnd, szErrorMsg, "Rappelz-Error", MB_OK|MB_ICONINFORMATION );
|
||
m_pGameMng->GameExit();
|
||
return;
|
||
}
|
||
|
||
SetToLoginStateOff();
|
||
|
||
m_nAuthType = ACCOUNT_AUTH_SID;
|
||
|
||
//인증 서버에 데이타 보낸다.
|
||
TS_CA_VERSION msg_ver;
|
||
strcpy( msg_ver.szVersion, AUTH_VER );
|
||
AuthPendMessage( &msg_ver );
|
||
|
||
m_Crypto.GeneratePublicKey();
|
||
|
||
char buffer[1024];
|
||
TS_PUBLIC_KEY* pKeyMsg = new (buffer) TS_PUBLIC_KEY;
|
||
m_Crypto.GetLocalPublicKey( reinterpret_cast< unsigned char* >( pKeyMsg+1 ), sizeof( buffer )-sizeof( *pKeyMsg ), &pKeyMsg->nKeySize );
|
||
pKeyMsg->size += unsigned int( pKeyMsg->nKeySize );
|
||
pKeyMsg->set_check_sum();
|
||
AuthPendMessage( pKeyMsg );
|
||
|
||
}
|
||
}
|
||
break;
|
||
|
||
case IMSG_LICENSE_AGREE:
|
||
{
|
||
pGameMsg->bUse = true;
|
||
|
||
SIMSG_LICENSE_AGREE* pLicenseMsg = (SIMSG_LICENSE_AGREE*)pGameMsg;
|
||
//약관 동의
|
||
if( pLicenseMsg->m_bIsAgree )
|
||
{
|
||
m_bIsAgree = true;
|
||
SetToServerSelectStateOn();
|
||
|
||
//라이센스 창 CLOSE
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE ) );
|
||
}
|
||
}
|
||
break;
|
||
|
||
case IMSG_CREATE_NEWCHAR:
|
||
{
|
||
SIMSG_CREATE_NEWCHAR* pCreateNewCharMsg = (SIMSG_CREATE_NEWCHAR*)pGameMsg;
|
||
|
||
if( m_CurrentState == GAMELOGIN_CREATECHAR_CUSTOMIZING )
|
||
{
|
||
if( pCreateNewCharMsg->m_strName.empty() )
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(806), true ) );
|
||
else
|
||
{
|
||
m_bCreating = true;
|
||
|
||
// Check if the name is available for creation
|
||
TS_CS_CHECK_CHARACTER_NAME msgCharName;
|
||
msgCharName.name[18] = '\0';
|
||
::strncpy( msgCharName.name, pCreateNewCharMsg->m_strName.c_str(), 18 );
|
||
|
||
PendMessage( &msgCharName );
|
||
|
||
m_strNewCharName = pCreateNewCharMsg->m_strName;
|
||
}
|
||
}
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case MSG_SEND_DATA :
|
||
{
|
||
SMSG_SEND_DATA * pSendMsg = static_cast<SMSG_SEND_DATA *>(pGameMsg);
|
||
//서버 엔터 대기 중 취소 되었음.
|
||
if( pSendMsg->strMessage == "loginwaiting_cancel" )
|
||
_gotoAccount();
|
||
else if( pSendMsg->strMessage == "BadUserWarning" )
|
||
{
|
||
if( pSendMsg->nNumber == 0 )
|
||
{
|
||
//로그인 시작
|
||
//인증 성공
|
||
TS_CA_SERVER_LIST msg_server_list;
|
||
AuthPendMessage( &msg_server_list );
|
||
}
|
||
else
|
||
{
|
||
//취소
|
||
m_pGameMng->ClearDummy(); //인증 실패 했으므로, 로긴 가능 하도록 클리어 더미
|
||
|
||
m_pAuthConn->Close();
|
||
SAFE_DELETE( m_pAuthConn );
|
||
SAFE_DELETE( m_pRecvQueue );
|
||
m_pAuthConn = new XSyncStreamConnection( true, true );
|
||
m_pRecvQueue = IQueue::MakeQueue( 1*1024 );
|
||
|
||
SetCurState( GAMELOGIN_LOGIN );
|
||
}
|
||
}
|
||
else if( pSendMsg->strMessage == "select_surver" )
|
||
{
|
||
int nSize( m_vStrServerURL.size() );
|
||
if( pSendMsg->nNumber >= 0 && pSendMsg->nNumber < m_vStrServerURL.size() )
|
||
{
|
||
//strURL 로 길드 관리 웹페이지 열기
|
||
//724, 543
|
||
m_vStrServerURLIndex = pSendMsg->nNumber;
|
||
|
||
if(GetLocaleOption().GetValueString("NOTICE_URL",NULL) == NULL)
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, true) );
|
||
}
|
||
|
||
if(m_pGameMng->IsShow( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT ) || GetLocaleOption().GetValueString("NOTICE_URL",NULL) == NULL)
|
||
{
|
||
int nResolutionW = KUIWndManager::GetResolution().cx;
|
||
int blankwidth = (nResolutionW - (549 + 296 + 5))/2;
|
||
SetOtherNavigate( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, m_vStrServerURL[pSendMsg->nNumber].c_str(), 500, 400 );
|
||
SetOtherNavigateMove( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, 25 + blankwidth , KUIWndManager::GetResolution().cy/2 - 463/2 + 45);
|
||
|
||
_oprint("select_surver:%s\n", m_vStrServerURL[pSendMsg->nNumber].c_str());
|
||
}
|
||
}
|
||
}
|
||
else if( pSendMsg->strMessage == "update_race_music" )
|
||
{
|
||
PlayRaceSound( pSendMsg->nNumber, false );
|
||
}
|
||
else if( pSendMsg->strMessage == "dclick_login_char" )
|
||
{
|
||
if( (pSendMsg->nNumber >=0 && pSendMsg->nNumber < GameRule::nMaxCharactersPerAccount ) && pSendMsg->nNumber < m_nCharacterCount )
|
||
{
|
||
AvatarSelect(pSendMsg->nNumber);
|
||
|
||
GameStart
|
||
( m_Avatars[pSendMsg->nNumber].pAvatar->GetName()
|
||
, m_Avatars[pSendMsg->nNumber].pAvatar->GetRace() );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, "remove_movie" ) );
|
||
}
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(808), true ) );
|
||
}
|
||
else if( pSendMsg->strMessage == "login_char" )
|
||
{
|
||
if( (pSendMsg->nNumber >=0 && pSendMsg->nNumber < GameRule::nMaxCharactersPerAccount ) && m_nCharacterCount )
|
||
{
|
||
GameStart
|
||
( m_Avatars[pSendMsg->nNumber].pAvatar->GetName()
|
||
, m_Avatars[pSendMsg->nNumber].pAvatar->GetRace() );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, "remove_movie" ) );
|
||
}
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(808), true ) );
|
||
}
|
||
else if( pSendMsg->strMessage == "char_select_down" )
|
||
{
|
||
int nIndex = m_nSelectedCharIndex+1;
|
||
if( nIndex >= m_nCharacterCount )
|
||
nIndex = 0;
|
||
|
||
AvatarSelect(nIndex);
|
||
}
|
||
else if( pSendMsg->strMessage == "char_select_up" )
|
||
{
|
||
int nIndex = m_nSelectedCharIndex-1;
|
||
if( nIndex < 0 )
|
||
nIndex = m_nCharacterCount-1;
|
||
|
||
AvatarSelect(nIndex);
|
||
}
|
||
else if( pSendMsg->strMessage == "CreateMotion" )
|
||
{
|
||
m_Avatars[ m_nSelectedCharIndex ].pAvatar->Ani_Idle();
|
||
}
|
||
else if( pSendMsg->strMessage == "select_server_msgbox" )
|
||
{
|
||
// m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, "remove_movie" ) );
|
||
m_pGameMng->InterfaceMsg( &SMSG_SEND_DATA( "close_all_message_box" ) );
|
||
}
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_UIWND_NOTIFY_TO_LOBBY:
|
||
{
|
||
if( m_bCreating )
|
||
{
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
}
|
||
|
||
static const char* c_szAvatarSelectID = "avatarSelect";
|
||
static const size_t c_nAvatarSelectLen = ::strlen( c_szAvatarSelectID );
|
||
|
||
SIMSG_UIWND_NOTIFY_TO_LOBBY* pBtnClickMsg = (SIMSG_UIWND_NOTIFY_TO_LOBBY*)pGameMsg;
|
||
std::string strButtonID = pBtnClickMsg->m_szButtonID;
|
||
|
||
if( !pBtnClickMsg->m_bJustPress )
|
||
{
|
||
if( 0 == strButtonID.compare( "button_character_create" ) )
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_CHARSELECT ) // When in character selection state
|
||
{
|
||
// Only if there is space to create more
|
||
if( m_nCharacterCount < GameRule::nMaxCharactersPerAccount)
|
||
SetToRaceSelectState();
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(807), true ) );
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_character_delete" ) )
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_CHARSELECT/* && !m_bFreezeSelect*/ ) // 캐랙터 선택 상태시
|
||
{
|
||
if( 0 <= m_nSelectedCharIndex && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount )
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_DELETECHARCHECK, SYS_MSG_DEL_CHARACTOR ) );
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, SYS_MSG_SELECT_DELCHARACTOR, true ) );
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_help" ) )
|
||
{
|
||
if(GetLocaleOption().GetValueString("SECURITY_URL", NULL) != NULL)
|
||
{
|
||
static int button_help_delay = 0;
|
||
if( GetSafeTickCount() - button_help_delay > 3000)
|
||
{
|
||
button_help_delay = GetSafeTickCount();
|
||
ShellExecute( NULL, NULL, "iexplore.exe", GetLocaleOption().GetValueString("SECURITY_URL", ""), NULL, SW_SHOWMAXIMIZED );
|
||
}
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "entergamebtn" ) )
|
||
{
|
||
if( (m_nSelectedCharIndex >=0 && m_nSelectedCharIndex < GameRule::nMaxCharactersPerAccount ) && m_nCharacterCount )
|
||
{
|
||
GameStart
|
||
( m_Avatars[m_nSelectedCharIndex].pAvatar->GetName()
|
||
, m_Avatars[m_nSelectedCharIndex].pAvatar->GetRace() );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, "remove_movie" ) );
|
||
}
|
||
else
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_GENERAL, S(808), true ) );
|
||
}
|
||
else if( strstr( strButtonID.c_str(), "!!!SELECT_SERVER" ) )
|
||
{
|
||
if( !m_bIsAgree ) return; //약관에 동의 하지 않으면, 게임을 진행 할 수 없다.
|
||
|
||
if( m_CurrentState == GAMELOGIN_SERVERSELECT_ON )
|
||
{
|
||
SetCurState( GAMELOGIN_GAMESERVER_LOGIN );
|
||
|
||
std::vector< std::string > vString;
|
||
MsgSplit( strButtonID.c_str(), vString, L"|" );
|
||
|
||
if( vString.size()>4 )
|
||
{
|
||
//서버가 선택 되었음.
|
||
TS_CA_SELECT_SERVER msg_select_server;
|
||
msg_select_server.server_idx = atoi( vString[3].c_str() );
|
||
|
||
m_SelectServer_PORT = atoi( vString[4].c_str() );
|
||
m_SelectServer_IP = vString[2].c_str();
|
||
|
||
AuthPendMessage( &msg_select_server );
|
||
|
||
_LOGIN_STATE State = GetCurState();
|
||
if( State == GAMELOGIN_SERVERSELECT_ON || State == GAMELOGIN_GAMESERVER_LOGIN )
|
||
g_bServerListSeen = true;
|
||
else
|
||
g_bServerListSeen = false;
|
||
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_SELECT_SERVER, S(119) ) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_SELECT_SERVER, " " ) );
|
||
|
||
g_bServerListSeen = false;
|
||
}
|
||
else
|
||
{
|
||
assert( 0 && "Invalid server data" );
|
||
}
|
||
|
||
vString.clear();
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "exitbtn" ) )
|
||
{
|
||
_LOGIN_STATE State = GetCurState();
|
||
if( State == GAMELOGIN_SERVERSELECT_ON || State == GAMELOGIN_GAMESERVER_LOGIN )
|
||
g_bServerListSeen = true;
|
||
else
|
||
g_bServerListSeen = false;
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_EXITGAME, SYS_MSG_SERVER_EXITGAME ) );
|
||
|
||
g_bServerListSeen = false;
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_back" ) ) //서버리스트 -> 로그인
|
||
{
|
||
// floyd 3.11.1 iMBC 채널링 구현
|
||
if ( ENV().IsExist( "imbclogin" ) )
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_EXITGAME, SYS_MSG_SERVER_EXITGAME ) );
|
||
}
|
||
else
|
||
{
|
||
//라이센스 창 CLOSE
|
||
if( !m_bIsAgree )
|
||
m_pGameMng->InterfaceMsg( &SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_LICENSE ) );
|
||
|
||
_gotoAccount();
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "selectserverbtn" ) ) // Character Select -> Login
|
||
{
|
||
SetToLogOut();
|
||
SetToLoginState();
|
||
}
|
||
else if( 0 == strButtonID.compare( "clan_cancle_bt" ) ) // Race Selection -> Character Selection
|
||
{
|
||
if( GAMELOGIN_CREATECHAR_RACE_SELECT == m_CurrentState )
|
||
{
|
||
if( m_nCharacterCount == 0 )
|
||
{
|
||
SetToLogOut();
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_SELECT, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
|
||
SetToLoginState();
|
||
}
|
||
else
|
||
{
|
||
SetCurState( GAMELOGIN_CREATECHAR_RACE_SELECT_BACK );
|
||
SetToPrepareCharSelectState(false);
|
||
}
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "malebtn" ) )
|
||
{
|
||
m_nSelectSex = SEX_MALE;
|
||
SendCustomizingMsgToWnd( GetCrrCustomizingAvatar() );
|
||
}
|
||
else if( 0 == strButtonID.compare( "fmalebtn" ) )
|
||
{
|
||
m_nSelectSex = SEX_FEMALE;
|
||
SendCustomizingMsgToWnd( GetCrrCustomizingAvatar() );
|
||
}
|
||
else if( 0 == strButtonID.compare( "cc_bt" ) ) // Cancel button
|
||
{
|
||
SetToRaceSelectState();
|
||
m_nSelectCustomRace = -1;
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARSELECTTEXT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, false) );
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE01, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_SELECT, true ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, true ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, false ) );
|
||
}
|
||
else if (0 == strButtonID.compare("select0000") || 0 == strButtonID.compare("select0001") || 0 == strButtonID.compare("select0002") || 0 == strButtonID.compare("select0003")
|
||
|| 0 == strButtonID.compare("select0004") || 0 == strButtonID.compare("select0005") || 0 == strButtonID.compare("select0006") || 0 == strButtonID.compare("select0007")
|
||
|| 0 == strButtonID.compare("select0008") || 0 == strButtonID.compare("select0009") || 0 == strButtonID.compare("select0010") || 0 == strButtonID.compare("select0011"))
|
||
{ // Faces
|
||
if (!IsCameraZooming(m_nSelectCustomRace))
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
CustomingAvatar(pSelectAvatar, MODEL_INFO::NUDE_FACE, pBtnClickMsg);
|
||
|
||
if (m_nNewCameraIndex != LOBBY_CAMERA_ZOOM)
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING;
|
||
PlayRaceCamera(pSelectAvatar->GetRace(), LOBBY_CAMERA_ZOOMING);
|
||
m_pGameMng->InterfaceMsg(&SIMSG_UI_CUSTOM(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLOFF));
|
||
}
|
||
}
|
||
}
|
||
else if (0 == strButtonID.compare("select0100") || 0 == strButtonID.compare("select0101") || 0 == strButtonID.compare("select0102") || 0 == strButtonID.compare("select0103") || 0 == strButtonID.compare("select0104")
|
||
|| 0 == strButtonID.compare("select0105") || 0 == strButtonID.compare("select0106") || 0 == strButtonID.compare("select0107") || 0 == strButtonID.compare("select0108") || 0 == strButtonID.compare("select0109")
|
||
|| 0 == strButtonID.compare("select0110") || 0 == strButtonID.compare("select0111") || 0 == strButtonID.compare("select0112") || 0 == strButtonID.compare("select0113") || 0 == strButtonID.compare("select0114")
|
||
|| 0 == strButtonID.compare("select0115") || 0 == strButtonID.compare("select0116") || 0 == strButtonID.compare("select0117") || 0 == strButtonID.compare("select0118") || 0 == strButtonID.compare("select0119"))
|
||
{ // Face tatoos
|
||
if (!IsCameraZooming(m_nSelectCustomRace))
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
_oprint("[selecting tatoo] pBtnClickMsg->m_textureId: %d\n", pBtnClickMsg->m_textureId);
|
||
CustomingAvatar(pSelectAvatar, MODEL_INFO::NUDE_DECO, pBtnClickMsg);
|
||
|
||
if (m_nNewCameraIndex != LOBBY_CAMERA_ZOOM)
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING;
|
||
PlayRaceCamera(pSelectAvatar->GetRace(), LOBBY_CAMERA_ZOOMING);
|
||
m_pGameMng->InterfaceMsg(&SIMSG_UI_CUSTOM(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLOFF));
|
||
}
|
||
}
|
||
}
|
||
else if (0 == strButtonID.compare("select0200") || 0 == strButtonID.compare("select0201") || 0 == strButtonID.compare("select0202") || 0 == strButtonID.compare("select0203") || 0 == strButtonID.compare("select0204")
|
||
|| 0 == strButtonID.compare("select0205") || 0 == strButtonID.compare("select0206") || 0 == strButtonID.compare("select0207"))
|
||
{ // Hairstyles
|
||
if (!IsCameraZooming(m_nSelectCustomRace))
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
pBtnClickMsg->m_textureId = 0;
|
||
CustomingAvatar(pSelectAvatar, MODEL_INFO::NUDE_HAIR, pBtnClickMsg);
|
||
_oprint("[HAIR] Color index: %d; Hair RGB: %d; Button haircolor: %d\n", pSelectAvatar->GetHairColorIndex(), pSelectAvatar->GetHairColorRGB(), pBtnClickMsg->m_hairColor);
|
||
|
||
if (m_nNewCameraIndex != LOBBY_CAMERA_ZOOM)
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING;
|
||
PlayRaceCamera(pSelectAvatar->GetRace(), LOBBY_CAMERA_ZOOMING);
|
||
m_pGameMng->InterfaceMsg(&SIMSG_UI_CUSTOM(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLOFF));
|
||
}
|
||
}
|
||
}
|
||
else if (0 == strButtonID.compare("select0300") || 0 == strButtonID.compare("select0301") || 0 == strButtonID.compare("select0302") || 0 == strButtonID.compare("select0303") || 0 == strButtonID.compare("select0304") || 0 == strButtonID.compare("select0305")
|
||
|| 0 == strButtonID.compare("select0306") || 0 == strButtonID.compare("select0307") || 0 == strButtonID.compare("select0308") || 0 == strButtonID.compare("select0309") || 0 == strButtonID.compare("select0310") || 0 == strButtonID.compare("select0311")
|
||
|| 0 == strButtonID.compare("select0312") || 0 == strButtonID.compare("select0313") || 0 == strButtonID.compare("select0314") || 0 == strButtonID.compare("select0315") || 0 == strButtonID.compare("select0316") || 0 == strButtonID.compare("select0317")
|
||
|| 0 == strButtonID.compare("select0318") || 0 == strButtonID.compare("select0319") || 0 == strButtonID.compare("select0320") || 0 == strButtonID.compare("select0321") || 0 == strButtonID.compare("select0322") || 0 == strButtonID.compare("select0323")
|
||
|| 0 == strButtonID.compare("select0324") || 0 == strButtonID.compare("select0325") || 0 == strButtonID.compare("select0326") || 0 == strButtonID.compare("select0327") || 0 == strButtonID.compare("select0328") || 0 == strButtonID.compare("select0329")
|
||
|| 0 == strButtonID.compare("select0330") || 0 == strButtonID.compare("select0331") || 0 == strButtonID.compare("select0332") || 0 == strButtonID.compare("select0333"))
|
||
{ // Hair color
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
|
||
int nControlID = 300;
|
||
for (int i = 0; i < 34; i++)
|
||
{
|
||
std::string strOut = CStringUtil::StringFormat("select03%02d", i);
|
||
if (strButtonID.compare(strOut) == 0)
|
||
{
|
||
nControlID += i;
|
||
}
|
||
}
|
||
|
||
int nTempColor = SUICreateCharSecondDlg::m_CharacterHairDyesMap->at(nControlID);
|
||
pBtnClickMsg->m_hairColor = nTempColor;
|
||
pBtnClickMsg->m_textureId = nTempColor;
|
||
|
||
CustomingAvatar(pSelectAvatar, c_nLOBBY_NUDE_HAIRCOLOR, pBtnClickMsg);
|
||
}
|
||
else if (0 == strButtonID.compare("select0400") || 0 == strButtonID.compare("select0401") || 0 == strButtonID.compare("select0402") || 0 == strButtonID.compare("select0403"))
|
||
{ // Clothes (outfit)
|
||
if (!IsCameraZooming(m_nSelectCustomRace))
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
//pBtnClickMsg->m_nSelectIndex =
|
||
CustomingAvatar(pSelectAvatar, MODEL_INFO::NUDE_BODY, pBtnClickMsg);
|
||
|
||
if (m_nNewCameraIndex != LOBBY_CAMERA_ZOOMOUT)
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING_OUT;
|
||
PlayRaceCamera(pSelectAvatar->GetRace(), LOBBY_CAMERA_ZOOMING, SEQTYPE_REVERSE);
|
||
m_pGameMng->InterfaceMsg(&SIMSG_UI_CUSTOM(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLOFF));
|
||
}
|
||
}
|
||
}
|
||
else if (0 == strButtonID.compare("select0500") || 0 == strButtonID.compare("select0501") || 0 == strButtonID.compare("select0502") || 0 == strButtonID.compare("select0503") || 0 == strButtonID.compare("select0504")
|
||
|| 0 == strButtonID.compare("select0505") || 0 == strButtonID.compare("select0506") || 0 == strButtonID.compare("select0507") || 0 == strButtonID.compare("select0508") || 0 == strButtonID.compare("select0509")
|
||
|| 0 == strButtonID.compare("select0510") || 0 == strButtonID.compare("select0511"))
|
||
{ // Skin color
|
||
if (!IsCameraZooming(m_nSelectCustomRace))
|
||
{
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
CustomingAvatar(pSelectAvatar, c_nLOBBY_NUDE_SKIN, pBtnClickMsg);
|
||
|
||
if (m_nNewCameraIndex != LOBBY_CAMERA_ZOOMOUT)
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING_OUT;
|
||
PlayRaceCamera(pSelectAvatar->GetRace(), LOBBY_CAMERA_ZOOMING, SEQTYPE_REVERSE);
|
||
m_pGameMng->InterfaceMsg(&SIMSG_UI_CUSTOM(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_ROTATE00, SIMSG_UI_CUSTOM::BUTTON_ALLOFF));
|
||
}
|
||
}
|
||
}
|
||
|
||
else if( 0 == strButtonID.compare( "prevbtn" ) ) // Character creation step 1
|
||
{
|
||
}
|
||
else if( 0 == strButtonID.compare( "zoom" ) ) // Camera Zoom In/Out
|
||
{
|
||
int nRace(-1);
|
||
if( m_CurrentState == GAMELOGIN_CHARSELECT )
|
||
nRace = m_nSelectChrRace;
|
||
else if( m_CurrentState == GAMELOGIN_CREATECHAR_CUSTOMIZING )
|
||
nRace = m_nSelectCustomRace;
|
||
|
||
if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOM )
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING_OUT;
|
||
PlayRaceCamera(nRace, LOBBY_CAMERA_ZOOMING, SEQTYPE_REVERSE);
|
||
}
|
||
else if( m_nNewCameraIndex == LOBBY_CAMERA_ZOOMOUT )
|
||
{
|
||
m_nNewCameraIndex = LOBBY_CAMERA_ZOOMING;
|
||
PlayRaceCamera(nRace, LOBBY_CAMERA_ZOOMING, SEQTYPE_NORMAL);
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "createBtn" ) )
|
||
{
|
||
}
|
||
else if( 0 == strButtonID.compare( "race_button" ) )
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_CREATECHAR_RACE_MOVIE ) // When in character creation state
|
||
{
|
||
SetToCostomizing();
|
||
}
|
||
break;
|
||
|
||
}
|
||
else if( 0 == strButtonID.compare( "race_cancel_button" ) )
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_CREATECHAR_RACE_MOVIE )
|
||
{
|
||
SetToRaceSelectState();
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "rotatelbtn" ) )
|
||
{
|
||
m_bRatateL = false;
|
||
}
|
||
else if( 0 == strButtonID.compare( "rotaterbtn" ) )
|
||
{
|
||
m_bRatateR = false;
|
||
}
|
||
else if( strButtonID.size() > c_nAvatarSelectLen && 0 == ::strnicmp( strButtonID.c_str(), c_szAvatarSelectID, c_nAvatarSelectLen ) ) // Character selection "buttons" (actually a character box with name job etc)
|
||
{
|
||
int nIndex = ::atoi( strButtonID.c_str() + c_nAvatarSelectLen );
|
||
if( 0 <= nIndex && nIndex < m_nCharacterCount )
|
||
{
|
||
AvatarSelect( ::atoi( strButtonID.c_str() + c_nAvatarSelectLen ) );
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "Web_SutDown" ) )
|
||
{
|
||
ProcMsgAtStatic( &STMSG_REQ_CLOSE(false) );
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_epic5_part2_credits" ) )
|
||
{
|
||
SetToCreditsState();
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_epic6_Prologue_credits" ) )
|
||
{
|
||
SetToCredits2State();
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_epic7_Prologue_credits" ) )
|
||
{
|
||
SetToCredits3State();
|
||
}
|
||
else if ( 0 == strButtonID.compare( "button_epic8_credits" ) )
|
||
{
|
||
SetToCredits4State();
|
||
}
|
||
else if( 0 == strButtonID.compare( "Epic6_Prologue_inro" ) )
|
||
{
|
||
if(m_IntroScene)
|
||
{
|
||
m_IntroScene->activate(false);
|
||
m_IntroScene->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene );
|
||
}
|
||
|
||
if(m_IntroScene_Navislamia)
|
||
{
|
||
if (!m_IntroScene_Navislamia->isActivated())
|
||
{
|
||
m_pSceneMgr->addScene( *m_IntroScene_Navislamia );
|
||
m_IntroScene_Navislamia->activate(true);
|
||
m_IntroScene_Navislamia->play(true);
|
||
}
|
||
}
|
||
|
||
if(m_IntroScene_GoldenMonarch)
|
||
{
|
||
m_IntroScene_GoldenMonarch->activate(false);
|
||
m_IntroScene_GoldenMonarch->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene_GoldenMonarch );
|
||
}
|
||
}
|
||
|
||
else if( 0 == strButtonID.compare( "Epic6_part1_inro" ) )
|
||
{
|
||
if(m_IntroScene)
|
||
{
|
||
m_IntroScene->activate(false);
|
||
m_IntroScene->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene );
|
||
}
|
||
|
||
if(m_IntroScene_Navislamia)
|
||
{
|
||
m_IntroScene_Navislamia->activate(false);
|
||
m_IntroScene_Navislamia->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene_Navislamia );
|
||
}
|
||
|
||
if(m_IntroScene_GoldenMonarch)
|
||
{
|
||
/// 2011.01.03 - prodongi
|
||
if (!m_IntroScene_GoldenMonarch->isActivated())
|
||
{
|
||
m_pSceneMgr->addScene( *m_IntroScene_GoldenMonarch );
|
||
m_IntroScene_GoldenMonarch->activate(true);
|
||
m_IntroScene_GoldenMonarch->play(true);
|
||
}
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "Epic6_part2_inro" ) )
|
||
{
|
||
if(m_IntroScene)
|
||
{
|
||
/// 2011.01.13 - prodongi
|
||
if (!m_IntroScene->isActivated())
|
||
{
|
||
m_pSceneMgr->addScene( *m_IntroScene );
|
||
m_IntroScene->activate(true);
|
||
m_IntroScene->play(true);
|
||
}
|
||
}
|
||
|
||
if(m_IntroScene_Navislamia)
|
||
{
|
||
m_IntroScene_Navislamia->activate(false);
|
||
m_IntroScene_Navislamia->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene_Navislamia );
|
||
}
|
||
|
||
if(m_IntroScene_GoldenMonarch)
|
||
{
|
||
m_IntroScene_GoldenMonarch->activate(false);
|
||
m_IntroScene_GoldenMonarch->play(false);
|
||
m_pSceneMgr->removeScene2( *m_IntroScene_GoldenMonarch );
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_member" ) )
|
||
{
|
||
static int join_delay = 0;
|
||
if( GetSafeTickCount() - join_delay > 3000)
|
||
{
|
||
join_delay = GetSafeTickCount();
|
||
ShellExecute( NULL, NULL, "iexplore.exe",
|
||
//GetLocaleOption().GetValueString("JOIN_URL", "http://rappelz.nflavor.com/member/join.aspx"),
|
||
GetLocaleOption().GetValueString("JOIN_URL", "http://127.0.0.1/member/join.aspx"), // Fraun 7/12/2025 nullifying gala spyware
|
||
NULL, SW_SHOWMAXIMIZED );
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_id_pw_find" ) )
|
||
{
|
||
static int find_id_pw_delay = 0;
|
||
if( GetSafeTickCount() - find_id_pw_delay > 3000)
|
||
{
|
||
find_id_pw_delay = GetSafeTickCount();
|
||
ShellExecute( NULL, NULL, "iexplore.exe",
|
||
GetLocaleOption().GetValueString("IDPW_URL", "https://rappelz.nflavor.com/member/find_id.aspx"),
|
||
NULL, SW_SHOWMAXIMIZED );
|
||
}
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_intro" ) )
|
||
{
|
||
SetToIntroState(true);
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_screenshot" ) )
|
||
{
|
||
if( m_vStrServerURLIndex >= 0 && m_vStrServerURLIndex < m_vStrServerURL.size() )
|
||
{
|
||
//SetOtherNavigate( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, m_vStrServerURL[m_vStrServerURLIndex].c_str(), 500, 400 );
|
||
//SetOtherNavigateMove( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, 107, 240 );
|
||
int nResolutionW = KUIWndManager::GetResolution().cx;
|
||
int blankwidth = (nResolutionW - (549 + 296 + 5))/2;
|
||
|
||
SetOtherNavigate( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, m_vStrServerURL[m_vStrServerURLIndex].c_str(), 500, 400 );
|
||
//SetOtherNavigateMove( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, 25 + blankwidth , 30 + (145*KUIWndManager::GetResolution().cy) / 768 );
|
||
SetOtherNavigateMove( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT, 25 + blankwidth , KUIWndManager::GetResolution().cy/2 - 463/2 + 45);
|
||
}
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, true) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, false) );
|
||
}
|
||
else if( 0 == strButtonID.compare( "button_notice" ) )
|
||
{
|
||
SetOtherNavigateClose( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SCREENSHOT );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERSCREENSHOT, false) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SERVERNOTICE, true) );
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
if( 0 == strButtonID.compare( "rotatelbtn" ) )
|
||
{
|
||
m_bRatateL = true;
|
||
m_bRatateR = false;
|
||
}
|
||
else if( 0 == strButtonID.compare( "rotaterbtn" ) )
|
||
{
|
||
m_bRatateR = true;
|
||
m_bRatateL = false;
|
||
}
|
||
}
|
||
}
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_REQ_OPEN_MSGBOX:
|
||
{
|
||
_LOGIN_STATE State = GetCurState();
|
||
|
||
// MessageBox( g_hWnd, CStringUtil::StringFormat( "IMSG_REQ_OPEN_MSGBOX - %d", State ).c_str(),"debug", MB_OK );
|
||
|
||
if( State == GAMELOGIN_SERVERSELECT_ON ||
|
||
State == GAMELOGIN_GAMESERVER_LOGIN ||
|
||
State == GAMELOGIN_PREPARE_CHARSELECT )
|
||
g_bServerListSeen = true;
|
||
else
|
||
g_bServerListSeen = false;
|
||
|
||
m_pGameMng->InterfaceMsg( pGameMsg );
|
||
|
||
g_bServerListSeen = false;
|
||
}
|
||
break;
|
||
case IMSG_UI_STATE_UPDATE: //이걸 여기다 보내는 이유가 뭐야;;;
|
||
pGameMsg->bUse = true;
|
||
break;
|
||
|
||
case IMSG_UI_RACE_SELECT:
|
||
{
|
||
if( m_CurrentState == GAMELOGIN_CREATECHAR_RACE_SELECT ||
|
||
m_CurrentState == GAMELOGIN_CREATECHAR_RACE_MOVIE )
|
||
{
|
||
SIMSG_UI_RACE_SELECT* pShowRaceMovie = (SIMSG_UI_RACE_SELECT*)pGameMsg;
|
||
|
||
if( m_nSelectCustomRace != pShowRaceMovie->m_nRace )
|
||
{
|
||
m_nSelectCustomRace = pShowRaceMovie->m_nRace;
|
||
m_pNewAvatar->SetRace( pShowRaceMovie->m_nRace );
|
||
m_pNewAvatar->SetSex( SEX_FEMALE );
|
||
PlayRaceSound( pShowRaceMovie->m_nRace, false );
|
||
|
||
SetCurState( GAMELOGIN_CREATECHAR_RACE_MOVIE );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, number_t( pShowRaceMovie->m_nRace ), "select_race" ) );
|
||
|
||
if(pShowRaceMovie->m_nRace == GCLAN_ASURA )
|
||
m_BgScene_ClanDesc_Asura->activate(true);
|
||
if(pShowRaceMovie->m_nRace == GCLAN_DEVA )
|
||
m_BgScene_ClanDesc_Deva->activate(true);
|
||
if(pShowRaceMovie->m_nRace == GCLAN_GAIA )
|
||
m_BgScene_ClanDesc_Gaia->activate(true);
|
||
|
||
m_BgScene_ClanSelect_Asura->activate(false);
|
||
m_BgScene_ClanSelect_Gaia->activate(false);
|
||
m_BgScene_ClanSelect_Deva->activate(false);
|
||
|
||
}
|
||
m_pGameMng->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, true ) );
|
||
m_pGameMng->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_SELECT, false ) );
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING01, false ) );
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COPYRIGHTS_MARKING02, true ) );
|
||
}
|
||
}
|
||
break;
|
||
case IMSG_UI_SEND_DATA:
|
||
{
|
||
SIMSG_UI_SEND_DATA* pData = (SIMSG_UI_SEND_DATA*)pGameMsg;
|
||
|
||
//if( pData->m_nTarget == SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC )
|
||
//m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_RACE_DESC, pData->m_strString.c_str() ) );
|
||
}
|
||
break;
|
||
case MSG_REQUEST_SECURITY_NO:
|
||
{
|
||
m_pGameMng->InterfaceMsg( pGameMsg );
|
||
}
|
||
break;
|
||
case MSG_SC_CREATE_SECURITY_NO: //새 보안 입력
|
||
{
|
||
m_pGameMng->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SECURITYSETTING, true, true ) );
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_SC_CHANGE_SECURITY_NO:
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SECURITYSETTINGMODIFY, true, true ) );
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_SECURITY_NO: //창고 보안 암호 서버에 요청
|
||
{
|
||
SMSG_SECURITY_NO* pSecurityMsg = static_cast<SMSG_SECURITY_NO*>(pGameMsg);
|
||
|
||
TS_CS_SECURITY_NO msg;
|
||
msg.mode = pSecurityMsg->mode;
|
||
::strncpy( msg.security_no, pSecurityMsg->security_no, 18 );
|
||
|
||
PendMessage( &msg );
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_CS_CREATE_SECURITY_NO: //새 보안 암호 서버에 확인 요청
|
||
{
|
||
SMSG_CS_CREATE_SECURITY_NO* pSecurityMsg = static_cast<SMSG_CS_CREATE_SECURITY_NO*>(pGameMsg);
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_CHANGE_SECURITY_NO: //보안 암호 변경 서버에 확인 요청
|
||
{
|
||
SMSG_CHANGE_SECURITY_NO* pSecurityMsg = static_cast<SMSG_CHANGE_SECURITY_NO*>(pGameMsg);
|
||
|
||
/*
|
||
TS_CS_CHANGE_SECURITY_NO msg;
|
||
::strncpy( msg.security_no_old, pSecurityMsg->security_no_old, 18 );
|
||
::strncpy( msg.security_no, pSecurityMsg->security_no, 18 );
|
||
|
||
PendMessage( &msg );
|
||
*/
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_CS_REQUEST_CLEAR_SECURITY_NO: //보안 암호 삭제 요청
|
||
{
|
||
SMSG_CS_REQUEST_CLEAR_SECURITY_NO* pSecurityMsg = static_cast<SMSG_CS_REQUEST_CLEAR_SECURITY_NO*>(pGameMsg);
|
||
|
||
/*
|
||
TS_CS_REQUEST_CLEAR_SECURITY_NO msg;
|
||
|
||
PendMessage( &msg );
|
||
*/
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_SC_CLEAR_SECURITY_NO: //보안 암호 삭제 수락 여부
|
||
{
|
||
SMSG_SC_CLEAR_SECURITY_NO* pSecurityMsg = static_cast<SMSG_SC_CLEAR_SECURITY_NO*>(pGameMsg);
|
||
if(pSecurityMsg->clearable)
|
||
{
|
||
m_pGameMng->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SECURITYCLEAR, true, true ) );
|
||
pGameMsg->bUse = true;
|
||
}
|
||
else
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_PASSWORD_COMPARE( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SECURITYCLEAR, SIMSG_UI_PASSWORD_COMPARE::FAILED_ACCESS_DENIED_FROM_SERVER) );
|
||
}
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
case MSG_CS_CLEAR_SECURITY_NO: //보안 암호 삭제를 위한 암호, 주민번호 보내기.
|
||
{
|
||
SMSG_CS_CLEAR_SECURITY_NO* pSecurityMsg = static_cast<SMSG_CS_CLEAR_SECURITY_NO*>(pGameMsg);
|
||
|
||
/*
|
||
TS_CS_CLEAR_SECURITY_NO msg;
|
||
::strncpy( msg.security_no, pSecurityMsg->security_no, 18 );
|
||
::strncpy( msg.password, pSecurityMsg->password, 18 );
|
||
|
||
PendMessage( &msg );
|
||
*/
|
||
|
||
pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
|
||
default:
|
||
{
|
||
//_oprint( "처리 안 한 메세지 : [%d]\n", pGameMsg->nType );
|
||
//pGameMsg->bUse = true;
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::UpdatePendingTime( AR_TIME arTime )
|
||
{
|
||
m_dwServerWaitStartTime = m_dwTime;
|
||
m_dwServerWaitTime = arTime*10;
|
||
|
||
//MSG 박스 띄운다.
|
||
std::string strMsg;
|
||
GetPendingTimeString(m_dwServerWaitTime, strMsg);
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UPDATE_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_LOGINWAITING, strMsg.c_str() ) );
|
||
}
|
||
|
||
void SGameRenewalLobby::GetPendingTimeString( DWORD dwServerWaitTime, std::string& strMsg )
|
||
{
|
||
int nWaitMinute = dwServerWaitTime / 1000; // Miliseconds -> Seconds conversion
|
||
int nWaitSecond = nWaitMinute % 60; // Remainder after dividing by 60
|
||
nWaitMinute = nWaitMinute / 60; // Seconds -> Minutes conversion
|
||
if (nWaitMinute < 1)
|
||
{
|
||
strMsg = CStringUtil::StringFormat( S(113) ); // The server is busy. <BR>Your waiting time is less than 1 minute.
|
||
}
|
||
else
|
||
{
|
||
strMsg = SR(114, "#@minute@#", nWaitMinute ); // Waiting. The server is too busy. <BR> The waiting time is approximately #@minute@# min(s)
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::CustomingAvatar( SAvatarSelector* pSelectAvatar, int PartsID, SIMSG_UIWND_NOTIFY_TO_LOBBY* pBtnClickMsg )
|
||
{
|
||
if( !pSelectAvatar || !pBtnClickMsg ) return;
|
||
|
||
_oprint("[CustomingAvatar] m_nSelectIndex: %d; m_textureId: %d; m_szButtonID: %s; m_bJustPress: %s\n",
|
||
pBtnClickMsg->m_nSelectIndex, pBtnClickMsg->m_textureId, pBtnClickMsg->m_szButtonID, pBtnClickMsg->m_bJustPress ? "true" : "false");
|
||
|
||
_oprint("[SGameRenewalLobby::CustomingAvatar] PartsID: %d pBtnClickMsg->m_nSelectIndex: %d\n", PartsID, pBtnClickMsg->m_nSelectIndex);
|
||
|
||
switch( PartsID )
|
||
{
|
||
case MODEL_INFO::NUDE_HAIR:
|
||
{
|
||
int nRealCode;
|
||
switch (pBtnClickMsg->m_nSelectIndex)
|
||
{
|
||
case 200: { nRealCode = 101; break; }
|
||
case 201: { nRealCode = 103; break; }
|
||
case 202: { nRealCode = 105; break; }
|
||
case 203: { nRealCode = 701; break; }
|
||
case 204: { nRealCode = 702; break; }
|
||
case 205: { nRealCode = 703; break; }
|
||
case 206: { nRealCode = 704; break; }
|
||
case 207: { nRealCode = 705; break; }
|
||
default: { nRealCode = 101; break; }
|
||
}
|
||
|
||
// Hardcode this bullshit because it becomes with alpha for some reason, so transparent hair, fuck it
|
||
if (pSelectAvatar->GetHairColorIndex() < 10)
|
||
{
|
||
if (pSelectAvatar->GetRace() == GCLAN_GAIA)
|
||
{
|
||
//pSelectAvatar->SetHairColorRGB(15804416);
|
||
//pSelectAvatar->SetHairColorIndex(0);
|
||
}
|
||
//pBtnClickMsg->m_hairColor = pSelectAvatar->GetHairColorIndex();
|
||
//CustomingAvatar(pSelectAvatar, c_nLOBBY_NUDE_HAIRCOLOR, pBtnClickMsg);
|
||
}
|
||
|
||
pSelectAvatar->SetHairIndex( pBtnClickMsg->m_nSelectIndex );
|
||
pSelectAvatar->SetNudeCode(PartsID, nRealCode);
|
||
}
|
||
break;
|
||
case MODEL_INFO::NUDE_FACE:
|
||
{
|
||
pSelectAvatar->SetFaceIndex( pBtnClickMsg->m_nSelectIndex );
|
||
pSelectAvatar->SetNudeCode( PartsID, GetDefaultItemDB().GetFaceID(pBtnClickMsg->m_nSelectIndex) );
|
||
}
|
||
break;
|
||
case MODEL_INFO::NUDE_BODY:
|
||
{
|
||
int OFFSET = 400;
|
||
pSelectAvatar->SetBodyIndex( pBtnClickMsg->m_nSelectIndex - OFFSET);
|
||
pSelectAvatar->SetNudeCode( PartsID, GetDefaultItemDB().GetBodyID(pBtnClickMsg->m_nSelectIndex - OFFSET) );
|
||
}
|
||
break;
|
||
case MODEL_INFO::NUDE_DECO:
|
||
{
|
||
int OFFSET = 100;
|
||
pSelectAvatar->SetDecoIndex( pBtnClickMsg->m_nSelectIndex - OFFSET);
|
||
}
|
||
break;
|
||
case c_nLOBBY_NUDE_SKIN:
|
||
{
|
||
unsigned long hair_rgb = pSelectAvatar->GetHairColorRGB();
|
||
unsigned long color_value = pBtnClickMsg->m_nSelectIndex;
|
||
pSelectAvatar->SetSkinColorized( color_value, K3DTexture::COLORIZED_DEF, hair_rgb );
|
||
}
|
||
break;
|
||
case c_nLOBBY_NUDE_HAIRCOLOR:
|
||
{
|
||
unsigned long color_value = static_cast<unsigned long>(pBtnClickMsg->m_hairColor);
|
||
if (color_value > 10)
|
||
{
|
||
pSelectAvatar->SetHairColorRGB(color_value);
|
||
pSelectAvatar->SetHairColorIndex(0);
|
||
}
|
||
else
|
||
{
|
||
pSelectAvatar->SetHairColorRGB(-16728141);
|
||
pSelectAvatar->SetHairColorIndex(pBtnClickMsg->m_textureId);
|
||
}
|
||
}
|
||
break;
|
||
}
|
||
|
||
|
||
pSelectAvatar->RefreshAvatar( false );
|
||
pSelectAvatar->RefreshSkinColorized();
|
||
}
|
||
|
||
|
||
void SGameRenewalLobby::PlayRaceCamera( int nRace, int nCameraIndex, int nAniType/*=SEQTYPE_NORMAL*/, float fPlayRate/*=4.8000*/ )
|
||
{
|
||
KSeqForm* pCamera = GetRaceCamera(nRace);
|
||
if( pCamera )
|
||
{
|
||
pCamera->PlayAnimation( m_dwTime, pCamAniKey[nCameraIndex], nAniType, fPlayRate );
|
||
if (nCameraIndex == LOBBY_CAMERA_ZOOMING || nCameraIndex == LOBBY_CAMERA_ZOOMING_OUT)
|
||
{
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_SEND_DATA( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, number_t( true ), "ani_cam" ) );
|
||
}
|
||
else
|
||
{
|
||
m_pGameMng->InterfaceMsg(&SIMSG_UI_SEND_DATA(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATECHAR_SECOND, number_t(false), "ani_cam"));
|
||
}
|
||
}
|
||
}
|
||
|
||
// sonador 10.5.1 크레딧 화면 구현
|
||
void SGameRenewalLobby::PlayRaceSound( int nRace, bool bMusic/*=true*/, bool bForce, int nSwapTime )
|
||
{
|
||
if( m_pMSoundMgr == NULL ) return;
|
||
|
||
if( !bMusic ) m_pMSoundMgr->StopMusic();
|
||
else if( bForce || m_nSelectRaceEffectSound != nRace || !m_pMSoundMgr->IsPlayMusic() )
|
||
{
|
||
m_nSelectRaceEffectSound = nRace;
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_DEVA: m_pMSoundMgr->SwapPlayMusic( c_szDevaMusic, nSwapTime, nSwapTime, 100, true ); break;
|
||
case GCLAN_GAIA: m_pMSoundMgr->SwapPlayMusic( c_szGaiaMusic, nSwapTime, nSwapTime, 100, true ); break;
|
||
case GCLAN_ASURA: m_pMSoundMgr->SwapPlayMusic( c_szAsuraMusic, nSwapTime, nSwapTime, 100, true ); break;
|
||
}
|
||
}
|
||
|
||
if( !bForce && m_nSelectRaceBGM == nRace ) return;
|
||
|
||
m_nSelectRaceBGM = nRace;
|
||
switch( nRace )
|
||
{
|
||
case GCLAN_DEVA: m_pMSoundMgr->SwapPlayBGM( c_szDevaBGM, nSwapTime, nSwapTime, 100, true ); break;
|
||
case GCLAN_GAIA: m_pMSoundMgr->SwapPlayBGM( c_szGaiaBGM, nSwapTime, nSwapTime, 100, true ); break;
|
||
case GCLAN_ASURA: m_pMSoundMgr->SwapPlayBGM( c_szAsuraBGM, nSwapTime, nSwapTime, 100, true ); break;
|
||
}
|
||
}
|
||
|
||
|
||
// Initializes actual character modification menu window
|
||
void SGameRenewalLobby::SendCustomizingMsgToWnd( SAvatarSelector* pSelectAvatar )
|
||
{
|
||
if( pSelectAvatar == NULL ) return;
|
||
|
||
int nHair = pSelectAvatar->GetHairIndex();
|
||
int nFace = pSelectAvatar->GetFaceIndex();
|
||
int nBody = pSelectAvatar->GetBodyIndex();
|
||
int nSex = pSelectAvatar->GetSex();
|
||
|
||
m_pGameMng->InterfaceMsg( &SIMSG_UI_CUSTOMIZIG_UPDATE( m_nSelectCustomRace, nHair, nFace, nBody, nSex) );
|
||
}
|
||
|
||
// _LOBBY 임시...
|
||
void SGameRenewalLobby::LoadTxtProp( const char * pFileName, std::vector< EPOINT_NX3 > & vList )
|
||
{
|
||
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( pFileName );
|
||
if( !pRes ) return;
|
||
|
||
size_t nLen = pRes->GetLength();
|
||
char * pstrTemp = new char[nLen+1];
|
||
pstrTemp[nLen] = '\0';
|
||
for( size_t i(0); nLen>i; i++ )
|
||
{
|
||
pRes->Read( &pstrTemp[i], 1 );
|
||
}
|
||
|
||
std::vector< std::string > vString;
|
||
MsgSplit( pstrTemp, vString, L"\t\r\n" );
|
||
|
||
int nLoop = (int)vString.size()/2;
|
||
|
||
int n=0;
|
||
for( int i(0); nLoop>i; i++ )
|
||
{
|
||
std::string strCube = vString[n++].c_str(); //Cube String
|
||
std::string strProp = vString[n++].c_str(); //Prop String
|
||
|
||
EPOINT_NX3 data;
|
||
data.strCube = strCube;
|
||
data.strProp = strProp;
|
||
|
||
vList.push_back( data );
|
||
}
|
||
|
||
delete [] pstrTemp;
|
||
KFileManager::Instance().DeleteStream( pRes );
|
||
vString.clear();
|
||
}
|
||
|
||
// 2010.04.22 - prodongi
|
||
void SGameRenewalLobby::VerifyCustomizeAvatarHair(SGameMessage* pGameMsg)
|
||
{
|
||
SIMSG_UIWND_NOTIFY_TO_LOBBY* msg = (SIMSG_UIWND_NOTIFY_TO_LOBBY*)pGameMsg;
|
||
SAvatarSelector* pSelectAvatar = GetCrrCustomizingAvatar();
|
||
CustomingAvatar( pSelectAvatar, MODEL_INFO::NUDE_HAIR, msg );
|
||
}
|
||
|
||
#ifdef _TERRAIN_ENABLE_
|
||
|
||
|
||
// _LOBBY
|
||
//
|
||
bool _refreshTexture( K3DTexture* pTexture, BYTE* pBit, int nW, int nH )
|
||
{
|
||
char* pBuf = NULL;
|
||
int nStride;
|
||
|
||
//Center 계산
|
||
int nHalfWidth = pTexture->GetWidth()/2;
|
||
int nHalfHeight = pTexture->GetHeight()/2;
|
||
|
||
KRect rect;
|
||
rect.left = nHalfWidth - nW/2;
|
||
rect.top = nHalfHeight - nH/2;
|
||
rect.right = nHalfWidth + nW/2;
|
||
rect.bottom = nHalfHeight + nH/2;
|
||
|
||
pTexture->LockRect( &rect, (void**)&pBuf, nStride );
|
||
//위치 조정
|
||
|
||
if( pBuf )
|
||
{
|
||
KColor* pColor;
|
||
for(int y = nH-1; y >= 0; y-- )
|
||
{
|
||
pColor = ( KColor* )pBuf;
|
||
for( int x = 0; x < nW; x++ )
|
||
{
|
||
KColor col;
|
||
col.b = pBit[(y*nW+x)*4+0];
|
||
col.g = pBit[(y*nW+x)*4+1];
|
||
col.r = pBit[(y*nW+x)*4+2];
|
||
col.a = pBit[(y*nW+x)*4+3];
|
||
pColor[x] = col;
|
||
}
|
||
pBuf += nStride;
|
||
}
|
||
pTexture->Unlock();
|
||
|
||
return true;
|
||
}
|
||
|
||
return false;
|
||
}
|
||
#endif
|
||
|
||
void SGameRenewalLobby::sendAccountWithMacAddress(TS_CA_ACCOUNT& msg_account)
|
||
{
|
||
extern void getMacAddress(unsigned char* macAddress);
|
||
unsigned char macAddress[6];
|
||
getMacAddress(macAddress);
|
||
sendAccountWithAddInfo(msg_account, TS_CA_ACCOUNT::MACADDRESS, macAddress);
|
||
}
|
||
|
||
void SGameRenewalLobby::sendAccountWithAddInfo(TS_CA_ACCOUNT& msg_account, int type, unsigned char* addData)
|
||
{
|
||
if (addData)
|
||
{
|
||
size_t oriSize = sizeof (TS_CA_ACCOUNT);
|
||
size_t addInfoSize = sizeof (TS_CA_ACCOUNT::AdditionalInfo);
|
||
size_t addDataSize = strlen((char*)addData);
|
||
size_t totalSize = oriSize + addInfoSize + addDataSize;
|
||
|
||
TS_CA_ACCOUNT::AdditionalInfo addInfo;
|
||
addInfo.type = type;
|
||
addInfo.size = addDataSize;
|
||
|
||
char* re_msg_account = new char[totalSize];
|
||
|
||
msg_account.size += addInfoSize + addDataSize;
|
||
msg_account.set_check_sum();
|
||
|
||
memcpy(re_msg_account, &msg_account, oriSize);
|
||
memcpy(re_msg_account+oriSize, (char*)&addInfo, addInfoSize);
|
||
memcpy(re_msg_account+oriSize+addInfoSize, addData, addDataSize);
|
||
|
||
AuthPendMessage((TS_MESSAGE*)re_msg_account);
|
||
SAFE_DELETE_ARRAY(re_msg_account);
|
||
}
|
||
else
|
||
{
|
||
AuthPendMessage(&msg_account);
|
||
}
|
||
}
|
||
|
||
void SGameRenewalLobby::sendAccountWithIovation(TS_CA_ACCOUNT& msg_account)
|
||
{
|
||
sendAccountWithAddInfo(msg_account, TS_CA_ACCOUNT::BLACKBOX, (unsigned char*)getIovationBlackBox());
|
||
}
|