bool MainApp::Initialize() { if(TextData::Load(Folder::Merge(Folder::System(), "TextData.shn")) == false) { InitError("Text Data Initialize Fail!"); return false; } if( g_kServer.m_bCP ) { } else { } SetClassLongPtr(GetWindowReference(), GCLP_HICON, (LONG_PTR)LoadIcon(GetInstanceReference(),MAKEINTRESOURCE(IDI_GAMEICON))); splog(("niapplcation::init()\n")); if(NiApplication::Initialize() == false) return false; std::string SplashTexName, ProgressBarTexName; SplashTexName = Folder::Merge(Folder::Menu(), "loading\\NowLoading.TGA"); ProgressBarTexName = Folder::Merge(Folder::Menu(),"loading\\ProgressBar.tga"); m_SplashTexName = SplashTexName; m_ProgressBarTexName = ProgressBarTexName; DisplaySplash(m_SplashTexName.c_str(), m_ProgressBarTexName.c_str(), 10); splog(("niapplcation::init() - succ\n")); if(::PgInitInstance() == false) { InitError("PgInstance Initialize Fail!"); return false; } if(InitAppHandle() == false) { InitError("AppHandle Initialize Fail!"); return false; } if(this->InitInput() == false) { InitError("Input Initialize Fail!"); return false; } if(Font::Init() == false) { InitError("Font Initialize Fail!"); return false; } if(g_kNetMgr.Init() == false) { InitError("Network Initialize Fail!"); return false; } DisplaySplash(m_SplashTexName.c_str(), m_ProgressBarTexName.c_str(), 20); if(InitGameData() == false) { InitError("Game Data Initialize Fail!"); return false; } DisplaySplash(m_SplashTexName.c_str(), m_ProgressBarTexName.c_str(), 70); if(g_kCharMgr.Init() == false) { InitError("Character Manager Initialize Fail!"); return false; } if(g_kCharResMgr.Init() == false) { InitError("Character Resource Manager Initialize Fail!"); return false; } DisplaySplash(m_SplashTexName.c_str(), m_ProgressBarTexName.c_str(), 90); if(g_kMapObjMgr.Init() == false) { InitError("Map Object Manager Initialize Fail!"); return false; } if(g_kDropItemMgr.Init() == false) { InitError("DropItem Manager Initialize Fail!"); return false; } if(MenuTexMgr::Init() == false) { InitError("Menu Texture Manager Initialize Fail!"); return false; } if(g_kWorld.Init( (float)m_pkAppWindow->GetWidth(), (float)m_pkAppWindow->GetHeight() ) == false) { InitError("World Initialize Fail!"); return false; } if(Engine3D::Init(g_kWorld.GetCamera()) == false) { InitError("Engine3D Initialize Fail!"); return false; } g_kSoundMgr.Init(); LoadSoundOption(); if(g_kEffectMgr.Init() == false) { InitError("Effect Initialize Fail!"); return false; } if(g_kScrnBDMgr.Init() == false) { InitError("Speech Initialize Fail!"); return false; } if(g_kTextEffMgr.Init() == false) { InitError("Text Effect Initialize Fail!"); return false; } if( QuestDataMgr::GetQuest() == NULL ) { InitError("QuestData Initialize Fail!"); return false; } m_dwStyle = GetWindowLong(m_pkAppWindow->GetWindowReference(), GWL_STYLE); RECT kRect; GetWindowRect(m_pkAppWindow->GetRenderWindowReference(),&kRect); m_uiStartHeight = kRect.bottom - kRect.top; if(m_bRendererDialog == false && MachineOpt::GetWindowFullMode()) { ReCreateRenderer(); } NiSrand((unsigned int)(GetCurrentTime()*1000.0f)); m_spRenderer->SetBackgroundColor(NiColor(1.0f, 0, 1.0f)); NiAlphaAccumulatorPtr spAlphaAccum = new NiAlphaAccumulator; m_spRenderer->SetSorter( spAlphaAccum ); Pgg_kFrameMgr.RegisterAllFrameWork(); m_kStartFrameWorkID = AccountFrameWorkID; ProcessCommandLine(); g_kWorld.SetCameraZoomRatePerTick(0.001f); g_kWorld.SetCameraZoomMin(40.0f); g_kWorld.SetCameraZoomMax(390.0f); g_kWorld.SetCameraZoomDef(100.0f); _GetPostProcessEffectMgr();//생성을 위해 미리 호출 CDataDocument::Instance()->Load( Folder::Merge( Folder::Main() , "Default.conf" ) ); Pgg_kFrameMgr.Start(AccountFrameWorkID); MaskShader::GetShader(); WIN32_FIND_DATA FindData; char acFullPath[128]; } bool MainApp::MeasureTime() { // start performance measurements if (m_fLastTime == -1.0f) { m_fLastTime = NiGetCurrentTimeInSec(); //m_fLastTime = timeGetTime()/1000.0f; m_fAccumTime = 0.0f; m_iClicks = 0; } // measure time //m_fCurrentTime = timeGetTime()/1000.0f; m_fCurrentTime = NiGetCurrentTimeInSec(); float fDeltaTime = m_fCurrentTime - m_fLastTime; // NVPerfHUD support! if (m_bNVPerfHUD && fDeltaTime == 0.0f) return true; if (fDeltaTime < 0.0f) fDeltaTime = 0.0f; m_fLastTime = m_fCurrentTime; m_fAccumTime += fDeltaTime; // frame rate limiter if (m_fAccumTime < (m_fLastFrame + m_fMinFramePeriod)) return false; m_fFrameTime = m_fAccumTime - m_fLastFrame; m_fLastFrame = m_fAccumTime; return true; } void MainApp::OnIdle() { if (m_pkNetMarbleLogo) return; if(GameFrameWork::ms_bWindowSizeChanged) { GameFrameWork::ms_bWindowSizeChanged = false; ReCreateRenderer(); } if (!MeasureTime()) return; PgProfile(MainLoop); Timer::Update(GetCurrentTime()); if (m_bEnableInput) UpdateInput(); ProcessInput(); // cursor update Cursor::Update(Timer::GetCurTime()); if (m_bFrameRateEnabled && m_pkFrameRate) { m_pkFrameRate->TakeSample(); m_pkFrameRate->Update(); } g_kNetMgr.Update(Timer::GetCurTime()); Pgg_kFrameMgr.Update(Timer::GetCurTime()); CQuest* pQuest = QuestDataMgr::GetQuest(); pQuest->QuestPlayer_TimeProcess(); if(IsSkipDraw(Timer::GetCurTime()) == false) { NiDX9Renderer* pkRenderer = (NiDX9Renderer *)NiRenderer::GetRenderer(); DWORD dwRendererResetCount = pkRenderer->GetResetCounter(); if (dwRendererResetCount != m_dwResetCounter) { Cursor::OnResetDevice(); PortraitTextureBuffer::Terminate(); m_dwResetCounter = dwRendererResetCount; } m_spRenderer->SetBackgroundColor(g_kWorld.GetBackGroundColor()); m_spRenderer->BeginFrame(); { m_spRenderer->BeginUsingDefaultRenderTargetGroup(NiRenderer::CLEAR_ALL); Pgg_kFrameMgr.Draw(); Cursor::Draw(); m_spRenderer->EndUsingRenderTargetGroup(); } m_spRenderer->EndFrame(); m_spRenderer->DisplayFrame(); if ( !m_bFullscreen && m_pkAppWindow->GetStatusPanesExist() && m_pkAppWindow->GetNumStatusPanes()) { DrawFrameRate(); } m_iClicks++; PgProfileIncFrameCounter; }