#include "SunClientPrecompiledHeader.h" #include "SceneBase.h" #include "BattleScene.h" #include "GameFramework.h" #include "VillageScene.h" #include "SoundEffect.h" #include "ItemManager.h" #include "SCSlotHeader.h" #include "Hero.h" #include "Item.h" #include "SoundBGM.h" #include "ObjectManager.h" #include "ShopDialog.h" #include "InterfaceManager.h" #include "NPC.h" #include "NpcInfoParser.h" #include "BattleLobby.h" #include "Map.h" #include "BGMSoundInfoParser.h" #include "Mouse.h" #include "globalfunc.h" #include "OptimizationManager.h" #include "uiBattleZoneMan/uiBattleZoneMan.h" #include "uiOptionMenuMan/uiOptionMenuMan.h" #include "OptionDialog.h" #ifdef _NA_000000_20121210_REFACTORY_GAME_USER #include "uiBattlezone2Man/uiBattlezone2Man.h" #endif //_NA_000000_20121210_REFACTORY_GAME_USER #ifdef _NA_007115_20140313_MONDSCHIEN_RENEWAL #include "uiDominationTowerMan/uiDominationTowerMan.h" #endif // _NA_007115_20140313_MONDSCHIEN_RENEWAL #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND #include "ChaosSystem/ChaosSystemMan.h" #include "ChaosSystem/uiChaosZoneBattle.h" #include "ChaosSystem/ChaosSystemData.h" #endif //_NA_008679_20160202_REWORK_BATTLEGROUND VillageScene g_VillageScene; VillageScene::VillageScene() { m_SceneType = SCENE_TYPE_VILLAGE; BattleScene::SetLobbyFlag(FALSE); BattleScene::SetLobbyInPending(FALSE); BattleScene::SetLobbyOutPending(FALSE); SetRqstFieldMoveMapCode(0); } VillageScene::~VillageScene() { } void VillageScene::Activate( void ) { BattleScene::Activate(); } BOOL VillageScene::Init( void ) { BattleScene::Init(); GlobalFunc::PLAY_BGM( MAP_TYPE_DEFAULT, g_pMap->GetCurrentFieldID(), eZONETYPE_VILLAGE ); // ³Ý¸ðµå¿¡¼­´Â Player Enter Ack¸¦ ¹ÞÀºÈÄ¿¡ Npc¸¦ ¼¼¿ì´Â°ÍÀ¸·Î Çß´Ù. g_KeyQueueManager.Reset(); g_KeyQueueManager.SetKey(DIK_ESCAPE); g_KeyQueueManager.SetDefaultFun(GlobalFunc::DoSystemDialog); g_OptimizationManager.SetPerformanceMode(TRUE); #ifdef _NA_000000_20121210_REFACTORY_GAME_USER //ÀÌÀü¾À SCENE_TYPE postSceneType = GameFramework::GetPostSceneType(); if(postSceneType == SCENE_TYPE_MISSION) { uiBattlezone2Man* ui_battlezone2_manager_ = GET_DIALOG_MANAGER(uiBattlezone2Man, UIMAN_BATTLE_ZONE_MANAGER); if (ui_battlezone2_manager_ != NULL) { BYTE isStateBattleZone2 = ui_battlezone2_manager_->battlezone_room_state(); //ÇöÀç ¹èÆ²Á¸ ÀÔÀå »óŰ¡ ·Îºñ »óÅÂ¿Í °°´Ù¸é if(isStateBattleZone2 == uiBattlezone2Man::ROOM_STATE_LOBBY) { ui_battlezone2_manager_->ShowBattlezoneDialog(uiBattlezone2Man::BATTLEZONE2_DIALOG_LOBBY,true); } } } #endif //_NA_000000_20121210_REFACTORY_GAME_USER #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND else if (postSceneType == SCENE_TYPE_BATTLEGROUND) { // ÀÌÀü ¾ÀÀÌ ÀüÀåÀ̾úÀ¸¸é ÀüÀå âÀ» ¿­¾îÁÜ uiChaosSystemMan* chaos_manager = GET_DIALOG_MANAGER(uiChaosSystemMan, UIMAN_CHAOS); if (chaos_manager) { chaos_manager->ShowChaosZone(uiChaosZoneBattle::kDialog_ID, true); keyMsg msg; ZeroMemory(&msg,sizeof(msg)); msg.dwType = eDoType_ChaoszoneDialog; msg.DoSomething = GlobalFunc::DoChaoszoneDialog; g_KeyQueueManager.PushBack(msg); // ÀçÁøÀÔ ¾È³»Ã¢ Ç÷¹±× ÄÑÁÜ uiChaosZoneBattle* chaos_zone_battle = GET_CAST_DIALOG(uiChaosZoneBattle, IM_CHAOS_SYSTEM_MANAGER::CHAOSZONE_BATTLE); if (chaos_zone_battle) { chaos_zone_battle->set_notice_re_enter_message(true); } } } #endif //_NA_008679_20160202_REWORK_BATTLEGROUND #ifdef _NA_007115_20140313_MONDSCHIEN_RENEWAL // ÇǼº ¿ÀºêÁ§Æ®°¡ ¶ßÁö ¾Êµµ·Ï uiDominationTowerMan* domination_manager_ptr = GET_DIALOG_MANAGER(uiDominationTowerMan, UIMAN_DOMINATIONWAR_TOWER); if (domination_manager_ptr && false == domination_manager_ptr->IsShowDominationObject()) { domination_manager_ptr->set_domination_object_show(FALSE); } #endif // _NA_007115_20140313_MONDSCHIEN_RENEWAL return TRUE; } BOOL VillageScene::Process( DWORD dwTick ) { BattleScene::Process(dwTick); int i; for (i = 0; i < 10; ++i) { TCHAR szText[INTERFACE_STRING_LENGTH]; Sprintf(szText, _T("PRT%d"), i); this->CheckHeroInShortcutBattleArea(szText, StrToWzID(szText)); Sprintf(szText, _T("OUT%d"), i); this->CheckHeroInShortcutBattleArea(szText, StrToWzID(szText)); Sprintf(szText, _T("MP0%d"), i); this->CheckHeroInShortcutBattleArea(szText, StrToWzID(szText)); } SendHeroSectorIndex(); return TRUE; } BOOL VillageScene::Render( DWORD dwTick ) { BattleScene::Render(dwTick); return TRUE; } void VillageScene::Release( void ) { BattleScene::Release(); g_SoundBGM.Stop(); BattleScene::SetLobbyFlag(FALSE); BattleScene::SetLobbyInPending(FALSE); BattleScene::SetLobbyOutPending(FALSE); g_OptimizationManager.SetPerformanceMode(FALSE); // ¿É¼Ç¼³Á¤ LOD °Å¸®·Î ¼¼ÆÃ #ifdef _NA_000000_20130114_RENEWER_UI #else OptionDialog* option_dialog_ptr = GET_CAST_DIALOG(OptionDialog, IM_OPTION_MENU_MANAGER::OPTION_DIALOG); if (option_dialog_ptr != NULL) { int lod_option = option_dialog_ptr->GetOptionParam()->GetOptionValue( nOptionType::LOD_LEVEL ); GameFunc::ApplyLODDistance(lod_option); } #endif } void VillageScene::ProcessKeyInput_GM() { BattleScene::ProcessKeyInput_GM(); #if defined ( _ZONE_TEST_LOBBY_IN_SINGLE ) if (g_Input.GetState(DIK_MINUS, KS_DOWN) ) { // ¹Ì¼Ç ·Îºñ »ý¼º BattleRoomEntry Entry; Entry.Init(); Entry.SetPublic(eZONEPUBLIC_PUBLIC); Entry.SetType(eZONETYPE_MISSION); Entry.SetMapCode(1); Entry.SetFieldIndex(0); // ¹Ì¼ÇÀº ¹«Á¶°Ç 0¹ø À妽º¸¦ ¼±ÅÃÇÑ´Ù. Entry.SetMaxLevel(4); Entry.SetMaxPlayer(8); Entry.SetPassword(""); BattleLobby * pBattleReady = (BattleLobby *)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_BATTLE_LOBBY); BattleScene::SetPendingBattleRoomEntry( &Entry ); uiBattleZoneMan* pZoneMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_BATTLEZONE)); if(pZoneMan) { pZoneMan->SetLobbyMasterPlayerKey(g_pHero->GetObjectKey()); } pBattleReady->ShowWindow(TRUE); BattleScene::SetLobbyFlag(TRUE); UserSlot EnterUser; EnterUser.SetPlayerKey( g_pHero->GetObjectKey() ); pBattleReady->AddPlayer( EnterUser ); MSG_CG_SYNC_PLAYER_ENTER_ACK SendPacketAck; SendPacketAck.Encode(); g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck)); } #ifdef _JAPAN else if ( g_Input.GetState( DIK_CIRCUMFLEX, KS_DOWN )) #else else if ( g_Input.GetState( DIK_EQUALS, KS_DOWN )) #endif { // ÇåÆÃ ·Îºñ »ý¼º BattleRoomEntry Entry; Entry.Init(); Entry.SetPublic(eZONEPUBLIC_PUBLIC); Entry.SetType(eZONETYPE_CHUNTING); Entry.SetMapCode(1001); Entry.SetFieldIndex(0); Entry.SetMaxLevel(8); Entry.SetMaxPlayer(8); Entry.SetPassword(""); BattleLobby * pBattleReady = (BattleLobby *)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_BATTLE_LOBBY); uiBattleZoneMan* pZoneMan = static_cast(g_InterfaceManager.GetUserInterfaceManager(UIMAN_BATTLEZONE)); if(pZoneMan) { pZoneMan->SetBattleRoomEntry( &Entry ); BattleScene::SetPendingBattleRoomEntry(&Entry ); pZoneMan->SetLobbyMasterPlayerKey(g_pHero->GetObjectKey()); } pBattleReady->ShowWindow(TRUE); BattleScene::SetLobbyFlag(TRUE); UserSlot EnterUser; EnterUser.SetPlayerKey( g_pHero->GetObjectKey() ); pBattleReady->AddPlayer( EnterUser ); MSG_CG_SYNC_PLAYER_ENTER_ACK SendPacketAck; SendPacketAck.Encode(); g_pApplication->AddVirtualPacket(CI_GAMESERVERIDX, (BYTE *)&SendPacketAck, sizeof(SendPacketAck)); } #endif } BOOL VillageScene::SceneWndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam , SI_MESSAGE *stMessage) { return FALSE; } void VillageScene::OnConnectWorldServer() { m_iPrevSectorIndex = -1; SceneBase::OnConnectWorldServer(); } RELATIONKIND::TYPE VillageScene::GetRelationKindOfCharacter( Character * pObject, BOOL bForceEnemy ) { return GameFunc::GetRelationKindOfPlayerInVillage( pObject, bForceEnemy ); }