#include "stdafx.h" #include "Arena\\ArenaJoinSituationChecker.h" #include "SUIArenaPracticeReadyWnd.h" #include "Arena\\ArenaSystem.h" //#include "SGameMessageUI.h" #include "SGameManager.h" #include "ArenaRankInfo.h" #include "SGameSystem.h" #include "CommonUtil.h" #include "ArenaUtility.h" #include "SStringDB.h" extern SGameSystem * g_pCurrentGameSystem; SUIArenaPracticeReadyWnd::SUIArenaPracticeReadyWnd(SGameManager* gameManager) : SUIWnd(gameManager), m_completeButton(NULL) { } SUIArenaPracticeReadyWnd::~SUIArenaPracticeReadyWnd() { } bool SUIArenaPracticeReadyWnd::InitData(bool reload) { initFp(); getWndInfo(); initMenuSystem(); initTooltip(); return SUIWnd::InitData(reload); } void SUIArenaPracticeReadyWnd::getWndInfo() { m_completeButton = dynamicCast(GetChild("button_arena_select_complete_01")); m_emptyControlRegionChecker.add(GetChild("area_control")); } void SUIArenaPracticeReadyWnd::initFp() { m_controlFp.add("button_close", &SUIArenaPracticeReadyWnd::close); m_controlFp.add("button_arena_select_complete_01", &SUIArenaPracticeReadyWnd::complete); m_controlFp.add("button_list_re_select_03", &SUIArenaPracticeReadyWnd::buttonMainStadium); m_controlFp.add("button_arena_map_select_01", &SUIArenaPracticeReadyWnd::buttonSubStadium1); m_controlFp.add("button_arena_map_select_02", &SUIArenaPracticeReadyWnd::buttonSubStadium2); m_controlFp.add("button_arena_map_select_03", &SUIArenaPracticeReadyWnd::buttonSubStadium3); m_msgFp.add(MSG_BATTLE_ARENA_BATTLE_INFO, &SUIArenaPracticeReadyWnd::procMsgBattleInfo); } void SUIArenaPracticeReadyWnd::initTooltip() { SetChildTooltip("mark_arena_mode_01", S(2317)); SetChildTooltip("mark_arena_vs_01", S(2318)); SetChildTooltip("mark_arena_map_01", S(2319)); SetChildTooltip("bg_mark_04", S(2320)); } void SUIArenaPracticeReadyWnd::initMenuSystem() { /// 경기 방식 { sArenaMainMenu* ruleMain = new sArenaMainMenu; ruleMain->setId((int)MAIN_MENU_RULE); ruleMain->setFoldButton(dynamicCast(GetChild("button_list_re_select_01"))); ruleMain->setSelectNameControl(GetChild("text_select_01")); /// item ruleMain->addItemControl(this, "bg_mark_01", sArenaMainMenu::SELECT_ITEM, 4, "mark_arena_mode_01", "bg_mark_01", "text_select_01", "text_bg_01"); ruleMain->addItemControl(this, "bg_mark_01", sArenaMainMenu::COMMON_ITEM, 1, "button_list_re_select_01"); /// add m_menuSystem.addMainMenu(ruleMain); } /// 팀 { sArenaMainMenu* teamMain = new sArenaMainMenu; teamMain->setId((int)MAIN_MENU_TEAM); teamMain->setFoldButton(dynamicCast(GetChild("button_list_re_select_02"))); teamMain->setSelectNameControl(GetChild("text_select_02")); /// item teamMain->addItemControl(this, "bg_mark_02", sArenaMainMenu::SELECT_ITEM, 4, "mark_arena_vs_01", "bg_mark_02", "text_select_02", "text_bg_02"); teamMain->addItemControl(this, "bg_mark_02", sArenaMainMenu::COMMON_ITEM, 1, "button_list_re_select_02"); /// add m_menuSystem.addMainMenu(teamMain); } /// 경기장 { sArenaMainMenu* stadiumMain = new sArenaMainMenu; stadiumMain->setId((int)MAIN_MENU_STADIUM); stadiumMain->setFoldButton(dynamicCast(GetChild("button_list_re_select_03"))); stadiumMain->setSelectNameControl(GetChild("text_select_03")); /// item stadiumMain->addItemControl(this, "bg_mark_07", sArenaMainMenu::NONSELECT_ITEM, 3, "mark_arena_map_02", "text_arena_map_01", "bg_mark_07"); stadiumMain->addItemControl(this, "bg_mark_03", sArenaMainMenu::SELECT_ITEM, 4, "mark_arena_map_01", "bg_mark_03", "text_select_03", "text_bg_03"); stadiumMain->addItemControl(this, "bg_mark_03", sArenaMainMenu::COMMON_ITEM, 1, "button_list_re_select_03"); /// sub menu, 지금은 한개 밖에 없다 stadiumMain->addSubMenu(this, SUB_MENU_STADIUM1, "button_arena_map_select_01",2476, 2476, 2, "text_arena_map_select_01", "button_arena_map_select_01"); //stadiumMain->addSubMenu(this, SUB_MENU_STADIUM2, "button_arena_map_select_02", 100, 2, "text_arena_map_select_02", "button_arena_map_select_02"); //stadiumMain->addSubMenu(this, SUB_MENU_STADIUM3, "button_arena_map_select_03", 100, 2, "text_arena_map_select_03", "button_arena_map_select_03"); /// add m_menuSystem.addMainMenu(stadiumMain); } /// 시간 { sArenaMainMenu* timeMain = new sArenaMainMenu; timeMain->setId((int)MAIN_MENU_TIME); timeMain->setFoldButton(dynamicCast(GetChild("button_list_re_select_04"))); timeMain->setSelectNameControl(GetChild("text_select_04")); /// item timeMain->addItemControl(this, "bg_mark_04", sArenaMainMenu::SELECT_ITEM, 4, "mark_arena_time_01", "bg_mark_04", "text_select_04", "text_bg_04"); timeMain->addItemControl(this, "bg_mark_04", sArenaMainMenu::COMMON_ITEM, 1, "button_list_re_select_04"); /// add m_menuSystem.addMainMenu(timeMain); } m_menuSystem.setBasisYControl(GetChild("bg_mark_01")); } void SUIArenaPracticeReadyWnd::ProcMsgAtStatic( SGameMessage* msg ) { m_msgFp.call(msg->nType, this, msg); } void SUIArenaPracticeReadyWnd::OnNotifyUIWindowOpen(bool bOpen, bool bLimitWnd) { if (bOpen) { syncPos(); initMainMenu(); setRank(); /// 알림창은 아레나 메뉴보다 위로 오게 해준다 m_pGameManager->PostMsgAtDynamic( new SIMSG_UI_LIST_MOVE_FORCE_BACK( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_NOTIFICATION ) ); } postUpdateMainMenuButton(); } void SUIArenaPracticeReadyWnd::postUpdateMainMenuButton() { m_pGameManager->PostMsgAtDynamic( new SIMSG_UPDATE_MAIN_MENU_BUTTON()); } void SUIArenaPracticeReadyWnd::PumpUpMessage( LPCTSTR controlID, DWORD msg, DWORD lparam, DWORD wparam ) { switch (msg) { case KUI_MESSAGE::KBUTTON_CLICK: m_controlFp.call(controlID, this); break; } } DWORD SUIArenaPracticeReadyWnd::OnMouseMessage(DWORD dwMessage, int x, int y) { if (KLBUTTON_DOWN == dwMessage) { if (m_emptyControlRegionChecker.isIn(x, y)) return KMR_GET_PASS; } return SUIWnd::OnMouseMessage(dwMessage, x, y); } void SUIArenaPracticeReadyWnd::syncPos() { SUIWnd* menuWnd = m_pGameManager->GetSUI(SIMSG_TOGGLE_UIWINDOW::UIWINDOW_MAINMENU); if (menuWnd) MovePos(menuWnd->GetRect().left, menuWnd->GetRect().top - GetRect().GetHeight()); } void SUIArenaPracticeReadyWnd::initMainMenu() { /// 연습 경기는 기본으로 모두 선택된 상태여야 된다, //m_menuSystem.initMenu(MAIN_MENU_STADIUM); m_menuSystem.setSelect(MAIN_MENU_RULE, -1, true); m_menuSystem.setSelect(MAIN_MENU_TEAM, -1, true); m_menuSystem.setSelect(MAIN_MENU_STADIUM, SUB_MENU_STADIUM1, true); m_menuSystem.setSelect(MAIN_MENU_TIME, -1, true); m_menuSystem.setEnableFold(MAIN_MENU_RULE, false); m_menuSystem.setEnableFold(MAIN_MENU_TEAM, false); m_menuSystem.setEnableFold(MAIN_MENU_STADIUM, false); m_menuSystem.setEnableFold(MAIN_MENU_TIME, false); /// setEnableCompleteButton(true); } void SUIArenaPracticeReadyWnd::close() { m_pGameManager->PostMsgAtDynamic( new SIMSG_SHOW_UIWINDOW( SIMSG_TOGGLE_UIWINDOW::UIWINDOW_ARENA_PRACTICE_READY, false) ); } void SUIArenaPracticeReadyWnd::complete() { if (!isValidArenaJoinSituation()) return ; sArenaSystem* arenaSystem = g_pCurrentGameSystem->getArenaSystem(); arenaSystem->clear(); /// pend message TS_CS_BATTLE_ARENA_JOIN_QUEUE msg; msg.nArenaID = sArenaUtility::EXERCISE_ARENA_ID; m_pGameManager->PendMessage(&msg); } void SUIArenaPracticeReadyWnd::buttonMainStadium() { m_menuSystem.unfold(MAIN_MENU_STADIUM); setUnSelectMenu(MAIN_MENU_STADIUM); } void SUIArenaPracticeReadyWnd::buttonSubStadium1() { setSelectMenuItem(MAIN_MENU_STADIUM, SUB_MENU_STADIUM1); } void SUIArenaPracticeReadyWnd::buttonSubStadium2() { setSelectMenuItem(MAIN_MENU_STADIUM, SUB_MENU_STADIUM2); } void SUIArenaPracticeReadyWnd::buttonSubStadium3() { setSelectMenuItem(MAIN_MENU_STADIUM, SUB_MENU_STADIUM3); } void SUIArenaPracticeReadyWnd::setEnableCompleteButton(bool enable) { if (enable) m_completeButton->Enable(); else m_completeButton->Disable(); } void SUIArenaPracticeReadyWnd::setSelectMenuItem(int mainMenuId, int subMenuId) { bool isAllSelected; m_menuSystem.setSelectMenuItem(mainMenuId, subMenuId, isAllSelected); if (isAllSelected) setEnableCompleteButton(true); } void SUIArenaPracticeReadyWnd::setUnSelectMenu(int mainMenuId) { if (m_menuSystem.isSelected(mainMenuId)) { m_menuSystem.setSelect(mainMenuId, -1, false); setEnableCompleteButton(false); } } bool SUIArenaPracticeReadyWnd::isValidArenaJoinSituation() { sArenaJoinSituationCondition situationCondition; /// way situationCondition.m_notificationWays = cArenaJoinSituationChecker::WAY_NOTIFICATION_WND; /// situation situationCondition.add(cArenaJoinSituationChecker::SITUATION_DEATH, S(2423)); situationCondition.add(cArenaJoinSituationChecker::SITUATION_TRADE, S(2424)); return g_pCurrentGameSystem->isValidArenaJoinSituation(situationCondition); } void SUIArenaPracticeReadyWnd::procMsgBattleInfo(SGameMessage* msg) { msg->bUse = true; close(); } void SUIArenaPracticeReadyWnd::setRank() { sArenaRankInfo rankInfo; rankInfo.setRank(GetChild("mark_rookie")); }