#include "stdafx.h" #include "SUIMainSubMenuWnd.h" #include "KUIControlButton.h" #include "SGameManager.h" #include "SGameMessage.h" //#include "SGameMessageUI.h" #include "SGameWorldKeymapping.h" #include "SStringDB.h" #include "SGameOption.h" //servantes 2010.11.02 void SUIMainMenuSubWnd::MovePos(int x,int y) { KUIWnd::MovePos(x,y); } void SUIMainMenuSubWnd::SetChildToolTip() { KUIControl* cashShop = dynamicCast(GetChild( "button_cash" )); KUIControl* inventory = dynamicCast(GetChild( "button_item" )); KUIControl* skill = dynamicCast(GetChild( "button_skill" )); KUIControl* character = dynamicCast(GetChild( "button_character" )); KUIControl* creatureFormation = dynamicCast(GetChild( "button_formation" )); KUIControl* creatureSkill = dynamicCast(GetChild( "button_summon_skill" )); KUIControl* creatureControl = dynamicCast(GetChild( "button_summon" )); KUIControl* messenger = dynamicCast(GetChild( "button_messenger" )); KUIControl* partymatching = dynamicCast(GetChild( "button_partymatching" ));// 파티매칭 KUIControl* guild = dynamicCast(GetChild( "button_guild")); KUIControl* quest = dynamicCast(GetChild( "button_quest" )); KUIControl* worldMap = dynamicCast(GetChild( "button_worldmap" )); KUIControl* handling = dynamicCast(GetChild( "button_operation" )); KUIControl* help = dynamicCast(GetChild( "button_help" )); KUIControl* system = dynamicCast(GetChild( "button_system" )); KUIControl* userKey = dynamicCast(GetChild( "button_key" )); /// 2012.05.09 - prodongi KUIControl* title = dynamicCast(GetChild("button_title_01")); std::string sz; if( cashShop ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::CROWSHOP); cashShop->SetTooltip(sz.c_str()); } if( inventory ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::INVENTORY);inventory->SetTooltip(sz.c_str());} if( skill ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::SKILL);skill->SetTooltip(sz.c_str()); } if( character ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::CHARACTER);character->SetTooltip(sz.c_str()); } if( creatureFormation ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::CREATUREFORMATION);creatureFormation->SetTooltip(sz.c_str()); } if( creatureSkill ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::CREATURESKILL);creatureSkill->SetTooltip(sz.c_str()); } if( creatureControl ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::CREATUREINFO);creatureControl->SetTooltip(sz.c_str()); } if( messenger ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::MESSENGER);messenger->SetTooltip(sz.c_str()); } if( partymatching ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::PARTYMATCHING_WND);partymatching->SetTooltip(sz.c_str()); }// 파티매칭 if( guild ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::GUILD);guild->SetTooltip(sz.c_str()); } if( quest ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::QUEST);quest->SetTooltip(sz.c_str()); } if( worldMap ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::WOLRDMAP);worldMap->SetTooltip(sz.c_str()); } if( handling ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::CONTROL);handling->SetTooltip(sz.c_str()); } if( help ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::HELP);help->SetTooltip(sz.c_str()); } if( system ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::SYSTEM);system ->SetTooltip(sz.c_str()); } if( userKey ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::OPTION);userKey ->SetTooltip(sz.c_str()); } /// 2012.05.09 - prodongi if( title ) { sz = "<#898989>"; sz += GetGameKeymapping().GetHotKeyStringInfo(HOTKEYCODE::TITLE);title->SetTooltip(sz.c_str()); } } bool SUIMainMenuSubWnd::InitControls( KPoint kPos ) { // 버튼 클릭 영역 지정 //SetValidRect( "mainmenu_item" , KRect(0,0,-c_nButtonClickArea,0) ); //SetValidRect( "mainmenu_character", KRect(c_nButtonClickArea,0,-c_nButtonClickArea,0) ); //SetValidRect( "mainmenu_summon" , KRect(c_nButtonClickArea,0,-c_nButtonClickArea,0) ); //SetValidRect( "mainmenu_chat" , KRect(c_nButtonClickArea,0,-c_nButtonClickArea,0) ); //SetValidRect( "mainmenu_skill" , KRect(c_nButtonClickArea,0,-c_nButtonClickArea,0) ); //SetValidRect( "mainmenu_messanger", KRect(c_nButtonClickArea,0,-c_nButtonClickArea,0) ); //SetValidRect( "mainmenu_system" , KRect(c_nButtonClickArea,0,-c_nButtonClickArea,0) ); /*if( cashShop ) { cashShop->SetTooltip( S( 6673 ) ); cashShop->SetShow( false ); } if( petCommand ) { petCommand->SetTooltip( S( 6674 ) ); petCommand->SetShow( false ); } if( inventory ) inventory->SetTooltip( S( 6675 ) ); if( skill ) skill->SetTooltip( S( 6676 ) ); if( character ) character->SetTooltip( S( 6677 ) ); if( creatureFormation ) creatureFormation->SetTooltip( S( 6678 ) ); if( creatureSkill ) creatureSkill->SetTooltip( S( 6679 ) ); if( creatureControl ) creatureControl->SetTooltip( S( 6680 ) ); if( messenger ) messenger->SetTooltip( S( 6681 ) ); if( quest ) quest->SetTooltip( S( 6683 ) ); if( worldMap ) worldMap->SetTooltip( S( 6684 ) ); if( help ) help->SetTooltip( S( 6686 ) );*/ SetChildToolTip(); return SUIWnd::InitControls(kPos); } void SUIMainMenuSubWnd::PumpUpMessage( LPCSTR lpszControlID, DWORD nMessage, DWORD lparam, DWORD wparam ) { switch(nMessage) { case KUI_MESSAGE::KBUTTON_CLICK: { m_pGameManager->StartSound( "ui_click_menu01.wav" ); if( 0 == ::_stricmp( "button_character" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARINFO ) ); else if( 0 == ::_stricmp( "button_help" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( "toggle_help" ) ); //else if( 0 == ::_stricmp( "button_help" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_BADGE ) ); else if( 0 == ::_stricmp( "button_skill" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILL ) ); else if( 0 == ::_stricmp( "button_item" , lpszControlID ) ) { //servantes 2010.11.02 SUIWnd* pWnd = m_pGameManager->GetSUI( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY ); if(pWnd == NULL) return ; if(pWnd->IsShow() == false) { bool bOpenEquipWndFlag = GetGameOption().GetOpenEquipWnd(); if(bOpenEquipWndFlag) { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_EQUIPMENT, true ) ); // 장비창. } m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY, true ) ); // 인벤토리. } else { bool bOpenEquipWndFlag = GetGameOption().GetOpenEquipWnd(); if(bOpenEquipWndFlag) { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_EQUIPMENT, false ) ); // 장비창. } m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY, false ) ); // 인벤토리. } // m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_EQUIPMENT ) ); // 장비창. // m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY ) ); // 인벤토리. } else if( 0 == ::_stricmp( "button_operation" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MOTION ) ); else if( 0 == ::_stricmp( "button_worldmap" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_WORLDMAP ) ); else if( 0 == ::_stricmp( "button_summon" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE ) ); else if( 0 == ::_stricmp( "button_summon_skill" , lpszControlID ) ) { if( !m_pGameManager->IsUIWindowOpened( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_SKILL ) ) { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE, true ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_PAGE, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_SKILL, true ) ); } else { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_PAGE, false ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE_SKILL, false ) ); } } else if( 0 == ::_stricmp( "button_messenger" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_COMMUNITY ) ); //else if( 0 == ::_stricmp( "button_partymatching" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_PARTYMATCHING ) );// 파티매칭 // AziaMafia off partymatchmaking else if( 0 == ::_stricmp( "button_quest" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_QUEST_LIST ) ); else if( 0 == ::_stricmp( "button_guild" , lpszControlID ) ) { // 길드UI. 수정 bintitle. 2010.04.27. if( m_pGameManager ) { if( m_pGameManager->IsUIWindowOpened( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND ) ) { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, false ) ); } else { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_MAINWND, true ) ); } //// 길드 웹. //// sonador 3.9.4 메인 메뉴 길드(alt+G) 탭 열기 기능 추가 //if( m_pGameManager->IsUIWindowOpened( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_TITLE ) ) //{ // m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_TITLE, false ) ); // m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( "close_guild_web" ) ); //} //else //{ // SGame* pActiveGame = m_pGameManager->GetActiveGame(); // if( pActiveGame ) // pActiveGame->RqChatting( CHAT_NORMAL, m_PlayerInfoMgr.GetPlayerInfo().GetName(), "/gopen" ); //} } } else if( 0 == ::_stricmp( "button_system" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM_MAIN ) ); else if( 0 == ::_stricmp( "button_formation" , lpszControlID ) ) { if( !m_pGameManager->IsUIWindowOpened( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATUREFORM ) ) // 크리처 편성창 { m_pGameManager->PostMsgAtDynamic( new SMSG_SEND_DATA( "req_summon_formation" ) ); } else { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATUREFORM, false ) ); // 크리처 편성창 } } else if( 0 == ::_stricmp( "button_cash" , lpszControlID ) ) { if( m_pGameManager ) { //인벤토리 m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY , true) ); if( ENV().IsExist( "commercial_shop" ) == true ) { //캐쉬창고 m_pGameManager->PostMsgAtDynamic( new SMSG_CHAT_COMMAND(SMSG_CHAT_COMMAND::CHAT_CASHSTORAGE_OPEN) ); //쿠르샵 오픈 if( !m_pGameManager->IsShow( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CASH_TITLE ) && !m_pGameManager->IsShow( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_GUILD_TITLE ) && !m_pGameManager->IsShow( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_HELP_TITLE ) && !m_pGameManager->IsShow( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_POPURL_TITLE ) ) { m_pGameManager->PostMsgAtDynamic( new SIMSG_REQ_OPEN_MSGBOX( SIMSG_REQ_OPEN_MSGBOX::MSGBOX_CASHSHOP_OPEN, S(944), true ) ); } //한번에 열기 // m_pGameMng->PostMsgAtDynamic( new SMSG_CHAT_COMMAND( SMSG_CHAT_COMMAND::CHAT_CASHSHOP_OPEN ) ); } } } else if( 0 == ::_stricmp( "button_game_exit" , lpszControlID ) ) m_pGameManager->ProcMsgAtStatic( &STMSG_REQ_CLOSE( false ) ); else if( 0 == ::_stricmp( "button_goto_lobby", lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_REQ_RETURN_LOBBY() ); /// 2012.05.09 사용자 키 설정창 열기- prodongi else if( 0 == ::_stricmp( "button_key" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SEND_DATA(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM, "openWithKeyMapping")); else if( 0 == ::_stricmp( "button_title_01" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_TITLE_WND_OPEN() ); // else if( 0 == ::_stricmp( "button_close" , lpszControlID ) ) m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MAINMENU_SUB ) ); m_pGameManager->PostMsgAtDynamic( new SIMSG_TOGGLE_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MAINMENU_SUB ) ); } break; } SUIWnd::PumpUpMessage( lpszControlID, nMessage, lparam, wparam ); } void SUIMainMenuSubWnd::ProcMsgAtStatic( SGameMessage* pMsg ) { switch(pMsg->nType) { case IMSG_SET_KEYMAPPING: { SetChildToolTip(); } break; case IMSG_UI_SYSMENU_HOTKEY: { // switch( ((SIMSG_UI_SYSMENU_HOTKEY*)pMsg)->m_nType ) // { // case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILL: // { // bool bShow = false; // if( IsButtonCheck("mainmenu_skill") ) // bShow = true; // m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SYSMENU( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILL, !bShow) ); // SetButtonCheck( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILL, !bShow ); // } // break; // case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM: // { // bool bShow = false; // if( IsButtonCheck("mainmenu_system") ) // bShow = true; // m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SYSMENU( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM, !bShow) ); // SetButtonCheck( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM, !bShow ); // } // break; // case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARINFO: // { // bool bShow = false; // if( IsButtonCheck("mainmenu_character") ) // bShow = true; // m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_SYSMENU( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARINFO, !bShow) ); // SetButtonCheck( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARINFO, !bShow ); // } // break; // } // pMsg->bUse = true; } break; } } bool SUIMainMenuSubWnd::IsButtonCheck( char* pszControl ) { if( pszControl == NULL ) return false; KUIWnd* pWnd = GetChild( pszControl ); if( pWnd ) return ((KUIControlCheck*)pWnd)->GetCheck(); return false; } void SUIMainMenuSubWnd::SetButtonCheck( int nWindowID, bool bShow ) { char* szID = NULL; switch(nWindowID) { case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_INVENTORY: szID = "mainmenu_item"; break; case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CHARINFO: szID = "mainmenu_character"; break; case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_CREATURE: szID = "mainmenu_summon"; break; case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_WORLDMAP: szID = "mainmenu_chat"; break; case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SKILL: szID = "mainmenu_skill"; break; case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_SYSTEM: szID = "mainmenu_system"; break; case SIMSG_TOGGLE_UIWINDOW::UIWINDOW_PARTY: szID = "mainmenu_messanger"; break; } if( szID == NULL ) return; KUIWnd* pWnd = GetChild(szID); if( pWnd ) ((KUIControlCheck*)pWnd)->SetCheck(bShow); }