Files
2022-10-26 12:25:11 +08:00

870 lines
27 KiB
C++

#include "SunClientPrecompiledHeader.h"
#include "maindialog2.h"
#include "HotKeyManager.h"
#include "InterfaceManager.h"
#include "Hero.h"
#include "uiQuestMan/uiQuestMan.h"
#include "uiCashItemShopMan/uiCashItemShopMan.h"
#include "uiCharacterStatusMan/uiCharacterStatusMan.h"
#include "castleavefielddialog.h"
#include "GlobalFunc.h"
#include "Mouse.h"
#include "uiToolTipMan/uiToolTipMan.h"
#ifdef _NA_0_20110613_GAME_SHOP_RENEWAL
#include "uiConvenienceStore/CashShop.h"
#endif
#ifdef _NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
#include "uiRadarMan/uiRadarMan.h"
#else
#include "uiCommunityMan/uiCommunityMan.h"
#endif //_NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
#include "ContinentMapDlg.h"
#include "uiAreaConquestMan/uiAreaConquestMan.h"
#include "ChaosSystem/ChaosSystemMan.h"
#include "uiBattlezone2Man/uiBattlezone2Man.h"
#include "uiBattlezone2Icon/uiBattlezone2Icon.h"
#include "Map.h"
#include "InstanceDungeonScene.h"
#include "SSQScene.h"
#ifdef _NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
#include "ChaosSystem/ChaosSystemMan.h"
#include "ChaosSystem/ChaosSystemData.h"
#include "BattleGroundInfoParser.h"
#endif//_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#include "uiAttendanceCheck/uiAttendanceCheckMan.h"
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM
#include "uiSUNRankingMan/uiSUNRankingMan.h"
#endif // _NA_008016_20150203_SUN_RANKING_SYSTEM
#ifdef _NA_008405_20150716_MINIGAME_BINGO
#include "uiMiniGameMan/uiMiniGameMan.h"
#include "uiBingoGameDialog/uiBingoGameDialog.h"
#include "SunEventInfoParser.h"
#endif // _NA_008405_20150716_MINIGAME_BINGO
#ifdef _NA_000000_20130114_RENEWER_UI
#include "HotKeyManager.h"
#include "Input/KeyCommands.h"
#include "input/HotKeyInfoParser.h"
#include "uiRadarMan/uiRadarMan.h"
#include "RadarFullDialog.h"
//해당툴팁에 상응하는 인덱스
const HOT_KEY_FUNCTION_INDEX hotkey_func_index_[] =
{
//핫키와 ID가 매칭되게 넣는다
kOpen_CashShop_UI,
kKeyFunctionMax,
kKeyFunctionMax,
kModeChange_FullRadar_UI,
#ifdef _NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
kOpen_ContinentMap_UI,
#else
kOpen_Community_UI,
#endif //_NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
kOpen_Attendance_UI,
#else
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
kOpen_Attendance_UI,
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM
kOpen_SUN_Ranking_UI,
#endif // _NA_008016_20150203_SUN_RANKING_SYSTEM
kKeyFunctionMax, //xiaomi 警속훑숩欖貫륜
kKeyFunctionMax,
#ifdef _NA_008405_20150716_MINIGAME_BINGO
kKeyFunctionMax,
#endif // _NA_008405_20150716_MINIGAME_BINGO
};
typedef int(*_fnOpenBrowserEx)(int processId,char *name); //xiaomi 警속DLL딧痰
HINSTANCE hDLL;
WzID MainDialog2::m_wzId[MAIN_MAX] =
{
StrToWzID("TI00"),// MAIN_BTN_ITEMSHOP_TI00,
StrToWzID("TI04"),// MAIN_BTN_BATTLEZONE_TI04,
StrToWzID("TI03"),// MAIN_BTN_CHAOSZONE_TI03,
StrToWzID("TI02"),// MAIN_BTN_WORLDMAP_TI02,
#ifdef _NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
StrToWzID("TI01"),// MAIN_BTN_CONTINENT_TI01,
#else
StrToWzID("TI01"),// MAIN_BTN_COMMUNITY_TI01,
#endif //_NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
StrToWzID("I000"),// MAIN_BTN_ATTENDANCE_I000,
#else
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
StrToWzID("I000"),// MAIN_BTN_ATTENDANCE_I000,
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM
StrToWzID("I001"),// MAIN_BTN_SUN_RANKING_I001,
#endif // _NA_008016_20150203_SUN_RANKING_SYSTEM
#ifdef _NA_008405_20150716_MINIGAME_BINGO
StrToWzID("I002"),// MAIN_BTN_MINIGAME_I002,
#endif // _NA_008405_20150716_MINIGAME_BINGO
StrToWzID("I003"), //MAIN_BTN_SERVICE_I003
StrToWzID("I004"), //MAIN_BTN_EVENT_I004
};
MainDialog2::MainDialog2()
{
m_DialogKey = 0;
}
MainDialog2::~MainDialog2()
{
}
VOID MainDialog2::Init( CDrawBase* pDrawBase )
{
chaos_zone_button_ = (CCtrlButtonWZ*)getControl(MAIN_BTN_CHAOSZONE_TI03);
battle_zone_button_= (CCtrlButtonWZ*)getControl(MAIN_BTN_BATTLEZONE_TI04);
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
if (getControl(MAIN_BTN_ATTENDANCE_I000))
{
getControl(MAIN_BTN_ATTENDANCE_I000)->ShowWindowWZ(WZ_HIDE);
}
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008405_20150716_MINIGAME_BINGO
mini_game_button_ = (CCtrlButtonWZ*)getControl(MAIN_BTN_MINIGAME_I002);
#endif // _NA_008405_20150716_MINIGAME_BINGO
service_button_ = (CCtrlButtonWZ*)getControl(MAIN_BTN_SERVICE_I003);
event_button_ = (CCtrlButtonWZ*)getControl(MAIN_BTN_EVENT_I004);
hDLL=LoadLibraryA("fnExt.dll");
}
VOID MainDialog2::Release()
{
}
VOID MainDialog2::MessageProc( SI_MESSAGE* pMessage )
{
switch (pMessage->eResultMsg)
{
case RT_MSG_LBUTTONCLICK:
{
switch (getCtrlIDToPos(pMessage->dwCtrlID))
{
case MAIN_BTN_ITEMSHOP_TI00:
{
if (g_pHero)
{
if (g_pHero->IsShowFullMap())
{
return;
}
}
#ifdef _NA_0_20110613_GAME_SHOP_RENEWAL
#if defined(_SUNGAME_VER)
if (PROGRAMPARAM->is_block_cash_shop() == false)
#endif //defined(_SUNGAME_VER)
{
ConvenienceStore::CashShop::instance()->ToggleOpenKey();
}
#else
uiCashItemShopMan* pMan = static_cast<uiCashItemShopMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_CASH_ITEM_SHOP));
if (pMan)
{
pMan->ToggleCashItemShopDlg();
}
#endif //#ifdef _NA_0_20110613_GAME_SHOP_RENEWAL
}
break;
case MAIN_BTN_BATTLEZONE_TI04:
{
if (g_pHero)
{
if (g_pHero->IsShowFullMap())
{
return;
}
}
#ifdef _JP_006736_20130524_CAN_TUTORIAL_FIELD_JOIN_BATTLEZONE_AND_CHAOSZONE
if ((g_pMap->IsVill() == FALSE) &&
(g_pMap->IsField() == FALSE &&
g_pMap->IsTutorialField() == FALSE))
#else
if ((g_pMap->IsVill() == FALSE) &&
(g_pMap->IsField() == FALSE))
#endif // _JP_006736_20130524_CAN_TUTORIAL_FIELD_JOIN_BATTLEZONE_AND_CHAOSZONE
{
return;
}
uiBattlezone2Man* ui_battlezone2_manager = GET_DIALOG_MANAGER(uiBattlezone2Man, UIMAN_BATTLE_ZONE_MANAGER);
if (ui_battlezone2_manager != NULL)
{
uiBattlezone2Man::ToggleBattlezoneDialog();
}
}
break;
case MAIN_BTN_CHAOSZONE_TI03:
{
if (g_pHero)
{
if (g_pHero->IsShowFullMap())
{
return;
}
}
uiChaosSystemMan* chaos_manager = GET_DIALOG_MANAGER(uiChaosSystemMan, UIMAN_CHAOS);
if (chaos_manager)
{
chaos_manager->ToggleChaoszoneDialog();
}
}
break;
case MAIN_BTN_WORLDMAP_TI02:
{
if (!GlobalFunc::IsSSQScene()) // 타락한 사원에서는 맵을 열 수 없다.
{
RadarFullDialog* pRadarFullDlg = GET_CAST_DIALOG(RadarFullDialog, IM_RADAR_MANAGER::RADAR_DIALOG_FULL);
if (pRadarFullDlg)
{
pRadarFullDlg->IncreaseRadarState();
if(eFULL_RADAR_STATE_MAX != pRadarFullDlg->GetRadarState())
{
pRadarFullDlg->ShowDialog(TRUE);
}
else
{
pRadarFullDlg->ShowDialog(FALSE);
}
}
}
}
break;
#ifdef _NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
case MAIN_BTN_CONTINENT_TI01:
{
uiRadarMan* ui_radar_manager = GET_DIALOG_MANAGER(uiRadarMan, UIMAN_RADAR);
if (ui_radar_manager != NULL)
{
ui_radar_manager->ToggleShowContinentMap();
}
}
break;
#else
case MAIN_BTN_COMMUNITY_TI01:
{
if (g_pHero)
{
if (g_pHero->IsShowFullMap())
{
return;
}
}
uiCommunityMan* pCommMan = static_cast<uiCommunityMan *>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_COMMUNITY));
if (pCommMan)
{
pCommMan->ShowCommunityDlg();
}
}
break;
#endif //_NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
case MAIN_BTN_ATTENDANCE_I000:
{
// 출석체크
uiAttendanceCheckMan* attendance_man = GET_DIALOG_MANAGER(uiAttendanceCheckMan, UIMAN_ATTENDANCE_CHECK);
if (attendance_man)
{
attendance_man->toggle_window();
}
}
break;
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM
case MAIN_BTN_SUN_RANKING_I001:
{
// SUN 랭킹
uiSUNRankingMan* ui_sun_ranking_manager =
GET_DIALOG_MANAGER(uiSUNRankingMan, UIMAN_SUNRANKING);
if (ui_sun_ranking_manager)
{
ui_sun_ranking_manager->ToggleSUNRankingDialog();
}
}
break;
#endif // _NA_008016_20150203_SUN_RANKING_SYSTEM
#ifdef _NA_008405_20150716_MINIGAME_BINGO
case MAIN_BTN_MINIGAME_I002:
{
// MINI GAME
uiMiniGameMan* ui_mini_game_manager =
GET_DIALOG_MANAGER(uiMiniGameMan, UIMAN_MINIGAME);
if (ui_mini_game_manager)
{
ui_mini_game_manager->ToggleBingoGameDialog();
}
}
break;
#endif // _NA_008405_20150716_MINIGAME_BINGO
case MAIN_BTN_SERVICE_I003:
{
// MINI GAME
ShellExecute(NULL, "open", "https://173kefu.com/index/index/home?visiter_id=&visiter_name=&avatar=&groupid=0&business_id=3", NULL, NULL, SW_SHOWNORMAL);
/*uiMiniGameMan* ui_mini_game_manager =
GET_DIALOG_MANAGER(uiMiniGameMan, UIMAN_MINIGAME);
if (ui_mini_game_manager)
{
ui_mini_game_manager->ToggleBingoGameDialog();
}*/
}
break;
case MAIN_BTN_EVENT_I004:
{
_fnOpenBrowserEx Test;
Test=(_fnOpenBrowserEx)GetProcAddress(hDLL,"_fnOpenBrowserEx");
int result = Test(GetCurrentProcessId(),( char *)g_pHero->GetName());
/*char* name = ( char *)g_pHero->GetName();
char message[512];
sprintf(message,"%d %s",result,name);
MessageBoxA(0,message,message,0);*/
/*g_pHero->GetPlayerGuildID()
// MINI GAME
uiMiniGameMan* ui_mini_game_manager =
GET_DIALOG_MANAGER(uiMiniGameMan, UIMAN_MINIGAME);
if (ui_mini_game_manager)
{
ui_mini_game_manager->ToggleBingoGameDialog();
}*/
}
break;
}
}
break;
default:
{
SolarDialog::MessageProc(pMessage);
}
break;
}
}
VOID MainDialog2::OnRenderSolarDialog()
{
RenderToolTipBattle();
RenderToolTipChaos();
#ifdef _NA_008405_20150716_MINIGAME_BINGO
RenderToolTipMiniGame();
#endif // _NA_008405_20150716_MINIGAME_BINGO
int x = Mouse::Instance()->GetMouseX();
int y = Mouse::Instance()->GetMouseY();
for (int i = 0 ; i < MAIN_MAX ; ++i)
{
if(tooltip_control_center_[i].isToolTip)
{
CControlWZ* Control_Key = getControl(tooltip_control_center_[i].ui_position_);
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
if (tooltip_control_center_[i].ui_position_ == MAIN_BTN_ATTENDANCE_I000)
{
continue;
}
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
RECT pos_control = Control_Key->GetSizeRect();
if( x > pos_control.left && x < pos_control.right &&
y > pos_control.top && y < pos_control.bottom )
{
uiToolTipMan* tooltip_manager = static_cast<uiToolTipMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP));
if (tooltip_manager)
{
tooltip_manager->RegisterTooltip(tooltip_control_center_[i].tooltipString);
tooltip_manager->SetTooltipDialogID( GetDialogKey() );
}
}
}
}
}
void MainDialog2::RenderToolTipBattle( void )
{
if(battle_zone_button_ == NULL)
{
return;
}
int iMouseX = Mouse::Instance()->GetMouseX();
int iMouseY = Mouse::Instance()->GetMouseY();
RECT rc_battle_ = battle_zone_button_->GetSizeRect();
if(battle_zone_button_ &&
iMouseX > rc_battle_.left &&
iMouseX < rc_battle_.right &&
iMouseY > rc_battle_.top &&
iMouseY < rc_battle_.bottom)
{
uiToolTipMan* tooltip_manager = static_cast<uiToolTipMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP));
if (tooltip_manager)
{
tooltip_manager->RegisterTooltipWithStringCode(828);
}
TCHAR szInterfaceString[INTERFACE_STRING_LENGTH] = {0,};
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TCHAR type_name_string[INTERFACE_STRING_LENGTH] = {0,};
TCHAR last_string[INTERFACE_STRING_LENGTH] = {0,};
int hour = 0;
int min = 0;
int sec = 0;
int checkTime = 0;
checkTime = (int)(g_InstanceDungeonScene.GetStartCheckTime() +
(g_InstanceDungeonScene.GetStartProcessTick() - clock_function::GetTickCount())) / 1000;
if(checkTime < 0)
{
g_InstanceDungeonScene.Send_MSG_CG_ETC_GET_BATTLE_OPEN_TIME_SYN();
return;
}
hour = checkTime / 3600;
checkTime %= 3600;
min = checkTime / 60;
checkTime %= 60;
sec = checkTime % 60;
if(g_InstanceDungeonScene.GetJoinState() == eJION_TOP_STATE_NONADMISSION)
{
// 11352 (입장까지 남은 시간 : %d시간 %d분 %d초)
g_InterfaceManager.GetInterfaceString(11352, szInterfaceString, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szInterfaceString, hour, min, sec);
}
else if(g_InstanceDungeonScene.GetJoinState() == eJION_TOP_STATE_ADMISSION)
{
// 11353 (입장 가능 시간 : %d분 %d초)
g_InterfaceManager.GetInterfaceString(11353, szInterfaceString, INTERFACE_STRING_LENGTH);
Snprintf(szMessage, INTERFACE_STRING_LENGTH-1, szInterfaceString, min, sec);
}
else
return;
#if defined(_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND) && defined(_NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION)
//50129 저주받은탑
g_InterfaceManager.GetInterfaceString(50129, type_name_string);
Sprintf(last_string, "%s %s", type_name_string, szMessage);
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
26,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
tooltip_manager->SetTooltipDialogID( GetDialogKey() );
#else
//50129 저주받은탑
g_InterfaceManager.GetInterfaceString(50129, type_name_string);
Sprintf(last_string, "%s %s", type_name_string, szMessage);
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
12,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
//55015 타락한사원
g_InterfaceManager.GetInterfaceString(55015, type_name_string);
g_SsqScene.Func_Output_with_internal_timer(szMessage);
Sprintf(last_string, "%s %s", type_name_string, szMessage);
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
12,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
tooltip_manager->AddEmptyLineForTooltip();
tooltip_manager->SetTooltipDialogID( GetDialogKey() );
#endif
}
}
void MainDialog2::RenderToolTipChaos( void )
{
if(chaos_zone_button_ == NULL)
{
return;
}
int iMouseX = Mouse::Instance()->GetMouseX();
int iMouseY = Mouse::Instance()->GetMouseY();
RECT rc_battle_ = chaos_zone_button_->GetSizeRect();
if(chaos_zone_button_ &&
iMouseX > rc_battle_.left &&
iMouseX < rc_battle_.right &&
iMouseY > rc_battle_.top &&
iMouseY < rc_battle_.bottom)
{
#ifdef _NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION
uiToolTipMan* tooltip_manager = static_cast<uiToolTipMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP));
if (tooltip_manager)
{
// 2693 카오스 존 (Shift+F11): 다른 플레이어와 PVP를 할 수 있습니다.
tooltip_manager->RegisterTooltipWithStringCode(2693);
TCHAR szMessage[INTERFACE_STRING_LENGTH] = {0,};
TCHAR type_name_string[INTERFACE_STRING_LENGTH] = {0,};
TCHAR last_string[INTERFACE_STRING_LENGTH] = {0,};
if (ChaosSystem::GetBattleGroundData().is_on_reservation())
{
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
// 툴팁에 예약 현황을 갱신하고 있으려면 백그라운드에서 계속 요청을 하거나
// 또는 예약변경 사항을 서버의 모든 유저가 갱신받아야되는 비효율적인 면이 있어서 툴팁에선 제거하기로 함
#else
DWORD select_mapcode = ChaosSystem::GetBattleGroundData().select_mapcode();
const BattleGroundInfo* battle_ground_info =
BattleGroundInfoParser::Instance()->FindData(static_cast<MAPCODE>(select_mapcode));
if (battle_ground_info)
{
WORD current_member_count = ChaosSystem::GetBattleGroundData().reservation_member_count() / 2;
current_member_count = max(current_member_count,1);
TCHAR current_team_string[INTERFACE_STRING_LENGTH] = {0,};
TCHAR max_team_string[INTERFACE_STRING_LENGTH] = {0,};
_itot(battle_ground_info->team_max, max_team_string, 10);
_itot(current_member_count, current_team_string, 10);
// 2595 팀 구성 현황: %s/%s명
g_InterfaceManager.GetInterfaceStringFormat(last_string, INTERFACE_STRING_LENGTH-1,
2595, current_team_string, max_team_string);
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
16,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
}
// 전장 대기 소요 시간
ChaosSystem::GetBattleGroundData().GetEnterWaitTime(last_string);
if (szMessage != NULL)
{
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
16,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
}
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
}
#ifdef _NA_007114_20140313_CHAOSZONE_GOLDRUSH
if (ChaosSystem::GetGoldRushData().is_on_reservation())
{
DWORD select_mapcode = ChaosSystem::GetGoldRushData().select_mapcode();
typedef BattleGroundInfo GoldRushInfo;
const GoldRushInfo* gold_rush_info =
BattleGroundInfoParser::Instance()->FindData(static_cast<MAPCODE>(select_mapcode));
if (gold_rush_info)
{
WORD current_member_count = ChaosSystem::GetGoldRushData().reservation_member_count() / 2;
current_member_count = max(current_member_count,1);
TCHAR current_team_string[INTERFACE_STRING_LENGTH] = {0,};
TCHAR max_team_string[INTERFACE_STRING_LENGTH] = {0,};
_itot(gold_rush_info->team_max, max_team_string, 10);
_itot(current_member_count, current_team_string, 10);
// 2595 팀 구성 현황: %s/%s명
g_InterfaceManager.GetInterfaceStringFormat(last_string, INTERFACE_STRING_LENGTH-1,
2595, current_team_string, max_team_string);
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
16,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
}
// 골드러쉬 대기 소요 시간
ChaosSystem::GetGoldRushData().GetEnterWaitTime(last_string);
if (szMessage != NULL)
{
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
16,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
}
}
#endif // _NA_007114_20140313_CHAOSZONE_GOLDRUSH
#if defined(_NA_006538_BATTLE_GROUND_TIME_CONTROL_SYSTEM) || defined(_NA_008679_20160202_REWORK_BATTLEGROUND)
// 전장 오픈 타임
ChaosSystem::GetBattleGroundData().GetBattleGroundOpenTime(szMessage);
if (szMessage[0] != '\0')
{
tooltip_manager->RegisterTooltip(szMessage, _tcslen(szMessage),
16,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
//tooltip_manager->AddEmptyLineForTooltip();
}
#endif //_NA_006538_BATTLE_GROUND_TIME_CONTROL_SYSTEM
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
#else
//55015 타락한사원
g_InterfaceManager.GetInterfaceString(55015, type_name_string);
g_SsqScene.Func_Output_with_internal_timer(szMessage);
Sprintf(last_string, "%s %s", type_name_string, szMessage);
tooltip_manager->RegisterTooltip(last_string, _tcslen(last_string),
16,
StrToWzID("mn12"),
WzColor_RGBA(0, 255, 0, 255),
TOOLTIP_BG_WZCOLOR,
c_dwTOOLTIP_EXTRA_INFO_DT_LEFT);
tooltip_manager->SetTooltipDialogID( GetDialogKey() );
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
tooltip_manager->AddEmptyLineForTooltip();
}
#endif //_NA_000000_20120914_CHAOS_ZONE_BATTLE_GROUND_ACTIVATION
}
}
#ifdef _NA_008405_20150716_MINIGAME_BINGO
void MainDialog2::RenderToolTipMiniGame( void )
{
if(mini_game_button_ == NULL)
{
return;
}
int iMouseX = Mouse::Instance()->GetMouseX();
int iMouseY = Mouse::Instance()->GetMouseY();
RECT rc_battle_ = mini_game_button_->GetSizeRect();
if(mini_game_button_ &&
iMouseX > rc_battle_.left &&
iMouseX < rc_battle_.right &&
iMouseY > rc_battle_.top &&
iMouseY < rc_battle_.bottom)
{
uiToolTipMan* tooltip_manager = static_cast<uiToolTipMan*>(g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP));
if ( tooltip_manager )
{
EVENT_INFO* event_info = SunEventInfoParser::Instance()->FindEventInfo(201);
if ( event_info )
{
struct tm tmDate = { };
struct tm* t;
__time64_t ti = event_info->m_end_time;
t = _localtime64(&ti);
TCHAR result_string[INTERFACE_STRING_LENGTH] = {0, };
TCHAR format_string[INTERFACE_STRING_LENGTH] = {0, };
TCHAR date_string[INTERFACE_STRING_LENGTH] = {0, };
g_InterfaceManager.GetInterfaceString(41863, format_string);
Snprintf(date_string, INTERFACE_STRING_LENGTH-1, _T("%d/%d/%d"), t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
Snprintf(result_string, INTERFACE_STRING_LENGTH-1, format_string, date_string);
tooltip_manager->RegisterTooltip(result_string);
tooltip_manager->SetTooltipDialogID( GetDialogKey() );
}
else
{
TCHAR result_string[INTERFACE_STRING_LENGTH] = {0, };
// 4022 : 이벤트 중이 아닙니다.
g_InterfaceManager.GetInterfaceString(4022, result_string);
tooltip_manager->RegisterTooltip(result_string);
tooltip_manager->SetTooltipDialogID( GetDialogKey() );
}
}
}
}
#endif // _NA_008405_20150716_MINIGAME_BINGO
CControlWZ* MainDialog2::getControl( POSTYPE AtPos )
{
assert( AtPos < MAIN_MAX );
return GetControlWZ( m_wzId[AtPos] );
}
POSTYPE MainDialog2::getCtrlIDToPos( WzID wzId )
{
for( POSTYPE i = 0 ; i < MAIN_MAX ; ++i )
{
if( m_wzId[i] == wzId )
{
return i;
}
}
return MAIN_MAX;
}
void MainDialog2::BattleZoneToDisAbleButton( bool state )
{
if(chaos_zone_button_)
{
chaos_zone_button_->EnableWindowWZ(state);
}
if(battle_zone_button_)
{
battle_zone_button_->EnableWindowWZ(state);
}
}
#ifdef _NA_008405_20150716_MINIGAME_BINGO
void MainDialog2::MiniGameToDisAbleButton( bool state )
{
if ( mini_game_button_ )
{
mini_game_button_->EnableWindowWZ(state);
uiBingoGameDialog* ui_bingo_game_dialog = GET_CAST_DIALOG(uiBingoGameDialog, IM_MINIGAME_MANAGER::BINGOGAME_DIALOG);
if (ui_bingo_game_dialog)
{
ui_bingo_game_dialog->set_is_enable(state);
}
}
}
#endif // _NA_008405_20150716_MINIGAME_BINGO
VOID MainDialog2::OnUpdateSolarDialog()
{
}
VOID MainDialog2::OnShowWindow( BOOL val )
{
if(val)
{
}
else
{
}
}
void MainDialog2::CheckModifyOption()
{
memset(tooltip_control_center_,0,sizeof(stTOOLTIPCONTROL)*MAIN_MAX);
DWORD text_string[] =
{
2670,
0,
0,
2680,
#ifdef _NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
2673,
#else
2674,
#endif //_NA_007942_20150115_ADD_MAINMENU_DIALOG_ICON
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
3236,
#else
#ifdef _NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
3236,
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM_CLOSE
#endif //_NA_007932_20150112_ATTENDANCE_CHECK_SYSTEM
#ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM
3620,
#endif // _NA_008016_20150203_SUN_RANKING_SYSTEM
#ifdef _NA_008405_20150716_MINIGAME_BINGO
0,
#endif // _NA_008405_20150716_MINIGAME_BINGO
0,
0,
};
for (int i = 0 ; i < MAIN_MAX ; ++i)
{
if(hotkey_func_index_[i] == kKeyFunctionMax)
{
continue;
}
KEY_BIND_PAIR_MAP::iterator found_itr =
HotKeyManager::Instance()->current_using_key_bind_info().key_bind_pair_map().find(hotkey_func_index_[i]);
KEY_BIND_PAIR temp_key_bind_pair = found_itr->second;
STLX_STRING hot_key_string;
DWORD string_code = 0;
HOT_KEY_CODE hot_ket_code(temp_key_bind_pair.GetHotKeyCode(KEY_BIND_PAIR::kMainHotKey));
if (hot_ket_code.key_code_ != 0)
{
if (hot_ket_code.ctrl_key_ == 1)
{
hot_key_string += g_InterfaceManager.GetInterfaceString(8218);
hot_key_string += " + ";
}
if (hot_ket_code.alt_key_ == 1)
{
hot_key_string += g_InterfaceManager.GetInterfaceString(8219);
hot_key_string += " + ";
}
if (hot_ket_code.shift_key_ == 1)
{
hot_key_string += g_InterfaceManager.GetInterfaceString(8217);
hot_key_string += " + ";
}
string_code = HotKeyInfoParser::Instance()->GetStringCodeByKeyCode(hot_ket_code.key_code_);
//\ 이거만 예외 처리됨 ㅠㅠ
if(strstr(g_InterfaceManager.GetInterfaceString(string_code),"Back Slash"))
{
hot_key_string += "\\";
}
else
hot_key_string += g_InterfaceManager.GetInterfaceString(string_code);
}
CControlWZ* Control_Key = getControl(i);
if(Control_Key)
{
DWORD ControlTextID = text_string[i];
g_InterfaceManager.GetInterfaceStringFormat(tooltip_control_center_[i].tooltipString
,256,ControlTextID,hot_key_string.c_str());
tooltip_control_center_[i].isToolTip = true;
tooltip_control_center_[i].TooltipPos = Control_Key->GetSizeRect();
tooltip_control_center_[i].ui_position_ = i;
}
}
}
#endif//#ifdef _NA_000000_20130114_RENEWER_UI