#include "stdafx.h" #include "GameUIManager.h" #include "RenderSystem.h" #include "GameResourceManager.h" #include "StageManager.h" #include "UIBackWindow.h" #include "ChatWindow.h" #include "TargetWindow.h" #include "HeroInfoWindow.h" #include "CastingBar.h" #include "HeroStateWindow.h" #include "MenuWindow.h" #include "NpcWindow.h" #include "NpcStoreWindow.h" #include "InventoryWindow.h" #include "WareHouseWindow.h" #include "ItemCountWindow.h" #include "ItemMsgWindow.h" #include "TradeWindow.h" #include "DragWindow.h" #include "TipWindow.h" #include "MiniMapWindow.h" #include "OptionWindow.h" #include "SmallMiniMapWindow.h" #include "SkillWindow.h" #include "SkillStoreWindow.h" #include "BuffWindow.h" #include "ColumnQuickSlot.h" #include "RowQuickSlot.h" #include "FriendWindow.h" #include "TarotWindow.h" #include "TarotControlWindow.h" #include "UserSellWindow.h" #include "BagWindow.h" #include "ExitWindow.h" #include "LootingWindow.h" #include "RevivalWindow.h" #include "PartyWindow.h" #include "PartyStateWindow.h" #include "QuestWindow.h" #include "NpcRewardWindow.h" #include "NpcDisjointWindow.h" #include "EnhancedWindow.h" #include "QuestSimpleWindow.h" #include "MoneyWindow.h" #include "PutCardWindow.h" #include "DuelMsgWindow.h" #include "DuelWindow.h" #include "PartyManager.h" #include "CardBookWindow.h" #include "ChatExtraWindow.h" #include "SocialWindow.h" #include "DMScoreWindow.h" #include "DMMsgWindow.h" #include "TitleWindow.h" #include "GuildWindow.h" #include "RButtonMenuWindow.h" #include "TodayWordWindow.h" #include "ItemMixWindow.h" #include "NpcDealWindow.h" #include "MailWindow.h" #include "PartyUnionWindow.h" #include "ThemeEnterWindow.h" #include "ThemeStateWindow.h" #include "SkillPreviewWindow.h" #include "ShortcutWindow.h" #include "BoardWindow.h" #include "DiceWindow.h" #include "NpcTutorialWindow.h" #include "MoveMsgWindow.h" #include "ItemReceiptWindow.h" #include "ItemMallWindow.h" #include "TwitterWindow.h" #include "CamaelWindow.h" #include "MegaphoneWindow.h" #include "CashFreeMoveWindow.h" #include "LookWindow.h" //#include "ChannelWindow.h" //#include "CertifyWindow.h" #include "SummonWindow.h" #include "ItemTipWindow.h" #include "SkillTipWindow.h" #include "BuffToolTipWindow.h" #include "SimpleTipWindow.h" #include "UIManager.h" #include "UIRootNode.h" #include "QuestManager.h" #include "PVPManager.h" #include "ObjectManager.h" #include "ChatManager.h" #include "hero.h" #include "UIMsgboxEvent.h" #include "Application.h" #include "KeyboardAgent.h" #include "ObjectManager.h" #include "TarotManager.h" #include "CheatManager.h" #include "ItemMixManager.h" #include "TutorialManager.h" #include "TitleManager.h" #include "Hero.h" #include "Npc_Common.h" #include "Npc.h" #include "UINpcTelling.h" #include "NpcScript.h" #include "ShortcutManager.h" cGameUIManager* cGameUIManager::mpSingleton = 0; #define POSHEARDER_VER 12 #define CHARHEARDER_VER 5 cGameUIManager::cGameUIManager(void) : mpChatWindow(0) , mpTargetWindow(0) , mpHeroInfoWindow(0) , mpInventoryWindow( 0 ) , mpWareHouseWindow( 0 ) , mpItemCountWindow( 0 ) , mpItemMsgWindow(0) , mpTradeWindow( 0 ) , mpDragWindow( 0 ) , mpUnionDragWindow(0) , mpCastingBar(0) , mpChatManager(0) , mpHeroStateWindow(0) , mpSkillWindow(0) , mpBuffWindow(0) , mpDeBuffWindow(0) , mpCashBuffWindow(0) , mpNpcWindow( 0 ) , mpNpcBackWindow( 0 ) , mpNpcStoreWindow( 0 ) , mpMiniMapWindow( 0 ) , mpOptionWindow(0) , mpSmallMiniMapWindow(0) , mpFriendWindow(0) , mpTarotWindow(0) , mpTarotControlWindow(0) , mpUserSellWindow(0) , mpItemTip(0) , mpEquipItemTip(0) , mpSkillTip(0) , mpBuffTip(0) , mpSimpleTip(0) , mpMenuButtonWindow(0) , mpMenuHero(0) , mpMenuCommu(0) , mpMenuOption(0) , mpMenuLife(0) , mpExitWindow(0) , mpTutorialExitWindow(0) , mpExitMsgWindow(0) , mpLootingWindow(0) , mpRevivalWindow(0) , mpPartyWindow(0) , mpPartyMenu(0) , mpPartyDivideMenu(0) , mpMoneyWindow(0) , mpQuestWindow(0) , mpNpcRewardWindow(0) , mpNpcDisjointWindow(0) , mpEnhancedWindow(0) , mpQuestSimpleWindow(0) , mpPutCardWindow(0) , mpDuelMsgWindow(0) , mpDuelWindow(0) , mpCardBookWindow(0) , mpSocialWindow(0) , mpDMScoreWindow(0) , mpDMResultWindow(0) , mpFSColumnQuickSlot(0) , mpFSRowQuickSlot(0) , mpDMMsgWindow(0) , mpDMRankingListWindow(0) , mpChatButtonWindow(0) , mpChatItemTip(0) , mpTitleWindow(0) , mpGuildWindow(0) , mpRButtonMenuWindow(0) , mpGuildButtonWindow(0) , mpGuildMarkWindow(0) , mpTodayWordWindow(0) , mpItemMixWindow(0) , mChatBoxMaxRow(0) , mpNpcDealWindow(0) , mpMailWindow(0) , mpUnionWindow(0) , mpUnionSmallWindow(0) , mpThemeEnterWindow(0) , mpThemeStateWindow(0) , mpQuestTip(0) , mpSkillPreviewWindow(0) , mpShortcutWindow(0) , mpBoardWindow(0) , mpDiceWindow(0) , mpNpcTutorialWindow(0) , mpMoveMsgWindow(0) , mpReceiptWindow(0) , mpItemMallWindow(0) , mpTwitterWindow(0) , mpTwitterRegisterWindow(0) , mpCamaelWindow(0) , mpMegaphoneWindow(0) , mpCashFreeMoveWindow(0) , mpThemeResetWindow(0) , mpItemDivideWindow(0) , mpLookWindow(0) //, mpCertifyWindow(0) , mpSummonWindow(0) { assert( mpSingleton == 0 && "bad singleton!" ); mpSingleton = this; for( int i = 0; i < 3; ++i ) { mpBagWindow[i] = 0; mpWareHouseBagWindow[i] = 0; } for( int i = 0; i < 5; ++i ) { mpPartyStateWindow[i] = 0; mpPartyStateMiniWindow[i] = 0; } for( int i = 0; i < 3; ++i ) { mpChatExtraWindow[i] = 0; mExtraChatBoxMaxRow[i] = 0; } for( int i = 0; i < QUICKTYPE_COMMON_COUNT; ++i ) { mpColumnQuickSlot[i] = 0; mpRowQuickSlot[i] = 0; } mDuelMode = false; mMiniWinPer = 0; mQuestCharacterIdx = 0; } cGameUIManager::~cGameUIManager() { cSaveWindowPos::cIterator i = mSaveWindowInfo.Begin(); cSaveWindowPos::cIterator end = mSaveWindowInfo.End(); for( ; i!=end; i++ ) { delete (sWindowPosData*)(i->mSecond); } mSaveWindowInfo.Clear(); mpSingleton = 0; } void cGameUIManager::Init() { UIMAN->SetCurrentStage( eStage_Game ); cUIProperty* p = UIMAN->GetProperty(); if( !p ) { assert(0); return; } /// äÆÃ °ü¸®ÀÚ »ý¼º ¹× ÃʱâÈ­ mpChatManager = new cChatManager; if( !mpChatManager || !mpChatManager->Init() ) { SAFE_DELETE( mpChatManager ); return; } /// ¹Ì´Ï¸Ê À©µµ¿ì mpMiniMapWindow = new cMiniMapWindow; mpMiniMapWindow->CreateByPropertyName( "P_MiniMap_Window", 0 ); /// ½º¸ô ¹Ì´Ï¸Ê À©µµ¿ì mpSmallMiniMapWindow = new cSmallMiniMapWindow; mpSmallMiniMapWindow->CreateByPropertyName( "P_SmallMiniMap_Window", 0 ); /// äÆÃâ ¹öư À©µµ¿ì mpChatButtonWindow = new cChatButtonWindow; mpChatButtonWindow->CreateByPropertyName( "P_ChatButtonWindow", 0 ); UIMAN->AddEventOtherClick( mpChatButtonWindow ); /// äÆÃÀ©µµ¿ì mpChatWindow = new cChatWindow; mpChatWindow->CreateByPropertyName( "P_ChatWindow", 0 ); cUINodeProperty* chatExtraProp = p->GetNodeProperty( "P_ChatExtraWindow" ); if( chatExtraProp ) { for( int i = 0; i < 3; ++i ) { mpChatExtraWindow[i] = new cChatExtraWindow; mpChatExtraWindow[i]->CreateByPropertyId( chatExtraProp, 0, eUIID_GAME_EXTRA_CHATWINDOW1 + i ); mpChatExtraWindow[i]->SetPos( i ); if( mpChatWindow ) mpChatWindow->AddExtraWindow( (cUIWindow*)mpChatExtraWindow[i] ); } } if( mpChatExtraWindow[0] ) mpChatExtraWindow[0]->Show( false ); /// Ÿ°Ù À©µµ¿ì mpTargetWindow = new cTargetWindow; mpTargetWindow->CreateByPropertyName( "P_TargetWindow", 0 ); /// ij¸¯ÅÍ Á¤º¸ À©µµ¿ì mpHeroInfoWindow = new cHeroInfoWindow; mpHeroInfoWindow->CreateByPropertyName( "P_HeroInfoWindow", 0 ); /// ij½ºÆÃ °ÔÀÌÁö mpCastingBar = new cCastingBar; mpCastingBar->CreateByPropertyName( "P_CastingBar", 0 ); /// ij¸¯ÅÍ »óÅ À©µµ¿ì ( ¿ÞÂÊ »ó´Ü ) mpHeroStateWindow = new cHeroStateWindow; mpHeroStateWindow->CreateByPropertyName( "P_HeroStateWindow", 0 ); /// Npc À©µµ¿ì mpNpcWindow = new cNpcWindow; mpNpcWindow->CreateByPropertyName( "P_NpcTelling_Window", 0 ); /// npc º¸»ó Á¤º¸ À©µµ¿ì mpNpcRewardWindow = new cNpcRewardWindow; mpNpcRewardWindow->CreateByPropertyName( "P_NpcReward_Window", mpNpcWindow ); /// Npc ¹è°æ À©µµ¿ì mpNpcBackWindow = new cNpcBackWindow; mpNpcBackWindow->SetOnlyBackground( true ); mpNpcBackWindow->CreateBySkinName( "NpcBack_Window", 0, 1 ); /// Npc »óÁ¡ À©µµ¿ì mpNpcStoreWindow = new cNpcStoreWindow; mpNpcStoreWindow->CreateByPropertyName( "P_NpcStore_Window", 0 ); /// Äü½½·Ô (Çà) mpColumnQuickSlot[QUICKTYPE_COMMON] = new cColumnQuickSlot( QUICKTYPE_COMMON ); mpColumnQuickSlot[QUICKTYPE_COMMON]->CreateByPropertyName( "P_ColumnQuickSlot", 0 ); /// Äü½½·Ô (Ãß°¡1 Çà) mpColumnQuickSlot[QUICKTYPE_COMMON_EXTRA1] = new cColumnQuickSlot( QUICKTYPE_COMMON_EXTRA1 ); mpColumnQuickSlot[QUICKTYPE_COMMON_EXTRA1]->CreateByPropertyName( "P_ColumnExtraSlot1", 0 ); /// Äü½½·Ô (Ãß°¡2 Çà) mpColumnQuickSlot[QUICKTYPE_COMMON_EXTRA2] = new cColumnQuickSlot( QUICKTYPE_COMMON_EXTRA2 ); mpColumnQuickSlot[QUICKTYPE_COMMON_EXTRA2]->CreateByPropertyName( "P_ColumnExtraSlot2", 0 ); /// Äü½½·Ô (¿­) mpRowQuickSlot[QUICKTYPE_COMMON] = new cRowQuickSlot( QUICKTYPE_COMMON ); mpRowQuickSlot[QUICKTYPE_COMMON]->CreateByPropertyName( "P_RowQuickSlot", 0 ); /// Äü½½·Ô (¿­) mpRowQuickSlot[QUICKTYPE_COMMON_EXTRA1] = new cRowQuickSlot( QUICKTYPE_COMMON_EXTRA1 ); mpRowQuickSlot[QUICKTYPE_COMMON_EXTRA1]->CreateByPropertyName( "P_RowExtraSlot1", 0 ); /// Äü½½·Ô (¿­) mpRowQuickSlot[QUICKTYPE_COMMON_EXTRA2] = new cRowQuickSlot( QUICKTYPE_COMMON_EXTRA2 ); mpRowQuickSlot[QUICKTYPE_COMMON_EXTRA2]->CreateByPropertyName( "P_RowExtraSlot2", 0 ); /// FS Äü½½·Ô mpFSColumnQuickSlot = new cFSColumnQuickSlot; mpFSColumnQuickSlot->CreateByPropertyName( "P_FSColumnQuickSlot", 0 ); /// FS Äü½½·Ô mpFSRowQuickSlot = new cFSRowQuickSlot; mpFSRowQuickSlot->CreateByPropertyName( "P_FSRowQuickSlot", 0 ); /// Àκ¥Å丮 À©µµ¿ì mpInventoryWindow = new cInventoryWindow; mpInventoryWindow->CreateByPropertyName( "P_Inventory_Window", 0 ); /// °¡¹æ À©µµ¿ì mpBagWindow[0] = new cBagWindow( mpInventoryWindow, 0 ); mpBagWindow[0]->CreateByPropertyName( "P_Bag0_Window", 0 ); mpBagWindow[1] = new cBagWindow( mpInventoryWindow, 1 ); mpBagWindow[1]->CreateByPropertyName( "P_Bag1_Window", 0 ); mpBagWindow[2] = new cBagWindow( mpInventoryWindow, 2 ); mpBagWindow[2]->CreateByPropertyName( "P_Bag2_Window", 0 ); /// ¾ÆÀÌÅÛ °³¼ö À©µµ¿ì mpItemCountWindow = new cItemCountWindow; mpItemCountWindow->CreateByPropertyName( "P_ItemCount_Window", 0 ); /// â°í À©µµ¿ì mpWareHouseWindow = new cWareHouseWindow; mpWareHouseWindow->CreateByPropertyName( "P_WareHouse_Window", 0 ); mpWareHouseBagWindow[0] = new cWareHouseBagWindow( mpWareHouseWindow, 0 ); mpWareHouseBagWindow[0]->CreateByPropertyName( "P_WareHouseBag1_Window", 0 ); mpWareHouseBagWindow[1] = new cWareHouseBagWindow( mpWareHouseWindow, 1 ); mpWareHouseBagWindow[1]->CreateByPropertyName( "P_WareHouseBag2_Window", 0 ); mpWareHouseBagWindow[2] = new cWareHouseBagWindow( mpWareHouseWindow, 2 ); mpWareHouseBagWindow[2]->CreateByPropertyName( "P_WareHouseBag3_Window", 0 ); mpMoneyWindow = new cMoneyWindow; mpMoneyWindow->CreateByPropertyName( "P_Money_Window", 0 ); /// °Å·¡ À©µµ¿ì mpTradeWindow = new cTradeWindow; mpTradeWindow->CreateByPropertyName( "P_Trade_Window", 0 ); /// ½ºÅ³ À©µµ¿ì mpSkillWindow = new cSkillWindow; mpSkillWindow->CreateByPropertyName( "P_SkillWindow", 0 ); /// ¹öÇÁ â mpBuffWindow = new cBuffWindow; mpBuffWindow->CreateByPropertyName( "P_BuffWindow", 0 ); mpBuffWindow->SetHeroBuff( true ); /// µð¹öÇÁ â mpDeBuffWindow = new cBuffWindow; mpDeBuffWindow->CreateByPropertyName( "P_DeBuffWindow", 0 ); mpDeBuffWindow->SetHeroBuff( true ); // ij½¬ ¹öÇÁ À©µµ¿ì mpCashBuffWindow = new cBuffWindow; mpCashBuffWindow->CreateByPropertyName( "P_MallBuffWindow", 0 ); mpCashBuffWindow->SetHeroBuff( true ); /// µå·¡±× À©µµ¿ì mpDragWindow = new cDragWindow; mpDragWindow->CreateByPropertyName( "P_Drag_Window", 0 ); UIMAN->SetDragWindow( mpDragWindow ); /// ¿¬ÇÕ¿ë µå·¡±× À©µµ¿ì mpUnionDragWindow = new cUnionDragWindow; mpUnionDragWindow->CreateByPropertyName( "P_UnionDrag_Window", 0 ); UIMAN->SetUnionDragWindow( mpUnionDragWindow ); /// ¾ÆÀÌÅÛÆÁ À©µµ¿ì mpItemTip = new cItemTipWindow; mpItemTip->CreateByPropertyName( "P_ItemTip", 0 ); /// mpEquipItemTip = new cItemTipWindow( true ); mpEquipItemTip->CreateByPropertyName( "P_EquipTip", 0 ); /// ½ºÅ³ ÆÁ À©µµ¿ì mpSkillTip = new cSkillTipWindow; mpSkillTip->CreateByPropertyName( "P_SkillTip", 0 ); /// ¹öÇÁ ÆÁ À©µµ¿ì mpBuffTip = new cBuffToolTipWindow; mpBuffTip->CreateByPropertyName( "P_BuffTip", 0 ); /// mpSimpleTip = new cSimpleTipWindow; mpSimpleTip->CreateByPropertyName( "P_SimpleTip", 0 ); /// mpQuestTip = new cQuestTipWindow; mpQuestTip->CreateByPropertyName( "P_QuestTip", 0 ); /// äÆÃ ¾ÆÀÌÅÛ ÆÁÀ©µµ¿ì mpChatItemTip = new cChatTipWindow; mpChatItemTip->CreateByPropertyName( "P_ChatItemTip", 0 ); UIMAN->SetChatItemTipWindow( mpChatItemTip ); /// ÇÏ´Ü ¹öư À©µµ¿ì mpMenuButtonWindow = new cMenuButtonWindow; mpMenuButtonWindow->CreateByPropertyName( "P_MenuButtonWindow", 0 ); /// Çϴܸ޴º À©µµ¿ì mpMenuHero = new cMenuHeroWindow; mpMenuHero->CreateByPropertyName( "P_MenuHeroWindow", 0 ); mpMenuButtonWindow->AddMenu( eMENU_HERO, mpMenuHero ); mpMenuCommu = new cMenuCommuityWindow; mpMenuCommu->CreateByPropertyName( "P_MenuCommunityWindow", 0 ); mpMenuButtonWindow->AddMenu( eMENU_COMMU, mpMenuCommu ); mpMenuOption = new cMenuOptionWindow; mpMenuOption->CreateByPropertyName( "P_MenuOptionWindow", 0 ); mpMenuButtonWindow->AddMenu( eMENU_OPTION, mpMenuOption ); mpMenuLife = new cMenuLifeWindow; mpMenuLife->CreateByPropertyName( "P_MenuLifeWindow", 0 ); mpMenuButtonWindow->AddMenu( eMENU_LIFE, mpMenuLife ); /// ½Ã½ºÅÛ À©µµ¿ì mpOptionWindow = new cOptionWindow; mpOptionWindow->CreateByPropertyName( "P_Option_Window", 0 ); /// Ä£±¸ À©µµ¿ì mpFriendWindow = new cFriendWindow; mpFriendWindow->CreateByPropertyName( "P_FriendWindow", 0 ); mpTarotWindow = new cTarotWindow; mpTarotWindow->CreateByPropertyName( "P_TarotWindow", 0 ); /// Ÿ·Ô Á¡Áý °ü¸® ( °³¼³ÀÚ ) mpTarotControlWindow = new cTarotControlWindow; mpTarotControlWindow->CreateByPropertyName( "P_TarotControlWindow", 0 ); /// ³ëÁ¡»ó °³¼³ mpUserSellWindow = new cUserSellWindow; mpUserSellWindow->CreateByPropertyName( "P_UserSellWindow", 0 ); /// °ÔÀÓ Á¾·á À©µµ¿ì mpExitWindow = new cExitWindow; mpExitWindow->CreateByPropertyName( "P_ExitWindow", 0 ); mpTutorialExitWindow = new cTutorialExitWindow; mpTutorialExitWindow->CreateByPropertyName( "P_TutorialExitWindow", 0 ); mpExitMsgWindow = new cExitMsgWindow; mpExitMsgWindow->CreateByPropertyName( "P_ExitMsg_Window", 0 ); /// ¾ÆÀÌÅÛ ½Àµæ À©µµ¿ì mpLootingWindow = new cLootingWindow; mpLootingWindow->CreateByPropertyName( "P_LootingWindow", 0 ); /// ºÎȰ À©µµ¿ì mpRevivalWindow = new cRevivalWindow; mpRevivalWindow->CreateByPropertyName( "P_RevivalWindow", 0 ); /// ÆÄƼ °ü¸® À©µµ¿ì mpPartyWindow = new cPartyWindow; mpPartyWindow->CreateByPropertyName( "P_PartyWindow", 0 ); /// ÆÄƼ »óÅ À©µµ¿ì mpPartyMenu = new cPartyMenu; mpPartyMenu->CreateByPropertyName( "P_PartyMenu", 0 ); UIMAN->AddEventOtherClick( mpPartyMenu ); /// ÆÄƼ ºÐ¹èŸÀÔ º¯°æ À©µµ¿ì mpPartyDivideMenu = new cPartyDivideMenu; mpPartyDivideMenu->CreateByPropertyName( "P_PartyDivdeMenu", 0 ); /// ÆÄƼ¿ø »óÅ À©µµ¿ì cUINodeProperty* pPartyProp = p->GetNodeProperty( "P_PartyStateWindow" ); assert( pPartyProp ); if( pPartyProp ) { for( int i = 0; i < 5; ++i ) { mpPartyStateWindow[i] = new cPartyStateWindow; mpPartyStateWindow[i]->CreateByPropertyId( pPartyProp, 0, eUIID_GAME_PARTYSTATE_WINDOW1 + i ); mpPartyStateWindow[i]->InitPosition( i ); } } /// ÆÄƼ¿ø »óÅ Mini À©µµ¿ì cUINodeProperty* pPartyMiniProp = p->GetNodeProperty( "P_PartyStateMiniWindow" ); assert( pPartyMiniProp ); if( pPartyMiniProp ) { for( int i = 0; i < 5; ++i ) { mpPartyStateMiniWindow[i] = new cPartyStateMiniWindow; mpPartyStateMiniWindow[i]->CreateByPropertyId( pPartyMiniProp, 0, eUIID_GAME_PARTYSTATE_MINI_WINDOW1 + i ); mpPartyStateMiniWindow[i]->InitPosition( i ); } } /// Äù½ºÆ® À©µµ¿ì mpQuestWindow = new cQuestWindow; mpQuestWindow->CreateByPropertyName( "P_QuestWindow", 0 ); /// ¾ÆÀÌÅÛ ºÐÇØ À©µµ¿ì mpNpcDisjointWindow = new cNpcDisjointWindow; mpNpcDisjointWindow->CreateByPropertyName( "P_NpcDisjointWindow", 0 ); /// ¾ÆÀÌÅÛ °­È­ À©µµ¿ì mpEnhancedWindow = new cEnhancedWindow; mpEnhancedWindow->CreateByPropertyName( "P_EnhancedWindow", 0 ); /// Äù½ºÆ® °£·«Á¤º¸ Ãâ·Â À©µµ¿ì mpQuestSimpleWindow = new cQuestSimpleWindow; mpQuestSimpleWindow->CreateByPropertyName( "P_QuestSimpleWindow", 0 ); mpItemMsgWindow = new cItemMsgWindow; mpItemMsgWindow->CreateByPropertyName( "P_ItemMsg_Window", 0 ); /// Ä«µå ÀåÂø À©µµ¿ì mpPutCardWindow = new cPutCardWindow; mpPutCardWindow->CreateByPropertyName( "P_PutCardWindow", 0 ); /// °áÅõ À©µµ¿ì mpDuelMsgWindow = new cDuelMsgWindow; mpDuelMsgWindow->CreateByPropertyName( "P_DuelMsg_Window", 0 ); mpDuelWindow = new cDuelWindow; mpDuelWindow->CreateByPropertyName( "P_DuelWindow", 0 ); /// Ä«µå Ä÷º¼Ç ºÏ mpCardBookWindow = new cCardBookWindow; mpCardBookWindow->CreateByPropertyName( "P_CardBook_Window", 0 ); /// »çȸ À©µµ¿ì mpSocialWindow = new cSocialWindow; mpSocialWindow->CreateByPropertyName( "P_SocialWindow", 0 ); /// µ¥½º¸ÅÄ¡ Á¡¼ö À©µµ¿ì mpDMScoreWindow = new cDMScoreWindow; mpDMScoreWindow->CreateByPropertyName( "P_PVP_DMScoreWindow", 0 ); /// Ranking window mpDMRankingListWindow = new cDMRankingListWindow; mpDMRankingListWindow->CreateByPropertyName( "P_PVP_DMMiddleResultWindow", 0 ); /// µ¥½º¸ÅÄ¡ °á°ú À©µµ¿ì mpDMResultWindow = new cDMResultWindow; mpDMResultWindow->CreateByPropertyName( "P_PVP_DMResultWindow", 0 ); /// µ¥½º¸ÅÄ¡ ÀÔÀå À©µµ¿ì mpDMMsgWindow = new cDMMsgWindow; mpDMMsgWindow->CreateByPropertyName( "P_PVP_DMMsgWindow", 0 ); /// ȣΰü¸® À©µµ¿ì mpTitleWindow = new cTitleWindow; mpTitleWindow->CreateByPropertyName( "P_HeroTitleWindow", 0 ); /// ±æµå °ü¸® À©µµ¿ì mpGuildWindow = new cGuildWindow; mpGuildWindow->CreateByPropertyName( "P_GuildWindow", 0 ); /// ±æµå Á÷À§ ¹öư À©µµ¿ì mpGuildButtonWindow = new cGuildButtonWindow; mpGuildButtonWindow->CreateByPropertyName( "P_GuildPosition_Window", 0 ); /// ±æµå ¸¶Å© µî·Ï À©µµ¿ì mpGuildMarkWindow = new cGuildMarkWindow; mpGuildMarkWindow->CreateByPropertyName( "P_GuildMark_Window", 0 ); /// Popup Menu window mpRButtonMenuWindow = new cRButtonMenuWindow; mpRButtonMenuWindow->CreateByPropertyName( "P_RButtonMenu", 0 ); /// ¿À´ÃÀÇ ÇѸ¶µð À©µµ¿ì mpTodayWordWindow = new cTodayWordWindow; mpTodayWordWindow->CreateByPropertyName( "P_TodayWordWindow", 0 ); /// ¾ÆÀÌÅÛ Á¶ÇÕ À©µµ¿ì mpItemMixWindow = new cItemMixWindow; mpItemMixWindow->CreateByPropertyName( "P_ItemMixWindow", 0 ); /// NPC ÆÇ¸Å´ëÇà À©µµ¿ì mpNpcDealWindow = new cNpcDealWindow; mpNpcDealWindow->CreateByPropertyName( "P_NpcDeal_Window", 0 ); /// ¿ìÆí À©µµ¿ì mpMailWindow = new cMailWindow; mpMailWindow->CreateByPropertyName( "P_Mail_Window", 0 ); /// ÆÄƼ ¿¬ÇÕ À©µµ¿ì mpUnionWindow = new cPartyUnionWindow; mpUnionWindow->CreateByPropertyName( "P_PartyUnion_Window", 0 ); mpUnionSmallWindow = new cPartyUnionSmallWindow; mpUnionSmallWindow->CreateByPropertyName( "P_PartyUnionSmall_Window", 0 ); mpThemeEnterWindow = new cThemeEnterWindow; mpThemeEnterWindow->CreateByPropertyName( "P_ThemeEnterWindow", 0 ); /// Å׸¶ ´øÁ¯ »óÅ À©µµ¿ì mpThemeStateWindow = new cThemeStateWindow; mpThemeStateWindow->CreateByPropertyName( "P_ThemeStateWindow", 0 ); /// ½ºÅ³ Âï¾îº¸±â À©µµ¿ì mpSkillPreviewWindow = new cSkillPreviewWindow; mpSkillPreviewWindow->CreateByPropertyName( "P_SkillPreviewWindow", 0 ); /// ´ÜÃàŰ ¼³Á¤ À©µµ¿ì mpShortcutWindow = new cShortcutWindow; mpShortcutWindow->CreateByPropertyName( "P_ShortcutWindow", 0 ); /// °Ô½ÃÆÇ À©µµ¿ì mpBoardWindow = new cBoardWindow; mpBoardWindow->CreateByPropertyName( "P_Board_Window", 0 ); /// ÁÖ»çÀ§ ±¼¸®±â À©µµ¿ì mpDiceWindow = new cDiceWindow; mpDiceWindow->CreateByPropertyName( "P_DiceWindow", 0 ); /// Æ©Å丮¾ó ºÏ À©µµ¿ì mpNpcTutorialWindow = new cNpcTutorialWindow; mpNpcTutorialWindow->CreateByPropertyName( "P_TutorialBook_Window", 0 ); /// ã¾Æ°¡±â/µû¶ó°¡±â ¸Þ½ÃÁö Ç¥½Ã À©µµ¿ì mpMoveMsgWindow = new cMoveMsgWindow; mpMoveMsgWindow->CreateByPropertyName( "P_MoveMsgWindow", 0 ); /// ¾ÆÀÌÅÛ ¼ö·ÉÇÔ mpReceiptWindow = new cItemReceiptWindow; mpReceiptWindow->CreateByPropertyName( "P_Receipt_Window", 0 ); /// ¸ô ¾ÆÀÌÅÛ ¼ö·ÉÇÔ À©µµ¿ì mpItemMallWindow = new cItemMallWindow; mpItemMallWindow->CreateByPropertyName( "P_Itemmall_Window", 0 ); /// Æ®À§ÅÍ mpTwitterWindow = new cTwitterWindow; mpTwitterWindow->CreateByPropertyName( "P_TwitterWindow", 0 ); mpTwitterRegisterWindow = new cTwitterRegisterWindow; mpTwitterRegisterWindow->CreateByPropertyName( "P_TwitterLoginWindow", 0 ); /// ¿ÀÅä À¯Àú ½Å°í À©µµ¿ì mpCamaelWindow = new cCamaelWindow; mpCamaelWindow->CreateByPropertyName( "P_Camael_Window", 0 ); // ¸Þ°¡Æù À©µµ¿ì mpMegaphoneWindow = new cMegaphoneWindow; mpMegaphoneWindow->CreateByPropertyName( "P_MegaPhoneWindow", 0 ); /// ij½Ã ¾ÆÀÌÅÛ- ÀÚÀ¯ À̵¿ ÁÖ¹®¼­ mpCashFreeMoveWindow = new cCashFreeMoveWindow(); mpCashFreeMoveWindow->CreateByPropertyName( "P_CashFreeMoveWindow", 0 ); // Å׸¶´øÀü ±Í¼Ó ÃʱâÈ­ À©µµ¿ì mpThemeResetWindow = new cThemeResetWindow; mpThemeResetWindow->CreateByPropertyName( "P_ThemeResetWindow", 0 ); // ¾ÆÀÌÅÛ ºÐ¹è À©µµ¿ì mpItemDivideWindow = new cItemDivideWindow; mpItemDivideWindow->CreateByPropertyName( "P_ItemDivideWindow", 0 ); // »ìÆìº¸±â À©µµ¿ì mpLookWindow = new cLookWindow; mpLookWindow->CreateByPropertyName( "P_Look_Window", 0 ); // ÆíÀÇ ±â´É À©µµ¿ì // mpSummonWindow = new cSummonWindow; // mpSummonWindow->CreateByPropertyName( "P_NpcFuncSummonsWindow", 0 ); // ÀÎÁõ¹øÈ£ À©µµ¿ì // mpCertifyWindow = new cCertifyWindow; // mpCertifyWindow->CreateByPropertyName( "P_AttestNumWindow", 0 ); /// if( LoadWindowPos("./Option/user.opt") == false ) { // ±âº» ó¸® mChatWinOption[0].checkNormal = true; mChatWinOption[0].checkParty = true; mChatWinOption[0].checkGuild = true; mChatWinOption[0].checkShout = true; mChatWinOption[0].checkTrade = true; mChatWinOption[0].checkWhisper = true; mChatWinOption[0].checkSystem = false; mChatWinOption[0].checkMegaPhone = true; mChatWinOption[1].checkNormal = false; mChatWinOption[1].checkParty = false; mChatWinOption[1].checkGuild = false; mChatWinOption[1].checkShout = false; mChatWinOption[1].checkTrade = false; mChatWinOption[1].checkWhisper = false; mChatWinOption[1].checkSystem = true; mChatWinOption[1].checkMegaPhone = false; for( unsigned int i=2;i<4; i++ ) { mChatWinOption[i].checkNormal = false; mChatWinOption[i].checkParty = false; mChatWinOption[i].checkGuild = false; mChatWinOption[i].checkShout = false; mChatWinOption[i].checkTrade = false; mChatWinOption[i].checkWhisper = false; mChatWinOption[i].checkSystem = false; mChatWinOption[i].checkMegaPhone = false; } mInvenWinOption.showBag1 = false; mInvenWinOption.showBag2 = false; mInvenWinOption.showBag3 = false; mMiniMapWinOption.showHelper = true; mMiniMapWinOption.showQuestView = true; mPartyStateOption.showFlag = 0; mQuestOption.infoViewFlag = true; mMoveLockOption.chatLock = false; mMoveLockOption.partyLock = false; mSkillWinOption.showStepListWin = true; mMiniWinPer = 50.0f; } } void cGameUIManager::Exit() { for( int i = 0; i < 5; ++i ) { mpPartyStateMiniWindow[i]->Clear(); mpPartyStateMiniWindow[i] = 0; mpPartyStateWindow[i]->Clear(); mpPartyStateWindow[i] = 0; } for( int i = 0; i < 3; ++i ) { mpBagWindow[i] = 0; mpWareHouseBagWindow[i] = 0; } mpLookWindow = 0; mpThemeResetWindow = 0; mpCashFreeMoveWindow = 0; mpMegaphoneWindow = 0; mpTwitterRegisterWindow = 0; mpTwitterWindow = 0; mpItemMallWindow = 0; mpNpcTutorialWindow = 0; mpReceiptWindow = 0; mpDiceWindow = 0; mpBoardWindow = 0; mpSkillPreviewWindow = 0; mpUnionWindow = 0; mpUnionSmallWindow = 0; mpMailWindow = 0; mpNpcDealWindow = 0; mpItemMixWindow = 0; mpTodayWordWindow = 0; mpRButtonMenuWindow = 0; mpGuildMarkWindow = 0; mpGuildButtonWindow = 0; mpGuildWindow = 0; mpTitleWindow = 0; mpChatButtonWindow = 0; mpDMRankingListWindow = 0; mpDMMsgWindow = 0; mpDMResultWindow = 0; mpDMScoreWindow = 0; mpSocialWindow = 0; mpCardBookWindow = 0; mpDuelMsgWindow = 0; mpDuelWindow = 0; mpPutCardWindow = 0; mpQuestSimpleWindow = 0; mpEnhancedWindow = 0; mpNpcDisjointWindow = 0; mpQuestWindow = 0; mpMoneyWindow = 0; mpPartyDivideMenu = 0; mpPartyMenu = 0; mpPartyWindow = 0; mpRevivalWindow = 0; mpLootingWindow = 0; mpExitWindow = 0; mpTutorialExitWindow = 0; mpExitMsgWindow = 0; mpUserSellWindow = 0; mpTarotControlWindow = 0; mpTarotWindow = 0; mpFriendWindow = 0; mpSmallMiniMapWindow = 0; mpMiniMapWindow = 0; mpOptionWindow = 0; mpMenuHero = 0; mpMenuCommu = 0; mpMenuOption = 0; mpMenuButtonWindow = 0; mpSkillWindow = 0; mpBuffWindow = 0; mpDeBuffWindow = 0; mpCashBuffWindow = 0; mpInventoryWindow = 0; mpNpcRewardWindow = 0; mpNpcWindow = 0; mpNpcBackWindow = 0; mpNpcStoreWindow = 0; mpHeroStateWindow = 0; mpHeroInfoWindow = 0; mpTargetWindow = 0; mpChatWindow = 0; mpCastingBar = 0; mpThemeEnterWindow = 0; mpShortcutWindow = 0; mpMoveMsgWindow = 0; mpCamaelWindow = 0; // mpCertifyWindow = 0; mpSummonWindow = 0; if( mpChatManager ) { SAFE_DELETE( mpChatManager ); } } void cGameUIManager::Open() { UIMAN->SetCurrentStage( eStage_Game ); /// UIMAN->Open(); /// ApplyWindowPos(); /// ±âº» Äü½½·ÔÀº Ç×»ó µÑÁß Çϳª¶óµµ ²À º¸ÀδÙ. if( QUICKMAN->IsRowQuick( QUICKTYPE_COMMON ) == true ) { mpRowQuickSlot[QUICKTYPE_COMMON]->Show( false ); mpColumnQuickSlot[QUICKTYPE_COMMON]->Hide(); } else { mpRowQuickSlot[QUICKTYPE_COMMON]->Hide(); mpColumnQuickSlot[QUICKTYPE_COMMON]->Show( false ); } if( QUICKMAN->IsRowQuickFS() == true ) { mpFSRowQuickSlot->Show( false ); mpFSColumnQuickSlot->Hide(); } else { mpFSRowQuickSlot->Hide(); mpFSColumnQuickSlot->Show( false ); } /// if( mQuestCharacterIdx != HERO->GetObjectID() ) { char name[MAX_NAME_BUFFER_SIZE]; /// ¾ÆÀ̵ð ConvertToAscii( HERO->GetName(), name, MAX_NAME_BUFFER_SIZE ); cString str; str.Format( "./Option/%s_%d.opc", name, HERO->GetObjectID()%1000 ); LoadWindowOption_Character( str ); } } void cGameUIManager::Close() { SaveWindowPos("./Option/user.opt"); char name[MAX_NAME_BUFFER_SIZE]; /// ¾ÆÀ̵ð ConvertToAscii( HERO->GetName(), name, MAX_NAME_BUFFER_SIZE ); cString str; str.Format( "./Option/%s_%d.opc", name, HERO->GetObjectID()%1000 ); SaveWindowOption_Character( str ); UIMAN->SetCurrentStage( eStage_Game ); UIMAN->Close(); #ifdef _GMTOOL // CHEATMAN->Clear(); #endif } void cGameUIManager::Process( unsigned long deltaTime, unsigned long accumTime ) { } void cGameUIManager::ReqFinish( bool exitEvent ) { /// ÀÚµ¿»ç³É ½Å°í âÀÌ ¶á µµÁßÀ̶ó¸é ¹«½Ã if( mpCamaelWindow && mpCamaelWindow->IsVisible() == true ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 11818 ) ); return; } if( HERO->GetState() == ePLAYER_STATE_SITDOWN ) { HERO->SetState( eOBJECT_STATE_IDLE ); /// Network Msg MSG_REQ_PLAYER_STATE_SITDWON Msg; Msg.Category = NM_PLAYER; Msg.Protocol = NM_PLAYER_STATE_SITDOWN_REQ; Msg.mSitDown = false; NETWORK->SendNetworkMsg( (char*)&Msg, sizeof(Msg) ); } else { if( HERO->GetState() != eOBJECT_STATE_IDLE ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 58 ) ); return; } } /// °ÔÀÓ Á¾·á 5ÃÊ MSGROOT Msg; Msg.Category = NM_PLAYER; Msg.Protocol = NM_PLAYER_GAMEFINISH_REQ; NETWORK->SendNetworkMsg( (char*)&Msg, sizeof(Msg) ); if( mpExitMsgWindow ) { mpExitMsgWindow->ShowExitMsg( exitEvent ); mpExitMsgWindow->NetLock(); } if( mpExitWindow ) mpExitWindow->Hide(false); } void cGameUIManager::SendDisConnect() { /// °ÔÀÓ Á¾·á MSGROOT Msg; Msg.Category = NM_PLAYER; Msg.Protocol = NM_PLAYER_DISCONNECT_REQ; if( NETWORK->SendNetworkMsg( (char*)&Msg, sizeof(Msg) ) == false ) { /// ÇÁ·Î±×·¥ Á¾·á ::SendMessage( THEAPP->GetHWND(), WM_CLOSE, 0, 0 ); ::PostQuitMessage(0); } /// °ü·Ã ui ¶ô if( mpExitWindow ) mpExitWindow->NetLock(); } void cGameUIManager::SendGameOut() { /// ij¸¯ÅÍ Ã¢À¸·Î À̵¿ MSGROOT Msg; Msg.Category = NM_PLAYER; Msg.Protocol = NM_PLAYER_GAMEOUT_REQ; NETWORK->SendNetworkMsg( (char*)&Msg, sizeof(Msg) ); /// °ü·Ã ui ¶ô if( mpExitWindow ) mpExitWindow->NetLock(); } void cGameUIManager::NetLockParty( int lockTry ) { if( mpPartyMenu ) mpPartyMenu->NetLock( lockTry ); if( mpFriendWindow ) mpFriendWindow->NetLock( lockTry ); if( mpPartyDivideMenu ) mpPartyDivideMenu->NetLock( lockTry ); } void cGameUIManager::NetUnLockParty( int lockTry ) { if( mpPartyMenu ) mpPartyMenu->NetUnLock( lockTry ); if( mpFriendWindow ) mpFriendWindow->NetUnLock( lockTry ); if( mpPartyDivideMenu ) mpPartyDivideMenu->NetUnLock( lockTry ); } void cGameUIManager::OnFocusChatWindow( unsigned long key, LPCTSTR addstring ) { assert(mpChatWindow); if( mpChatWindow ) { cStringT str; switch( key ) { case KEY_RETURN: break; case KEY_SLASH: /// "/" ÀÚµ¿ÀÔ·Â str.Format(_T("/")); break; case KEY_APOSTROPHE: /// ±Ó¼Ó¸» ÀÚµ¿ÀÔ·Â { if( ::_tcslen(addstring) == 0 ) str.Format( UIMAN->GetUIText(10001) ); else str.Format( _T("%s%s "), UIMAN->GetUIText(10001), addstring ); } break; case KEY_SEMICOLON: /// ÆÄƼ¸» ÀÚµ¿ÀÔ·Â str.Format( UIMAN->GetUIText(10013) ); break; case KEY_PERIOD: /// ¿ÜÄ¡±â ÀÚµ¿ÀÔ·Â str.Format( UIMAN->GetUIText(10023) ); break; case KEY_COMMA: /// ±æµå¸» ÀÚµ¿ÀÔ·Â str.Format( UIMAN->GetUIText(10033) ); break; } if( key != KEY_RETURN ) mpChatWindow->SetChatText( (LPCTSTR)str.Cstr() ); /// mpChatWindow->SetFocusToEdit(); } } /// »óÅ¿¡ µû¸¥ ó¸® - Á×À»¶§´Â ÆÐŶÀ» ³¯¸®Áö ¾Ê´Â´Ù void cGameUIManager::HideUIByDie() { UIMAN->ShowGameUI(); if( mpTarotControlWindow ) mpTarotControlWindow->Hide(); if( mpTarotWindow ) mpTarotWindow->Hide(); if( mpUserSellWindow ) mpUserSellWindow->Hide(); if( mpTradeWindow ) mpTradeWindow->Hide(); if( mpCardBookWindow ) mpCardBookWindow->Hide(); if( mpEnhancedWindow ) mpEnhancedWindow->Hide(); if( mpItemMixWindow ) mpItemMixWindow->Hide(); if( mpNpcWindow ) mpNpcWindow->Hide(); if( mpMailWindow ) mpMailWindow->Hide(); if( mpBoardWindow ) mpBoardWindow->Hide(); if( mpNpcTutorialWindow ) mpNpcTutorialWindow->Hide(); if( mpMoveMsgWindow ) mpMoveMsgWindow->Hide(); if( mpMegaphoneWindow ) mpMegaphoneWindow->Hide(); if( mpCashFreeMoveWindow ) mpCashFreeMoveWindow->Hide(); if( mpThemeResetWindow ) mpThemeResetWindow->Hide(); if( mpWareHouseWindow ) mpWareHouseWindow->Hide(); if( mpNpcDealWindow ) mpNpcDealWindow->Hide(); if( mpSummonWindow ) mpSummonWindow->Hide(); // HERO->CloseNpcTalk(); TAROTMAN->ChangePage( ePAGE_NONE ); ITEMMAN->ClearUserSellTarget(); HERO->DeActiveTarotBubble(); HERO->DeActiveUserSellBubble(); UIMAN->DestroyAllMsgBox(); /// ºÎȰâ ¶ç¿ì±â if( PVPMAN->IsEnableBattle() == true ) { /// show 10' wait msgbox UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_PVP_REVIVAL, eSKIN_NONE, GAMERESOURCEMAN->GetGameText( 833 ), GAMERESOURCEMAN->GetGameText( 834 ), 0, 0, PVP_DM_RESURRECTION_TIME, true, true ); } else if( TUTORIALMAN->IsTutorialMode() == true ) { cTutorialMode* mode = TUTORIALMAN->GetCurrentMode(); if( mode ) { // Æ©Å丮¾óÁßÀ̸é UIMAN->CreateMsgBox( eStage_Game, eMSGBOX_MODAL, eMBEVENT_TUTORIAL_REVIVAL, eSKIN_OK, GAMERESOURCEMAN->GetGameText( mode->mDieTextIndex ), GAMERESOURCEMAN->GetGameText( 834 ) ); } else assert(0); } else ShowRevivalWindow(); } /// »óÅ¿¡ µû¸¥ ó¸® - °­Á¦·Î ¹Ð¸±¶§´Â ¸Þ¼¼Áö¸¦ ³¯¸®Áö ¾Ê´Â´Ù. void cGameUIManager::HideUIByPushPull() { UIMAN->ShowGameUI(); if( mpTarotControlWindow ) mpTarotControlWindow->Hide(); if( mpTarotWindow ) mpTarotWindow->Hide(); if( mpUserSellWindow ) mpUserSellWindow->Hide(); if( mpTradeWindow ) mpTradeWindow->Hide(); if( mpCardBookWindow ) mpCardBookWindow->Hide(); if( mpEnhancedWindow ) mpEnhancedWindow->Hide(); if( mpItemMixWindow ) mpItemMixWindow->Hide(); if( mpNpcWindow ) mpNpcWindow->Hide(); if( mpMailWindow ) mpMailWindow->Hide(); if( mpBoardWindow ) mpBoardWindow->Hide(); if( mpNpcTutorialWindow ) mpNpcTutorialWindow->Hide(); if( mpMoveMsgWindow ) mpMoveMsgWindow->Hide(); if( mpMegaphoneWindow ) mpMegaphoneWindow->Hide(); if( mpCashFreeMoveWindow ) mpCashFreeMoveWindow->Hide(); // HERO->CloseNpcTalk(); TAROTMAN->ChangePage( ePAGE_NONE ); ITEMMAN->ClearUserSellTarget(); HERO->DeActiveTarotBubble(); HERO->DeActiveUserSellBubble(); } void cGameUIManager::HideItemSetWindow( cUIWindow* exceptWin ) { assert( mpItemMixWindow ); assert( mpPutCardWindow ); assert( mpEnhancedWindow ); if( mpItemMixWindow != exceptWin ) mpItemMixWindow->Hide(); if( mpPutCardWindow != exceptWin ) mpPutCardWindow->Hide(); if( mpEnhancedWindow != exceptWin ) mpEnhancedWindow->Hide(); } void cGameUIManager::ToggleOptionWindow() { assert(mpOptionWindow); if( mpOptionWindow ) mpOptionWindow->Toggle(); } void cGameUIManager::ToggleHeroInfoWindow() { assert(mpHeroInfoWindow); if( mpHeroInfoWindow ) { mpHeroInfoWindow->Toggle(); /// heroÁ¤º¸¸¦ Àç°è»êÇÑ´Ù. if( mpHeroInfoWindow->IsVisible() ) UpdateHeroInfo(); } } void cGameUIManager::ToggleInventoryWindow() { assert( mpInventoryWindow ); if( mpInventoryWindow ) { mpInventoryWindow->Toggle(); if( mpInventoryWindow->IsVisible() ) { mpItemCountWindow->Hide(); } } } void cGameUIManager::ToggleBagWindow( unsigned int i ) { assert( mpBagWindow[i] ); if( mpBagWindow[i] ) mpBagWindow[i]->Toggle(); } void cGameUIManager::ToggleWareHouseBagWindow( unsigned int idx ) { assert( mpWareHouseBagWindow[idx] ); if( mpWareHouseBagWindow[idx] ) mpWareHouseBagWindow[idx]->Toggle(); } void cGameUIManager::ToggleSmallMiniMapWindow() { if( mDuelMode ) return; assert(mpSmallMiniMapWindow); if( mpSmallMiniMapWindow ) mpSmallMiniMapWindow->Toggle(); } void cGameUIManager::ToggleMiniMapWindow() { assert(mpMiniMapWindow); if( mpMiniMapWindow ) mpMiniMapWindow->Toggle(); } /// void cGameUIManager::ToggleFriendWindow() { assert( mpFriendWindow ); if( mpFriendWindow ) mpFriendWindow->Toggle(); } void cGameUIManager::ToggleSkillWindow() { assert( mpSkillWindow ); if( mpSkillWindow ) mpSkillWindow->Toggle(); } void cGameUIManager::ToggleQuestWindow() { assert( mpQuestWindow ); if( mpQuestWindow ) mpQuestWindow->Toggle(); } void cGameUIManager::TogglePartyMenu() { assert( mpPartyMenu ); if( mpPartyMenu ) mpPartyMenu->Toggle(); } void cGameUIManager::TogglePartyDivideMenu() { assert( mpPartyDivideMenu ); if( mpPartyDivideMenu ) mpPartyDivideMenu->Toggle(); } void cGameUIManager::TogglePutCardWindow() { if( mpPutCardWindow ) mpPutCardWindow->Toggle(); } void cGameUIManager::ToggleCardBookWindow() { if( mpCardBookWindow ) { // show ÇÒ Â÷·ÊÀϰæ¿ì if( mpCardBookWindow->IsVisible() == false ) { if( TAROTMAN->IsUsingTarot() == true ) { CHATMANAGER->AddSystemMsg( eSYSTEM_NORMAL, GAMERESOURCEMAN->GetGameText( 329 ) ); return; } } mpCardBookWindow->Toggle(); } } void cGameUIManager::ToggleSocialWindow() { if( mpSocialWindow ) mpSocialWindow->Toggle(); } void cGameUIManager::ToggleGuildWindow() { if( mpGuildWindow ) mpGuildWindow->Toggle(); } void cGameUIManager::ToggleThemeStateWindow() { if( mpThemeStateWindow ) mpThemeStateWindow->Toggle(); } void cGameUIManager::ToggleShortcutWindow() { if( mpShortcutWindow ) mpShortcutWindow->Toggle(); } void cGameUIManager::ToggleTitleWindow() { if( mpTitleWindow ) mpTitleWindow->Toggle(); } void cGameUIManager::ToggleItemMixWindow() { if( mpItemMixWindow ) mpItemMixWindow->Toggle(); } void cGameUIManager::ToggleItemReceiptWindow() { if( mpReceiptWindow ) mpReceiptWindow->Toggle(); } void cGameUIManager::ToggleTwitterWindow() { if( mpTwitterWindow ) mpTwitterWindow->Toggle(); } void cGameUIManager::ToggleCamaelWindow() { if( mpCamaelWindow ) mpCamaelWindow->Toggle(); } void cGameUIManager::ClearPartyWindow() { assert( mpPartyWindow ); if( mpPartyWindow ) { mpPartyWindow->Hide(); mpPartyWindow->Clear(); } } void cGameUIManager::ToggleGameUI() { /// °ÔÀÓ UI Àüü ON / OFF cUIRootNode* pRoot = UIMAN->GetRootNode(); if( pRoot ) { if( pRoot->IsVisible() ) { UIMAN->HideGameUI(); } else { UIMAN->ShowGameUI(); } } } void cGameUIManager::ShowNpcBackWindow() { if( mpNpcBackWindow ) mpNpcBackWindow->Show(); UIMAN->AddCloseByNpcHide( mpNpcBackWindow ); } void cGameUIManager::HideNpcBackWindow() { if( mpNpcBackWindow ) mpNpcBackWindow->Hide(); } void cGameUIManager::ShowSkillWindow( bool backup ) { assert( mpSkillWindow ); if( mpSkillWindow ) { if( backup == true ) mpSkillWindow->BackupWindowPos(); mpSkillWindow->Reset(); mpSkillWindow->Show(); } } void cGameUIManager::ShowNpcDisjointWindow() { assert( mpNpcDisjointWindow ); if( mpNpcDisjointWindow ) mpNpcDisjointWindow->Show(); } void cGameUIManager::ShowCardBookWindow() { assert( mpCardBookWindow ); if( mpCardBookWindow ) mpCardBookWindow->Show(); } void cGameUIManager::ShowHeroInfoWindow() { assert( mpHeroInfoWindow ); if( mpHeroInfoWindow ) mpHeroInfoWindow->Show(); } void cGameUIManager::ShowInventory() { if( mpInventoryWindow ) mpInventoryWindow->Show(); else assert(0); } void cGameUIManager::ShowWarehouse() { if( mpWareHouseWindow ) mpWareHouseWindow->Show(); else assert(0); } void cGameUIManager::UpdateInvenWithUI( cUIWindow* win, bool backup ) { if( win && mpInventoryWindow && mpBagWindow[0] ) { // inven backup if( backup == true ) { mpInventoryWindow->BackupWindowPos(); } // reset win->Reset(); mpInventoryWindow->Reset(); // bag width int bagWidth = 0; if( HERO->GetBagEndSlot() >= INVENTORY_BAG1_END && HERO->GetBagEndSlot() <= INVENTORY_BAG3_END ) { bagWidth = mpBagWindow[0]->GetRelativeRect().GetWidth(); } int winWidth = win->GetAbsoluteRect().GetWidth(); int invenWidth = mpInventoryWindow->GetAbsoluteRect().GetWidth(); int winTop = win->GetRelativeRect().mTop; int invenTop = mpInventoryWindow->GetRelativeRect().mTop; int left = (int)(( (int)RENDERSYS->GetScreenWidth() - (winWidth + invenWidth + bagWidth)) * 0.5f); if( left < 0 ) { left = 0; } // À§Ä¡ °»½Å win->SetRelativePos( cUIPos( left, winTop ) ); mpInventoryWindow->SetRelativePos( cUIPos( left + winWidth, invenTop ) ); // inventory BagWindow for( unsigned int i=0; i<3; i++ ) { if( mpBagWindow[i] ) { mpBagWindow[i]->Reset(); int invenLeft = mpInventoryWindow->GetRelativeRect().mLeft; int top = mpBagWindow[i]->GetRelativeRect().mTop; mpBagWindow[i]->SetRelativePos( cUIPos( invenLeft + invenWidth, top ) ); } mpInventoryWindow->SetBagButtonPressed( i, true ); } } } // â°í¿ÍÀÇ À§Ä¡ Á¶Àý void cGameUIManager::UpdateInvenWithWare() { if( mpWareHouseWindow && mpInventoryWindow && mpBagWindow[0] && mpWareHouseBagWindow[0] ) { // inven backup mpInventoryWindow->BackupWindowPos(); // reset mpWareHouseWindow->Reset(); mpInventoryWindow->Reset(); // bag width int bagWidth = 0; if( HERO->GetBagEndSlot() >= INVENTORY_BAG1_END && HERO->GetBagEndSlot() <= INVENTORY_BAG3_END ) { bagWidth = mpBagWindow[0]->GetRelativeRect().GetWidth(); } int warebagWidth = 0; if( HERO->GetWareHouseEndSlot() >= INVENTORY_WAREHOUSE1_END && HERO->GetWareHouseEndSlot() <= INVENTORY_WAREHOUSE3_END ) { warebagWidth = mpWareHouseBagWindow[0]->GetRelativeRect().GetWidth(); } int wareWidth = mpWareHouseWindow->GetAbsoluteRect().GetWidth(); int invenWidth = mpInventoryWindow->GetAbsoluteRect().GetWidth(); int wareTop = mpWareHouseWindow->GetRelativeRect().mTop; int invenTop = mpInventoryWindow->GetRelativeRect().mTop; int left = (int)(( (int)RENDERSYS->GetScreenWidth() - (wareWidth + invenWidth + bagWidth + warebagWidth)) * 0.5f); if( left < 0 ) { left = 0; } // À§Ä¡ °»½Å mpWareHouseWindow->SetRelativePos( cUIPos( left + warebagWidth, wareTop ) ); mpInventoryWindow->SetRelativePos( cUIPos( left + warebagWidth + wareWidth, invenTop ) ); // inventory BagWindow for( unsigned int i=0; i<3; i++ ) { if( mpBagWindow[i] ) { mpBagWindow[i]->Reset(); int invenLeft = mpInventoryWindow->GetRelativeRect().mLeft; int top = mpBagWindow[i]->GetRelativeRect().mTop; mpBagWindow[i]->SetRelativePos( cUIPos( invenLeft + invenWidth, top ) ); } mpInventoryWindow->SetBagButtonPressed( i, true ); } // ware bagwindow for( unsigned int i=0; i<3; i++ ) { if( mpWareHouseBagWindow[i] ) { mpWareHouseBagWindow[i]->Reset(); int top = mpWareHouseBagWindow[i]->GetRelativeRect().mTop; mpWareHouseBagWindow[i]->SetRelativePos( cUIPos( left, top ) ); } mpWareHouseWindow->SetBagPressed( i, true ); } mpInventoryWindow->Show(); mpWareHouseWindow->Show(); } } void cGameUIManager::ShowNpcStoreWindow( unsigned long npcIndex ) { if( mpNpcStoreWindow ) mpNpcStoreWindow->Show( npcIndex ); else assert(0); } void cGameUIManager::ShowFriendWindow() { assert( mpFriendWindow ); if( mpFriendWindow ) mpFriendWindow->Show(); } void cGameUIManager::ShowOptionWindow() { assert( mpOptionWindow ); if( mpOptionWindow ) mpOptionWindow->Show(); } void cGameUIManager::ShowTarotWindow( unsigned char page ) { assert( mpTarotWindow ); mpTarotWindow->ChangeTarotPage( page ); } void cGameUIManager::ShowTarotControlWindow() { if( mpTarotWindow ) mpTarotWindow->ChangeTarotPage( 0 ); assert(mpTarotControlWindow); if( mpTarotControlWindow ) mpTarotControlWindow->Show(); } void cGameUIManager::ShowItemCountWindow( eMSGBox_Event eventtype, unsigned long i0, unsigned long i1 ) { assert( mpItemCountWindow ); if( mpItemCountWindow ) mpItemCountWindow->ShowModal( eventtype, i0, i1 ); } void cGameUIManager::ShowItemCountWindow( eMSGBox_Event eventtype, unsigned long itemIndex ) { assert( mpItemCountWindow ); if( mpItemCountWindow ) mpItemCountWindow->ShowModal( eventtype, itemIndex ); } void cGameUIManager::ShowItemCountWindow( eMSGBox_Event eventtype, unsigned long slotIndex, unsigned long itemIndex, unsigned long maxValue, unsigned long price ) { assert( mpItemCountWindow ); if( mpItemCountWindow ) mpItemCountWindow->ShowModal( eventtype, slotIndex, itemIndex, maxValue, price ); } void cGameUIManager::ShowItemDumpAskWindow( unsigned short slotIndex ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eMBEVENT_ITEM_DUMP, slotIndex, 0, 0, 0 ); } void cGameUIManager::ShowItemBuyAskWindow( unsigned long itemIndex, unsigned int count ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eMBEVENT_ITEM_BUY, 0, itemIndex, count, 0 ); } void cGameUIManager::ShowItemSellAskWindow( unsigned short slotIndex, unsigned int count ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eMBEVENT_ITEM_SELL, slotIndex, 0, count, 0 ); } void cGameUIManager::ShowItemUserSellBuyAskWindow( unsigned short slotIndex, unsigned long itemIndex, unsigned short count, unsigned long price ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eMBEVENT_ITEM_USERSELLBUY, slotIndex, itemIndex, count, price ); } void cGameUIManager::ShowItemNpcDealBuyAskWindow( unsigned long slotIndex, unsigned long itemIndex, unsigned short count, unsigned long price ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eMBEVENT_ITEM_NPCDEALBUY, slotIndex, itemIndex, count, price ); } void cGameUIManager::ShowItemPutCard( eMSGBox_Event eventtype, unsigned short slotIndex0, unsigned short putSlot, unsigned long itemIndex ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eventtype, slotIndex0, putSlot, itemIndex ); } void cGameUIManager::ShowItemCardBook( eMSGBox_Event eventtype, unsigned short slotIndex0, unsigned short slotIndex1, unsigned long itemIndex ) { if( mpItemMsgWindow ) mpItemMsgWindow->ShowModal( eventtype, slotIndex0, slotIndex1, itemIndex ); } void cGameUIManager::ShowMoneyWindow( eMoneyType type, eMSGBox_Event eventtype, unsigned short slotIndex ) { assert( mpMoneyWindow ); if( mpMoneyWindow ) mpMoneyWindow->ShowMoney( type, eventtype, slotIndex ); } void cGameUIManager::ShowMoneyModifyWindow( eMoneyType type, eMSGBox_Event eventtype, unsigned short slotIndex ) { assert( mpMoneyWindow ); if( mpMoneyWindow ) mpMoneyWindow->ShowMoneyModify( type, eventtype, slotIndex ); } void cGameUIManager::ShowExitWindow() { assert( mpExitWindow ); if( mpExitWindow ) mpExitWindow->Show(); } void cGameUIManager::ShowTutorialExitWindow() { assert( mpTutorialExitWindow ); if( mpTutorialExitWindow ) mpTutorialExitWindow->Show(); } void cGameUIManager::ShowQuestWindow() { assert( mpQuestWindow ); if( mpQuestWindow ) { mpQuestWindow->Reset(); mpQuestWindow->Show(); } } void cGameUIManager::ShowLootingWindow() { assert( mpLootingWindow ); if( mpLootingWindow ) { mpLootingWindow->Reset(); mpLootingWindow->Show(); } } void cGameUIManager::ShowRevivalWindow() { assert( mpRevivalWindow ); if( mpRevivalWindow ) { mpRevivalWindow->Reset(); mpRevivalWindow->Show(); } } void cGameUIManager::ShowGuildWindow() { assert( mpGuildWindow ); if( mpGuildWindow ) mpGuildWindow->Show(); } void cGameUIManager::ShowNpcTarotWindow( unsigned long* tarotArr, unsigned long price, unsigned long* spreadArr, short size ) { assert( mpTarotWindow ); if( mpTarotWindow ) { mpTarotWindow->SetNpcTarotDeck( tarotArr ); mpTarotWindow->SetNpcSpread( spreadArr, size ); mpTarotWindow->SetPrice( price ); MSGROOT Msg; Msg.Category = NM_NPC; Msg.Protocol = NM_NPC_TAROT_OPEN_REQ; NETWORK->SendNetworkMsg( (char*)&Msg, sizeof(Msg) ); } } void cGameUIManager::ShowTodayWordWindow() { assert( mpTodayWordWindow ); if( mpTodayWordWindow ) mpTodayWordWindow->Show(); } void cGameUIManager::ShowReceiptWindow() { assert( mpReceiptWindow ); if( mpReceiptWindow ) mpReceiptWindow->Show(); } void cGameUIManager::ShowSocialWindow() { assert( mpSocialWindow ); if( mpSocialWindow ) mpSocialWindow->Show(); } void cGameUIManager::ShowEnhanceWindow() { assert( mpEnhancedWindow ); if( mpEnhancedWindow ) mpEnhancedWindow->Show(); } void cGameUIManager::ShowNpcDealWindow() { assert( mpNpcDealWindow ); if( mpNpcDealWindow ) mpNpcDealWindow->Show(); } void cGameUIManager::ShowPartyUnionWindow() { assert( mpUnionWindow ); if( mpUnionWindow ) mpUnionWindow->Show(); } void cGameUIManager::ShowPartyUnionSmallWindow() { assert( mpUnionWindow ); if( mpUnionSmallWindow ) mpUnionSmallWindow->Show(); } void cGameUIManager::ShowThemeStateWindow() { assert( mpThemeStateWindow ); if( mpThemeStateWindow ) mpThemeStateWindow->Show(); } void cGameUIManager::ShowCamaelWindow() { assert( mpCamaelWindow ); if( mpCamaelWindow ) mpCamaelWindow->Show(); } void cGameUIManager::ShowSkillPreviewWindow( unsigned long jobIndex1, unsigned long jobIndex2 ) { assert( mpSkillPreviewWindow ); if( mpSkillPreviewWindow ) mpSkillPreviewWindow->Show( jobIndex1, jobIndex2 ); } void cGameUIManager::ShowMoveMsgWindow() { assert( mpMoveMsgWindow ); if( mpMoveMsgWindow ) mpMoveMsgWindow->Show(); } void cGameUIManager::HidePartyDivideMenu() { if( mpPartyDivideMenu ) mpPartyDivideMenu->Hide(); } void cGameUIManager::HidePartyMenu() { if( mpPartyMenu ) mpPartyMenu->Hide(); } void cGameUIManager::HideTarotControlWindow() { assert( mpTarotControlWindow ); if( mpTarotControlWindow ) mpTarotControlWindow->Hide(); } void cGameUIManager::HideLootingWindow() { if( mpLootingWindow && mpLootingWindow->IsVisible() == true ) mpLootingWindow->Hide(); } void cGameUIManager::HideTradeWindow() { if( mpTradeWindow ) mpTradeWindow->Hide(); } void cGameUIManager::HideCardBookWindow() { if( mpCardBookWindow ) mpCardBookWindow->Hide(); } void cGameUIManager::HideTodayWordWindow() { if( mpTodayWordWindow ) mpTodayWordWindow->Hide(); } void cGameUIManager::HideMailWindow() { if( mpMailWindow ) mpMailWindow->Hide(); } void cGameUIManager::HidePartyUnionWindow() { if( mpUnionWindow ) mpUnionWindow->Hide(); } void cGameUIManager::HidePartyUnionSmallWindow() { if( mpUnionSmallWindow ) mpUnionSmallWindow->Hide(); } void cGameUIManager::HideMoveMsgWindow() { if( mpMoveMsgWindow ) mpMoveMsgWindow->Hide(); } void cGameUIManager::HideCamaelWindow() { if( mpCamaelWindow ) mpCamaelWindow->Hide(); } /// °ÔÀÓ Á¢¼Ó½Ã HERO °ü·Ã ¼¼ÆÃ void cGameUIManager::InitHeroInfo() { assert(mpHeroStateWindow); assert(mpHeroInfoWindow); if( mpHeroStateWindow ) mpHeroStateWindow->InitHeroInfo(); if( mpHeroInfoWindow ) mpHeroInfoWindow->InitHeroInfo(); if( mpSocialWindow ) mpSocialWindow->UpdatePoint(); } void cGameUIManager::UpdateHeroInfo() { assert( mpHeroStateWindow ); assert( mpHeroInfoWindow ); if( mpHeroStateWindow ) mpHeroStateWindow->UpdateHeroInfo(); if( mpHeroInfoWindow ) mpHeroInfoWindow->UpdateHeroInfo(); } void cGameUIManager::UpdateHeroHPMP() { assert( mpHeroStateWindow ); assert( mpHeroInfoWindow ); if( mpHeroStateWindow ) mpHeroStateWindow->UpdateHeroHPMP(); if( mpHeroInfoWindow ) mpHeroInfoWindow->UpdateHeroHPMP(); } void cGameUIManager::UpdateExpSxp() { assert( mpHeroStateWindow ); assert( mpHeroInfoWindow ); if( mpHeroStateWindow ) mpHeroStateWindow->UpdateExpSxp(); if( mpHeroInfoWindow ) mpHeroInfoWindow->UpdateExpSxp(); } void cGameUIManager::UpdateRecovery() { assert( mpHeroInfoWindow ); if( mpHeroInfoWindow ) { mpHeroInfoWindow->SetHPrecovery( HERO->GetStatus2()->mRecovHP , HERO->GetExtStatusInfoType( ePLAYER_STATUS_EXT_RECOVHP ) ); mpHeroInfoWindow->SetMPrecovery( HERO->GetStatus2()->mRecovMP, HERO->GetExtStatusInfoType( ePLAYER_STATUS_EXT_RECOVMP ) ); } } /// ¸ðµç ½ºÅ³Æ÷ÀÎÆ® ¾÷µ¥ÀÌÆ® void cGameUIManager::UpdateSkillPoint() { assert(mpSkillWindow); if( mpSkillWindow ) { mpSkillWindow->UpdateSkillPoint(); if( mpSkillWindow->IsVisible() ) { mpSkillWindow->UpdateSkillUsePoint(); mpSkillWindow->ShowSkillUpButton(); } } } void cGameUIManager::UpdateMinimap() { if( mpSmallMiniMapWindow ) mpSmallMiniMapWindow->SetMapData(); if( mpMiniMapWindow ) mpMiniMapWindow->SetMapData(); } cBaseObject* cGameUIManager::GetPartyObject( int i ) { if( mpPartyStateWindow[i] && mpPartyStateMiniWindow[i] && mpPartyStateWindow[i]->IsVisible() == true ) { return OBJECTMAN->GetObject( eOBJECTTYPE_PLAYER, mpPartyStateWindow[i]->GetUserIndex() ); } return 0; } cColumnQuickSlot* cGameUIManager::GetColumnQuickSlot( int type ) { if( type < QUICKTYPE_COMMON || type > QUICKTYPE_COMMON_EXTRA2 ) { assert(0); return 0; } return mpColumnQuickSlot[type]; } cRowQuickSlot* cGameUIManager::GetRowQuickSlot( int type ) { if( type < QUICKTYPE_COMMON || type > QUICKTYPE_COMMON_EXTRA2 ) { assert(0); return 0; } return mpRowQuickSlot[type]; } bool cGameUIManager::IsAccessPartyObject( int partyIdx ) { if( partyIdx < 0 || partyIdx > 4 ) return false; if( mpPartyStateWindow[partyIdx] && mpPartyStateMiniWindow[partyIdx] ) return true; return false; } /// Àüü ½Àµæ ´­¸£±â ´ÜÃà void cGameUIManager::EventLootingWindow() { if( PVPMAN->IsEnableBattle() == true ) return; /// Àüü ½Àµæ ¿äû if( mpLootingWindow && mpLootingWindow->IsVisible() == true ) { mpLootingWindow->OnCommand( 0, eUIID_GAME_LOOTING_ALL ); } else { /// Near DropItem Click ITEMMAN->CheckNearestDropItem(); } } void cGameUIManager::SetDuelMode( bool mode ) { mDuelMode = mode; if( mDuelMode ) { if( mpSmallMiniMapWindow ) mpSmallMiniMapWindow->Hide(false); if( mpHeroStateWindow ) mpHeroStateWindow->Hide(false); if( mpBuffWindow ) mpBuffWindow->Hide(false); if( mpDeBuffWindow ) mpDeBuffWindow->Hide(false); if( mpCashBuffWindow ) mpCashBuffWindow->Hide( false ); if( mpTargetWindow ) { mpTargetWindow->SetHoldView( true ); //mpTargetWindow->SetEnabled( false ); } } else { if( mpSmallMiniMapWindow ) mpSmallMiniMapWindow->Show(false); if( mpHeroStateWindow ) mpHeroStateWindow->Show(false); if( mpBuffWindow ) mpBuffWindow->Show(false); if( mpDeBuffWindow ) mpDeBuffWindow->Show(false); if( mpCashBuffWindow ) mpCashBuffWindow->Show(false); if( mpTargetWindow ) { mpTargetWindow->SetHoldView( false ); //mpTargetWindow->SetEnabled( true ); } } } bool cGameUIManager::LoadWindowOption_Character( const cString& pathName ) { mQuestCharacterIdx = HERO->GetObjectID(); mQuestCheckArr.Clear(); mShortcutMap.Clear(); mClosedCategorySet.Clear(); mClosedSimpleCategorySet.Clear(); TITLEMAN->ClearQuickList(); for( int i = 0; i < 5; i++ ) mTitleOption.titleIdxArr[i] = -1; cFileLoader loader; if( loader.OpenNoPack( pathName, true ) == false ) return false; sWindowOptCharacter header; if( loader.Read( &header, sizeof(sWindowOptCharacter) ) != sizeof(sWindowOptCharacter) ) { return false; } switch( header.version ) { case 1: { /// ¹öÀüÁ¤º¸ + üũÇÑ Äù½ºÆ® °³¼ö Ä«¿îÅͰ¡ ÇØµå unsigned long questIdx; for( unsigned int i=0; iSetHaveQuickTitle( mTitleOption.titleIdxArr ); } break; default: { assert(0); } return false; } return true; } void cGameUIManager::SaveWindowOption_Character( const cString& pathName ) { UpdateWindowOption_Character(); /// if( ::FileExist( "Option" ) == false ) { ::CreateDirectory( L"Option", 0 ); } cFileSaver saver; if( saver.Open( pathName ) == false ) { assert( 0 && "failed to open file to save UI pos file" ); return; } /// ver 1 : Çì´õ( ¹öÁ¯ + ¼±ÅÃµÈ Äù½ºÆ® °³¼ö ) /// ver 2 : ver1 + ´ÜÃàŰ /// ver 3 : ver2 + ´ÜÃàŰ °³¼± /// ver 4 : ver3 + Äù½ºÆ® â¿¡¼­ ¸Ê Ä«Å×°í¸®°¡ ´ÝÇô ÀÖ´Â °³¼ö(QuestWin/QuestSimpleWin) /// ver 5 : ver4 + ȣĪâ ȣĪ ¸®½ºÆ® sWindowOptCharacter header; header.version = CHARHEARDER_VER; header.questCount =mQuestCheckArr.GetSize(); if( saver.Write( &header, sizeof(sWindowOptCharacter) ) != sizeof(sWindowOptCharacter) ) { assert( 0 && "failed to write character window option file header" ); return; } unsigned int questMapCount = mClosedCategorySet.GetSize(); if( saver.WriteUnsignedInt( questMapCount ) == false ) { assert( 0 && "failed to write simple quest map count" ); return; } unsigned int simpleQuestMapCount = mClosedSimpleCategorySet.GetSize(); if( saver.WriteUnsignedInt( simpleQuestMapCount ) == false ) { assert( 0 && "failed to write simple quest map count" ); return; } unsigned int shortcutCount = mShortcutMap.GetSize(); if( saver.WriteUnsignedInt( shortcutCount ) == false ) { assert( 0 && "failed to write shortcut index" ); return; } for( unsigned int i=0; iindex, data ) == false ) { assert(0); } } return true; } void cGameUIManager::SaveWindowPos( const cString& pathName ) { UpdateWindowPos(); /// if( ::FileExist( "Option" ) == false ) { ::CreateDirectory( L"Option", 0 ); } cFileSaver saver; if( saver.Open( pathName ) == false ) { assert( 0 && "failed to open file to save UI pos file" ); return; } sWindowPosHeader header; header.version = POSHEARDER_VER; header.dataCount = mSaveWindowInfo.GetSize(); if( saver.Write( &header, sizeof(sWindowPosHeader) ) != sizeof(sWindowPosHeader) ) { assert( 0 && "failed to write UI pos file header" ); return; } /// for( unsigned int i=0; i<4; i++ ) { if( saver.Write( &(mChatWinOption[i]), sizeof(sChatWinOption) ) == false ) { assert( 0 && "failed to write chat option" ); return; } } /// if( saver.WriteFloat( mMiniWinPer) == false ) { assert( 0 && "failed to write minimap option" ); return; } if( saver.WriteInt( mChatBoxMaxRow ) == false ) { assert( 0 && "failed to write chat max row" ); return; } for( unsigned int i=0; i<3; i++ ) { if( saver.WriteInt( mExtraChatBoxMaxRow[i] ) == false ) { assert( 0 && "failed to write extra chat max row" ); return; } } if( saver.Write( &mInvenWinOption, sizeof(sInvenWinOption) ) == false ) { assert( 0 && "failed to write Inven option"); } if( saver.Write( &mMiniMapWinOption, sizeof(sMiniMapWinOption) ) == false ) { assert( 0 && "failed to write minimap option"); } if( saver.Write( &mPartyStateOption, sizeof(sPartyStateOption) ) == false ) { assert( 0 && "failed to write partystate option"); } if( saver.Write( &mQuestOption, sizeof(sQuestOption) ) == false ) { assert( 0 && "failed to write quest option"); } if( saver.Write( &mMoveLockOption, sizeof(sMoveLockOption) ) == false ) { assert( 0 && "failed to write move lock option"); } if( saver.Write( &mSkillWinOption, sizeof(sSkillWinOption) ) == false ) { assert( 0 && "failed to write move lock option"); } { cSaveWindowPos::cIterator i = mSaveWindowInfo.Begin(); cSaveWindowPos::cIterator end = mSaveWindowInfo.End(); for( ; i!=end; i++ ) { sWindowPosData* data = (sWindowPosData*)(i->mSecond); saver.Write( data, sizeof(sWindowPosData) ); } } } void cGameUIManager::ApplyWindowPos() { /// chatting window mpChatWindow->SetPress( mChatWinOption[0].checkNormal, mChatWinOption[0].checkParty, mChatWinOption[0].checkGuild, mChatWinOption[0].checkShout, mChatWinOption[0].checkTrade, mChatWinOption[0].checkWhisper, mChatWinOption[0].checkSystem, mChatWinOption[0].checkMegaPhone ); /// chatting extra window for( unsigned int k=1; k<4; k++ ) { mpChatExtraWindow[k-1]->SetPress( mChatWinOption[k].checkNormal, mChatWinOption[k].checkParty, mChatWinOption[k].checkGuild, mChatWinOption[k].checkShout, mChatWinOption[k].checkTrade, mChatWinOption[k].checkWhisper, mChatWinOption[k].checkSystem, mChatWinOption[k].checkMegaPhone ); } /// mpSmallMiniMapWindow->SetImagePercent( mMiniWinPer ); mpChatWindow->InitBoxSize( mChatBoxMaxRow ); for( unsigned int i=0; i<3; i++ ) { mpChatExtraWindow[i]->InitBoxSize( mExtraChatBoxMaxRow[i] ); } /// mpInventoryWindow->SetBagButtonPressed( 0, mInvenWinOption.showBag1 ); mpInventoryWindow->SetBagButtonPressed( 1, mInvenWinOption.showBag2 ); mpInventoryWindow->SetBagButtonPressed( 2, mInvenWinOption.showBag3 ); mpMiniMapWindow->SetPressExplain( mMiniMapWinOption.showHelper ); mpMiniMapWindow->SetPressQuestView( mMiniMapWinOption.showQuestView ); mpPartyWindow->ChangeDisplayType( mPartyStateOption.showFlag ); mpQuestWindow->SetShowInfo( mQuestOption.infoViewFlag ); mpChatWindow->SetMoveLock( mMoveLockOption.chatLock ); mpPartyWindow->SetMoveLock( mMoveLockOption.partyLock ); mpSkillWindow->SetPressStepListView( mSkillWinOption.showStepListWin ); /// if( mSaveWindowInfo.GetSize() == 0 ) return; cSaveWindowPos::cIterator i = mSaveWindowInfo.Begin(); cSaveWindowPos::cIterator end = mSaveWindowInfo.End(); for( ; i!=end; i++ ) { bool applyShow = true; sWindowPosData* data = (sWindowPosData*)(i->mSecond); cUIWindow* win = 0; switch( data->index ) { case CHATWIN_POS: win = mpChatWindow; break; case ECHATWIN1_POS: win = mpChatExtraWindow[0]; break; case ECHATWIN2_POS: win = mpChatExtraWindow[1]; break; case ECHATWIN3_POS: win = mpChatExtraWindow[2]; break; case HEROSTATWIN_POS: win = mpHeroStateWindow; break; case HEROINFOWIN_POS: win = mpHeroInfoWindow; break; case TARGETWIN_POS: win = mpTargetWindow; break; case INVENWIN_POS: win = mpInventoryWindow; break; case BAGWIN1_POS: win = mpBagWindow[0]; break; case BAGWIN2_POS: win = mpBagWindow[1]; break; case BAGWIN3_POS: win = mpBagWindow[2]; break; case SKILLWIN_POS: win = mpSkillWindow; break; case OPTWIN_POS: win = mpOptionWindow; break; case MINIMAPWIN_POS: win = mpSmallMiniMapWindow; break; case CQUICK_POS: win = mpColumnQuickSlot[0]; break; case RQUICK_POS: win = mpRowQuickSlot[0]; break; case FSCQUICK_POS: win = mpFSColumnQuickSlot; break; case FSRQUICK_POS: win = mpFSRowQuickSlot; break; case PARTYWIN_POS: win = mpPartyWindow; applyShow = false; break; case PARTYSTATWIN1_POS: win = mpPartyStateWindow[0]; applyShow = false; break; case PARTYSTATWIN2_POS: win = mpPartyStateWindow[1]; applyShow = false; break; case PARTYSTATWIN3_POS: win = mpPartyStateWindow[2]; applyShow = false; break; case PARTYSTATWIN4_POS: win = mpPartyStateWindow[3]; applyShow = false; break; case PARTYSTATWIN5_POS: win = mpPartyStateWindow[4]; applyShow = false; break; case PARTYSTATMINIWIN1_POS: win = mpPartyStateMiniWindow[0]; applyShow = false; break; case PARTYSTATMINIWIN2_POS: win = mpPartyStateMiniWindow[1]; applyShow = false; break; case PARTYSTATMINIWIN3_POS: win = mpPartyStateMiniWindow[2]; applyShow = false; break; case PARTYSTATMINIWIN4_POS: win = mpPartyStateMiniWindow[3]; applyShow = false; break; case PARTYSTATMINIWIN5_POS: win = mpPartyStateMiniWindow[4]; applyShow = false; break; case FRIENDWIN_POS: win = mpFriendWindow; break; case TAROTCON_POS: win = mpTarotControlWindow; applyShow = false; break; case SELLWIN_POS: win = mpUserSellWindow; applyShow = false; break; case LOOTWIN_POS: win = mpLootingWindow; applyShow = false; break; case QUESTWIN_POS: win = mpQuestWindow; break; case SQUESTWIN_POS: win = mpQuestSimpleWindow; break; case DISJOINT_POS: win = mpNpcDisjointWindow; applyShow = false; break; case ENHANCEDWIN_POS: win = mpEnhancedWindow; break; case PUTCARD_POS: win = mpPutCardWindow; break; case SOCIALWIN_POS: win = mpSocialWindow; break; case TITLEWIN_POS: win = mpTitleWindow; break; case GUILDWIN_POS: win = mpGuildWindow; break; case THEMESTATEWIN_POS: win = mpThemeStateWindow; break; case TODAYWORDWIN_POS: win = mpTodayWordWindow; applyShow = false; break; case ITEMMIXWIN_POS: win = mpItemMixWindow; break; case MAILWIN_POS: win = mpMailWindow; applyShow = false; break; case PARTYUNIONWIN_POS: win = mpUnionWindow; applyShow = false; break; case PARTYUNIONSMALLWIN_POS: win = mpUnionSmallWindow; applyShow = false; break; case CASHFREEMOVE_POS: win = mpCashFreeMoveWindow; break; case TWITTER_POS: win = mpTwitterWindow; break; case CQUICK_EXTRA1_POS: win = mpColumnQuickSlot[1]; break; case RQUICK_EXTRA1_POS: win = mpRowQuickSlot[1]; break; case CQUICK_EXTRA2_POS: win = mpColumnQuickSlot[2]; break; case RQUICK_EXTRA2_POS: win = mpRowQuickSlot[2]; break; default:win = 0; break; } if( win == 0 ) continue; win->SetRelativePos( cUIPos( (int)data->pos.x, (int)data->pos.y ) ); if( applyShow == false ) continue; if( data->showFlag >= 1 ) { win->Show( false ); switch( data->index ) { case RQUICK_POS: QUICKMAN->SetRowQuick( true , QUICKTYPE_COMMON ); break; case FSRQUICK_POS: QUICKMAN->SetRowQuickFS( true ); break; case RQUICK_EXTRA1_POS: QUICKMAN->SetRowQuick( true , QUICKTYPE_COMMON_EXTRA1 ); break; case RQUICK_EXTRA2_POS: QUICKMAN->SetRowQuick( true , QUICKTYPE_COMMON_EXTRA2 ); break; } } else win->Hide( false ); } } void cGameUIManager::ApplyWinodwOption_CharacterQuest() { /// for( unsigned int i=0;iAddQuestSelect( mQuestCheckArr[i], true ); /// Á¢Èù QuestWin/QuestSimpleWin ¸Ê Ä«Å×°í¸® Àû¿ë if( !mpQuestWindow || !mpQuestSimpleWindow ) { assert(0); return; } cSaveQuestSet::cConstIterator pos = mClosedCategorySet.Begin(); cSaveQuestSet::cConstIterator end = mClosedCategorySet.End(); for( ; pos != end; ++pos ) { mpQuestWindow->SetHideMapCategory( *pos ); } pos = mClosedSimpleCategorySet.Begin(); end = mClosedSimpleCategorySet.End(); for( ; pos != end; ++pos ) { mpQuestSimpleWindow->SetHideMapCategory( *pos ); } ///À©µµ¿ì À§Ä¡ °»½ÅÇØÁÖ±â sWindowPosData* data = (sWindowPosData*)mSaveWindowInfo.GetAt( SQUESTWIN_POS ); if( data && data->index == SQUESTWIN_POS ) { cUIWindow* win = mpQuestSimpleWindow; if( win ) win->SetRelativePos( cUIPos( (int)data->pos.x, (int)data->pos.y ) ); } } void cGameUIManager::ApplyWinodwOption_CharacterShortcut() { SHORTCUTMAN->ResetShortcut(); cShortcutMap::cIterator pos = mShortcutMap.Begin(); cShortcutMap::cIterator end = mShortcutMap.End(); for( ; pos!= end; ++pos ) { int shortcutIndex = (*pos).mFirst; int keyboardIndex = (*pos).mSecond; SHORTCUTMAN->SetShortCutValue( shortcutIndex, keyboardIndex ); } SHORTCUTMAN->UpdateAllIconByShortcut(); } void cGameUIManager::UpdateWindowPos() { bool holdView; for( unsigned int i=0; iIsRowQuick( QUICKTYPE_COMMON )? false:true; break; case RQUICK_POS: win = mpRowQuickSlot[0]; holdView = QUICKMAN->IsRowQuick( QUICKTYPE_COMMON )? true:false; break; case FSCQUICK_POS: win = mpFSColumnQuickSlot; holdView = QUICKMAN->IsRowQuickFS()? false:true; break; case FSRQUICK_POS: win = mpFSRowQuickSlot; holdView = QUICKMAN->IsRowQuickFS()? true:false; break; case PARTYWIN_POS: win = mpPartyWindow; break; case PARTYSTATWIN1_POS: win = mpPartyStateWindow[0];break; case PARTYSTATWIN2_POS: win = mpPartyStateWindow[1];break; case PARTYSTATWIN3_POS: win = mpPartyStateWindow[2];break; case PARTYSTATWIN4_POS: win = mpPartyStateWindow[3];break; case PARTYSTATWIN5_POS: win = mpPartyStateWindow[4];break; case PARTYSTATMINIWIN1_POS: win = mpPartyStateMiniWindow[0];break; case PARTYSTATMINIWIN2_POS: win = mpPartyStateMiniWindow[1];break; case PARTYSTATMINIWIN3_POS: win = mpPartyStateMiniWindow[2];break; case PARTYSTATMINIWIN4_POS: win = mpPartyStateMiniWindow[3];break; case PARTYSTATMINIWIN5_POS: win = mpPartyStateMiniWindow[4];break; case FRIENDWIN_POS: win = mpFriendWindow; break; case TAROTCON_POS: win = mpTarotControlWindow; break; case SELLWIN_POS: win = mpUserSellWindow; break; case LOOTWIN_POS: win = mpLootingWindow; break; case QUESTWIN_POS: win = mpQuestWindow; break; case SQUESTWIN_POS: win = mpQuestSimpleWindow; break; case DISJOINT_POS: win = mpNpcDisjointWindow; break; case ENHANCEDWIN_POS: win = mpEnhancedWindow; break; case PUTCARD_POS: win = mpPutCardWindow; break; case SOCIALWIN_POS: win = mpSocialWindow; break; case TITLEWIN_POS: win = mpTitleWindow; break; case GUILDWIN_POS: win = mpGuildWindow; break; case THEMESTATEWIN_POS: win = mpThemeStateWindow; break; case TODAYWORDWIN_POS: win = mpTodayWordWindow; break; case ITEMMIXWIN_POS: win = mpItemMixWindow; break; case MAILWIN_POS: win = mpMailWindow; break; case PARTYUNIONWIN_POS: win = mpUnionWindow; break; case PARTYUNIONSMALLWIN_POS: win = mpUnionSmallWindow; break; case CASHFREEMOVE_POS: win = mpCashFreeMoveWindow; break; case TWITTER_POS: win = mpTwitterWindow; break; case CQUICK_EXTRA1_POS: win = mpColumnQuickSlot[1]; break; case RQUICK_EXTRA1_POS: win = mpRowQuickSlot[1]; break; case CQUICK_EXTRA2_POS: win = mpColumnQuickSlot[2]; break; case RQUICK_EXTRA2_POS: win = mpRowQuickSlot[2]; break; case SUMMON_POS: win = mpSummonWindow; break; default:win = 0; break; } if( win == 0 ) continue; sWindowPosData* data = (sWindowPosData*)mSaveWindowInfo.GetAt( i ); if( data == 0 ) { data = new sWindowPosData; data->index = i; if( mSaveWindowInfo.Insert( data->index, data ) == false ) { assert(0); continue; } } cUIRect rt= win->GetAbsoluteRect(); data->pos = NiPoint2( (float)rt.mLeft, (float)rt.mTop ); if( holdView ) data->showFlag = 1; else { data->showFlag = win->IsVisible()? 1:0; if( i == TARGETWIN_POS || i == CASHFREEMOVE_POS || i == TWITTER_POS ) data->showFlag = 0; } } /// windows extra option /// chatting mChatWinOption[0].checkNormal = mpChatWindow->IsPressNormal(); mChatWinOption[0].checkParty = mpChatWindow->IsPressParty(); mChatWinOption[0].checkGuild = mpChatWindow->IsPressGuild(); mChatWinOption[0].checkShout = mpChatWindow->IsPressShout(); mChatWinOption[0].checkTrade = mpChatWindow->IsPressTrade(); mChatWinOption[0].checkWhisper = mpChatWindow->IsPressWhisper(); mChatWinOption[0].checkSystem = mpChatWindow->IsPressSystem(); mChatWinOption[0].checkMegaPhone = mpChatWindow->IsPressMegaPhone(); /// chatting extra for( unsigned int i=1; i<4; i++ ) { mChatWinOption[i].checkNormal = mpChatExtraWindow[i-1]->IsPressNormal(); mChatWinOption[i].checkParty = mpChatExtraWindow[i-1]->IsPressParty(); mChatWinOption[i].checkGuild = mpChatExtraWindow[i-1]->IsPressGuild(); mChatWinOption[i].checkShout = mpChatExtraWindow[i-1]->IsPressShout(); mChatWinOption[i].checkTrade = mpChatExtraWindow[i-1]->IsPressTrade(); mChatWinOption[i].checkWhisper = mpChatExtraWindow[i-1]->IsPressWhisper(); mChatWinOption[i].checkSystem = mpChatExtraWindow[i-1]->IsPressSystem(); mChatWinOption[i].checkMegaPhone = mpChatExtraWindow[i-1]->IsPressMegaPhone(); } /// mChatBoxMaxRow = mpChatWindow->GetMaxRowInPage(); for( unsigned int i=0; i<3; i++ ) mExtraChatBoxMaxRow[i] = mpChatExtraWindow[i]->GetMaxRowInPage(); mMiniWinPer = mpSmallMiniMapWindow->GetImagePercent(); mInvenWinOption.showBag1 = mpInventoryWindow->IsShowBag(0); mInvenWinOption.showBag2 = mpInventoryWindow->IsShowBag(1); mInvenWinOption.showBag3 = mpInventoryWindow->IsShowBag(2); mMiniMapWinOption.showHelper = mpMiniMapWindow->IsPressExplain(); mMiniMapWinOption.showQuestView = mpMiniMapWindow->IsPressQuestView(); mPartyStateOption.showFlag = mpPartyWindow->GetDisplayType(); mQuestOption.infoViewFlag = mpQuestWindow->IsShowInfo(); mMoveLockOption.chatLock = mpChatWindow->IsLockedMove(); mMoveLockOption.partyLock = mpPartyWindow->IsLockedMove(); mSkillWinOption.showStepListWin = mpSkillWindow->IsShowStepListWin(); } void cGameUIManager::UpdateWindowOption_Character() { /// mQuestCheckArr.Clear(); tHashSet& questSet = QUESTMAN->GetSelectedSet(); tHashSet::cIterator itr = questSet.Begin(); tHashSet::cIterator end = questSet.End(); for( ; itr!=end; itr++ ) { unsigned long questIdx = (unsigned long)(*itr); mQuestCheckArr.PushBack( questIdx ); } mClosedCategorySet.Clear(); if( mpQuestWindow ) { mpQuestWindow->GetHideMapCategorySet( mClosedCategorySet ); } mClosedSimpleCategorySet.Clear(); if( mpQuestSimpleWindow ) { mpQuestSimpleWindow->GetHideMapCategorySet( mClosedSimpleCategorySet ); } mShortcutMap.Clear(); cShortcutMap* shortcutMap; shortcutMap = SHORTCUTMAN->GetShortcutMap(); if( shortcutMap ) { cShortcutMap::cIterator pos = shortcutMap->Begin(); cShortcutMap::cIterator end = shortcutMap->End(); for( ; pos!=end; ++pos ) { int shortcutIndex = (*pos).mFirst; int keyboardIndex = (*pos).mSecond; mShortcutMap.Insert( shortcutIndex, keyboardIndex ); } } for( int i = 0; i < 5; i++ ) mTitleOption.titleIdxArr[i] = -1; if( TITLEMAN ) TITLEMAN->GetQuickTitle( mTitleOption.titleIdxArr ); } void cGameUIManager::OpenNpcUI( unsigned long npcIndex ) { // npc ŸÀÔ¿¡ µû¶ó Àû¿ë cNpc* pNpc = (cNpc*)OBJECTMAN->GetNpc( npcIndex ); if( pNpc ) { // npc ŸÀÔ¿¡ µû¶ó ºÐ·ù sNPCList* npcInfo = NPCSCRIPT->GetNPCList( pNpc->GetClassId() ); if( npcInfo ) { UIMAN->ShowGameUI(); switch( npcInfo->mType ) { case eNPCTYPE_NORMAL: { // ÀÏ¹Ý if( mpNpcWindow ) mpNpcWindow->Show( pNpc->GetClassId(), npcIndex, pNpc->GetName() ); } break; case eNPCTYPE_MAIL: { // ¿ìÆí if( mpMailWindow ) mpMailWindow->Show( npcIndex ); } break; case eNPCTYPE_BOARD: { // °Ô½ÃÆÇ if( mpBoardWindow ) mpBoardWindow->Show( npcIndex ); } break; case eNPCTYPE_TUTORIALBOOK: { // Æ©Å丮¾ó ºÏ if( mpNpcTutorialWindow ) mpNpcTutorialWindow->Show( pNpc->GetClassId(), npcIndex, pNpc->GetName() ); } break; default: assert(0); break; } } else assert(0); } else assert(0); }