#include "SunClientPrecompiledHeader.h" #include "uiCharacterSelectList2.h" #include "uiCharacterSelectMan/uiCharacterSelectMan.h" #include "uiLoginBack/uiLoginBackTop.h" #include "uiLoginMan/uiLoginMan.h" #include "CharacterScene.h" #include "InterfaceManager.h" #include "FTextParser.h" #include "FTextRender.h" #include "MapInfoParser.h" #include "GlobalFunc.h" #include "CharSelectDialog.h" #include "objectmanager.h" #include "Player.h" #ifdef _NA_000000_20130114_RENEWER_UI #include "AppearanceResourceCode.h" #include "Mouse.h" #include "uiToolTipMan/uiToolTipMan.h" namespace { const WzID kCharacterNameFont = StrToWzID("st11"); const WzID kLevelFont = StrToWzID("st11"); const WzID kCurrentMapNameFont = StrToWzID("st10"); const DWORD kCharacterNameColor = WzColor_RGBA(255, 255, 255, 255); const DWORD kLevelColor = WzColor_RGBA(255, 199, 4, 255); const DWORD kCurrentMapNameColor = WzColor_RGBA(160, 160, 160, 255); const DWORD kCloseSlotColor = WzColor_RGBA(255, 0, 0, 200); const int kListLeftMargin = 10; }; uiCharacterSelectList2::uiCharacterSelectList2(InterfaceManager* ui_manager): uiBase(ui_manager) ,save_post_select_(-1) ,save_now_select_(-1) { } uiCharacterSelectList2::~uiCharacterSelectList2() { } void uiCharacterSelectList2::Init(CDrawBase* draw_base) { uiBase::Init(draw_base); RegisterControl(); int isStap[] = { kControl_Max_Step_1, kControl_Max_Step_2, kControl_Max_Step_3, kControl_Max_Step_4, kControl_Max_Step_5, kControl_Max_Step_6, kControl_Max_Step_7, kControl_Max_Step_8, kControl_Max_Step_9, kControl_Max_Step_10 }; int isSlotMax[] = { KControl_0Slot_Max, KControl_1Slot_Max, KControl_2Slot_Max, KControl_3Slot_Max, KControl_4Slot_Max, KControl_5Slot_Max, KControl_6Slot_Max, KControl_7Slot_Max, KControl_8Slot_Max, KControl_9Slot_Max, KControl_10Slot_Max }; //°¢ ÄÁÆ®·ÑµéÀ» ¾È¿¡ ³Ö´Â´Ù for (int index = 0 ; index < kMaxListSlot ; ++index) { int step_value = isStap[index]; int slotMax = isSlotMax[index]; for (int i = slotMax+ 1 ; i < step_value ; ++i) { //slotmaxº¸´Ù +1´õ µé¾î°¡¾ß µÈ´Ù. DWORD control_id = GetControlID_byPosition(i); character_info_[index].save_character_index_[i - (slotMax+1)] = i; character_info_[index].charater_Image_[i - (slotMax+1)] = GetControlWZ(control_id); } slotMax = isSlotMax[index+1]; for (int i = step_value+ 1 ; i < slotMax ; ++i) { DWORD control_id = GetControlID_byPosition(i); CControlWZ* control = GetControlWZ(control_id);; if(i == slotMax-1) { //ÀÌ ±¸°£ÀÌ ¸¶Áö¸· ¹è°æÄÁÆ®·ÑÀÌ µé¾î°£´Ù. character_info_[index].Back_Check_ = control; } else { character_info_[index].save_Kind_index_[i-(step_value+1)] = i; character_info_[index].kind_Image_[i-(step_value+1)] = control; } } character_info_[index].lock_slot_ = false; character_info_[index].lock_Image = NULL; } character_info_[6].lock_slot_ = true; character_info_[7].lock_slot_ = true; character_info_[8].lock_slot_ = true; character_info_[9].lock_slot_ = true; DWORD control_id = GetControlID_byPosition(kControl_Picture_P021); character_info_[6].lock_Image = GetControlWZ(control_id); control_id = GetControlID_byPosition(kControl_Picture_P022); character_info_[7].lock_Image = GetControlWZ(control_id); control_id = GetControlID_byPosition(kControl_Picture_P024); character_info_[8].lock_Image = GetControlWZ(control_id); control_id = GetControlID_byPosition(kControl_Picture_P025); character_info_[9].lock_Image = GetControlWZ(control_id); for (int index = 0 ; index < kMaxListSlot ; ++index) { character_info_[index].all_show_character_Image(WZ_HIDE); character_info_[index].all_show_Kind_Image(WZ_HIDE); } character_info_[0].save_back_check_ = kControl_Check_C006; character_info_[1].save_back_check_ = kControl_Check_C001; character_info_[2].save_back_check_ = kControl_Check_C008; character_info_[3].save_back_check_ = kControl_Check_C009; character_info_[4].save_back_check_ = kControl_Check_C010; character_info_[5].save_back_check_ = kControl_Check_C011; character_info_[6].save_back_check_ = kControl_Check_C012; character_info_[7].save_back_check_ = kControl_Check_C013; character_info_[8].save_back_check_ = kControl_Check_C014; character_info_[9].save_back_check_ = kControl_Check_C015; } void uiCharacterSelectList2::RegisterControl() { RegisterControlPosition(StrToWzID("C002"), kControl_Check_C002); RegisterControlPosition(StrToWzID("C042"), kControl_Check_C042); RegisterControlPosition(StrToWzID("C041"), kControl_Check_C041); RegisterControlPosition(StrToWzID("C031"), kControl_Check_C031); RegisterControlPosition(StrToWzID("C021"), kControl_Check_C021); RegisterControlPosition(StrToWzID("C000"), kControl_Check_C000); RegisterControlPosition(StrToWzID("C141"), kControl_Check_C141); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C054"), kControl_Check_C054); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P000"), kControl_Picture_P000); RegisterControlPosition(StrToWzID("C101"), kControl_Check_C101); RegisterControlPosition(StrToWzID("C091"), kControl_Check_C091); RegisterControlPosition(StrToWzID("C063"), kControl_Check_C063); RegisterControlPosition(StrToWzID("C062"), kControl_Check_C062); RegisterControlPosition(StrToWzID("C061"), kControl_Check_C061); RegisterControlPosition(StrToWzID("C007"), kControl_Check_C007); RegisterControlPosition(StrToWzID("C151"), kControl_Check_C151); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C124"), kControl_Check_C124); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P001"), kControl_Picture_P001); RegisterControlPosition(StrToWzID("C006"), kControl_Check_C006); //-1 slot max RegisterControlPosition(StrToWzID("C003"), kControl_Check_C003); RegisterControlPosition(StrToWzID("C070"), kControl_Check_C070); RegisterControlPosition(StrToWzID("C057"), kControl_Check_C057); RegisterControlPosition(StrToWzID("C036"), kControl_Check_C036); RegisterControlPosition(StrToWzID("C026"), kControl_Check_C026); RegisterControlPosition(StrToWzID("C016"), kControl_Check_C016); RegisterControlPosition(StrToWzID("C142"), kControl_Check_C142); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C055"), kControl_Check_C055); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P002"), kControl_Picture_P002); RegisterControlPosition(StrToWzID("C102"), kControl_Check_C102); RegisterControlPosition(StrToWzID("C092"), kControl_Check_C092); RegisterControlPosition(StrToWzID("C082"), kControl_Check_C082); RegisterControlPosition(StrToWzID("C073"), kControl_Check_C073); RegisterControlPosition(StrToWzID("C064"), kControl_Check_C064); RegisterControlPosition(StrToWzID("C052"), kControl_Check_C052); RegisterControlPosition(StrToWzID("C152"), kControl_Check_C152); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C161"), kControl_Check_C161); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P023"), kControl_Picture_P023); RegisterControlPosition(StrToWzID("C001"), kControl_Check_C001); //-2 slot max RegisterControlPosition(StrToWzID("C004"), kControl_Check_C004); RegisterControlPosition(StrToWzID("C071"), kControl_Check_C071); RegisterControlPosition(StrToWzID("C058"), kControl_Check_C058); RegisterControlPosition(StrToWzID("C037"), kControl_Check_C037); RegisterControlPosition(StrToWzID("C027"), kControl_Check_C027); RegisterControlPosition(StrToWzID("C017"), kControl_Check_C017); RegisterControlPosition(StrToWzID("C143"), kControl_Check_C143); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C056"), kControl_Check_C056); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P003"), kControl_Picture_P003); RegisterControlPosition(StrToWzID("C133"), kControl_Check_C133); RegisterControlPosition(StrToWzID("C125"), kControl_Check_C125); RegisterControlPosition(StrToWzID("C109"), kControl_Check_C109); RegisterControlPosition(StrToWzID("C099"), kControl_Check_C099); RegisterControlPosition(StrToWzID("C089"), kControl_Check_C089); RegisterControlPosition(StrToWzID("C080"), kControl_Check_C080); RegisterControlPosition(StrToWzID("C153"), kControl_Check_C153); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C162"), kControl_Check_C162); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P012"), kControl_Picture_P012); RegisterControlPosition(StrToWzID("C008"), kControl_Check_C008); //-3 slot max RegisterControlPosition(StrToWzID("C005"), kControl_Check_C005); RegisterControlPosition(StrToWzID("C072"), kControl_Check_C072); RegisterControlPosition(StrToWzID("C059"), kControl_Check_C059); RegisterControlPosition(StrToWzID("C038"), kControl_Check_C038); RegisterControlPosition(StrToWzID("C028"), kControl_Check_C028); RegisterControlPosition(StrToWzID("C018"), kControl_Check_C018); RegisterControlPosition(StrToWzID("C144"), kControl_Check_C144); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C117"), kControl_Check_C117); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P004"), kControl_Picture_P004); RegisterControlPosition(StrToWzID("C134"), kControl_Check_C134); RegisterControlPosition(StrToWzID("C126"), kControl_Check_C126); RegisterControlPosition(StrToWzID("C110"), kControl_Check_C110); RegisterControlPosition(StrToWzID("C100"), kControl_Check_C100); RegisterControlPosition(StrToWzID("C090"), kControl_Check_C090); RegisterControlPosition(StrToWzID("C081"), kControl_Check_C081); RegisterControlPosition(StrToWzID("C154"), kControl_Check_C154); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C163"), kControl_Check_C163); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P013"), kControl_Picture_P013); RegisterControlPosition(StrToWzID("C009"), kControl_Check_C009); //-4 slot max RegisterControlPosition(StrToWzID("C047"), kControl_Check_C047); RegisterControlPosition(StrToWzID("C074"), kControl_Check_C074); RegisterControlPosition(StrToWzID("C060"), kControl_Check_C060); RegisterControlPosition(StrToWzID("C039"), kControl_Check_C039); RegisterControlPosition(StrToWzID("C029"), kControl_Check_C029); RegisterControlPosition(StrToWzID("C019"), kControl_Check_C019); RegisterControlPosition(StrToWzID("C145"), kControl_Check_C145); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C118"), kControl_Check_C118); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P006"), kControl_Picture_P006); RegisterControlPosition(StrToWzID("C135"), kControl_Check_C135); RegisterControlPosition(StrToWzID("C127"), kControl_Check_C127); RegisterControlPosition(StrToWzID("C111"), kControl_Check_C111); RegisterControlPosition(StrToWzID("C103"), kControl_Check_C103); RegisterControlPosition(StrToWzID("C093"), kControl_Check_C093); RegisterControlPosition(StrToWzID("C083"), kControl_Check_C083); RegisterControlPosition(StrToWzID("C155"), kControl_Check_C155); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C168"), kControl_Check_C168); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P014"), kControl_Picture_P014); RegisterControlPosition(StrToWzID("C010"), kControl_Check_C010); //-5 slot max RegisterControlPosition(StrToWzID("C048"), kControl_Check_C048); RegisterControlPosition(StrToWzID("C075"), kControl_Check_C075); RegisterControlPosition(StrToWzID("C065"), kControl_Check_C065); RegisterControlPosition(StrToWzID("C040"), kControl_Check_C040); RegisterControlPosition(StrToWzID("C030"), kControl_Check_C030); RegisterControlPosition(StrToWzID("C020"), kControl_Check_C020); RegisterControlPosition(StrToWzID("C146"), kControl_Check_C146); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C119"), kControl_Check_C119); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P007"), kControl_Picture_P007); RegisterControlPosition(StrToWzID("C136"), kControl_Check_C136); RegisterControlPosition(StrToWzID("C128"), kControl_Check_C128); RegisterControlPosition(StrToWzID("C112"), kControl_Check_C112); RegisterControlPosition(StrToWzID("C104"), kControl_Check_C104); RegisterControlPosition(StrToWzID("C094"), kControl_Check_C094); RegisterControlPosition(StrToWzID("C084"), kControl_Check_C084); RegisterControlPosition(StrToWzID("C156"), kControl_Check_C156); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C169"), kControl_Check_C169); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P015"), kControl_Picture_P015); RegisterControlPosition(StrToWzID("C011"), kControl_Check_C011); //-6 slot max RegisterControlPosition(StrToWzID("C049"), kControl_Check_C049); RegisterControlPosition(StrToWzID("C076"), kControl_Check_C076); RegisterControlPosition(StrToWzID("C066"), kControl_Check_C066); RegisterControlPosition(StrToWzID("C043"), kControl_Check_C043); RegisterControlPosition(StrToWzID("C032"), kControl_Check_C032); RegisterControlPosition(StrToWzID("C022"), kControl_Check_C022); RegisterControlPosition(StrToWzID("C147"), kControl_Check_C147); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C120"), kControl_Check_C120); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P008"), kControl_Picture_P008); RegisterControlPosition(StrToWzID("C137"), kControl_Check_C137); RegisterControlPosition(StrToWzID("C129"), kControl_Check_C129); RegisterControlPosition(StrToWzID("C113"), kControl_Check_C113); RegisterControlPosition(StrToWzID("C105"), kControl_Check_C105); RegisterControlPosition(StrToWzID("C095"), kControl_Check_C095); RegisterControlPosition(StrToWzID("C085"), kControl_Check_C085); RegisterControlPosition(StrToWzID("C157"), kControl_Check_C157); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C166"), kControl_Check_C166); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P016"), kControl_Picture_P016); RegisterControlPosition(StrToWzID("C012"), kControl_Check_C012); //-7 slot max RegisterControlPosition(StrToWzID("C050"), kControl_Check_C050); RegisterControlPosition(StrToWzID("C077"), kControl_Check_C077); RegisterControlPosition(StrToWzID("C067"), kControl_Check_C067); RegisterControlPosition(StrToWzID("C044"), kControl_Check_C044); RegisterControlPosition(StrToWzID("C033"), kControl_Check_C033); RegisterControlPosition(StrToWzID("C023"), kControl_Check_C023); RegisterControlPosition(StrToWzID("C148"), kControl_Check_C148); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C121"), kControl_Check_C121); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P009"), kControl_Picture_P009); RegisterControlPosition(StrToWzID("C138"), kControl_Check_C138); RegisterControlPosition(StrToWzID("C130"), kControl_Check_C130); RegisterControlPosition(StrToWzID("C114"), kControl_Check_C114); RegisterControlPosition(StrToWzID("C106"), kControl_Check_C106); RegisterControlPosition(StrToWzID("C096"), kControl_Check_C096); RegisterControlPosition(StrToWzID("C086"), kControl_Check_C086); RegisterControlPosition(StrToWzID("C158"), kControl_Check_C158); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C167"), kControl_Check_C167); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P017"), kControl_Picture_P017); RegisterControlPosition(StrToWzID("C013"), kControl_Check_C013); //-8 slot max RegisterControlPosition(StrToWzID("C051"), kControl_Check_C051); RegisterControlPosition(StrToWzID("C078"), kControl_Check_C078); RegisterControlPosition(StrToWzID("C068"), kControl_Check_C068); RegisterControlPosition(StrToWzID("C045"), kControl_Check_C045); RegisterControlPosition(StrToWzID("C034"), kControl_Check_C034); RegisterControlPosition(StrToWzID("C024"), kControl_Check_C024); RegisterControlPosition(StrToWzID("C149"), kControl_Check_C149); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C122"), kControl_Check_C122); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P010"), kControl_Picture_P010); RegisterControlPosition(StrToWzID("C139"), kControl_Check_C139); RegisterControlPosition(StrToWzID("C131"), kControl_Check_C131); RegisterControlPosition(StrToWzID("C115"), kControl_Check_C115); RegisterControlPosition(StrToWzID("C107"), kControl_Check_C107); RegisterControlPosition(StrToWzID("C097"), kControl_Check_C097); RegisterControlPosition(StrToWzID("C087"), kControl_Check_C087); RegisterControlPosition(StrToWzID("C159"), kControl_Check_C159); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C165"), kControl_Check_C165); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P018"), kControl_Picture_P018); RegisterControlPosition(StrToWzID("C014"), kControl_Check_C014); //-9 slot max RegisterControlPosition(StrToWzID("C053"), kControl_Check_C053); RegisterControlPosition(StrToWzID("C079"), kControl_Check_C079); RegisterControlPosition(StrToWzID("C069"), kControl_Check_C069); RegisterControlPosition(StrToWzID("C046"), kControl_Check_C046); RegisterControlPosition(StrToWzID("C035"), kControl_Check_C035); RegisterControlPosition(StrToWzID("C025"), kControl_Check_C025); RegisterControlPosition(StrToWzID("C150"), kControl_Check_C150); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C123"), kControl_Check_C123); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P011"), kControl_Picture_P011); RegisterControlPosition(StrToWzID("C140"), kControl_Check_C140); RegisterControlPosition(StrToWzID("C132"), kControl_Check_C132); RegisterControlPosition(StrToWzID("C116"), kControl_Check_C116); RegisterControlPosition(StrToWzID("C108"), kControl_Check_C108); RegisterControlPosition(StrToWzID("C098"), kControl_Check_C098); RegisterControlPosition(StrToWzID("C088"), kControl_Check_C088); RegisterControlPosition(StrToWzID("C160"), kControl_Check_C160); #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("C164"), kControl_Check_C164); #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE RegisterControlPosition(StrToWzID("P019"), kControl_Picture_P019); RegisterControlPosition(StrToWzID("C015"), kControl_Check_C015); //-10 slot max RegisterControlPosition(StrToWzID("P021"), kControl_Picture_P021); RegisterControlPosition(StrToWzID("P022"), kControl_Picture_P022); RegisterControlPosition(StrToWzID("P024"), kControl_Picture_P024); RegisterControlPosition(StrToWzID("P025"), kControl_Picture_P025); } void uiCharacterSelectList2::Release() { } void uiCharacterSelectList2::MessageProc( SI_MESSAGE * message ) { if (IsLock()) return; if (g_CharSelectScene.m_bPickCharLock == TRUE) { return; } static bool is_double_click = false; #ifdef _NA_007075_20140221_CHARACTER_SELECT_INPUT_BUG if (g_CharSelectScene.IsSendSelectCharPacket()) { is_double_click = false; return; } #endif // _NA_007075_20140221_CHARACTER_SELECT_INPUT_BUG switch (message->eResultMsg) { case RT_MSG_LBUTTONCLICK: { if (is_double_click == true) { is_double_click = false; } else { OnLButtonClick(message); } } break; case RT_MSG_LBUTTONDCLICK: OnLButtonDClick(message); is_double_click = true; break; default: SolarDialog::MessageProc(message); break; } } void uiCharacterSelectList2::OnShowWindow(BOOL val) { if (val) { SetServerName(); CharacterListUp(); } else { } } void uiCharacterSelectList2::OnRenderSolarDialog() { for (int i = 0 ; i < kMaxListSlot ; ++i) { if(character_info_[i].lock_Image && character_info_[i].lock_slot_ == true) { int iMouseX = Mouse::Instance()->GetMouseX(); int iMouseY = Mouse::Instance()->GetMouseY(); uiToolTipMan* tooltip_manager = (uiToolTipMan*)g_InterfaceManager.GetUserInterfaceManager(UIMAN_TOOLTIP); RECT rc = character_info_[i].lock_Image->GetSizeRect(); if (tooltip_manager) { if (rc.left <= iMouseX && rc.right >= iMouseX) { if (rc.top <= iMouseY && rc.bottom >= iMouseY) { TCHAR ToolTip_Disalbe[INTERFACE_STRING_LENGTH]; g_InterfaceManager.GetInterfaceString(5994, ToolTip_Disalbe); tooltip_manager->RegisterTooltip(ToolTip_Disalbe); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } } } } if(character_info_[i].lock_slot_ == false) { character_info_[i].character_info_text_.Render(); } } } void uiCharacterSelectList2::OnUpdateSolarDialog() { #ifdef _NA_007075_20140221_CHARACTER_SELECT_INPUT_BUG if (g_CharSelectScene.IsSendSelectCharPacket()) { return; } #endif // _NA_007075_20140221_CHARACTER_SELECT_INPUT_BUG CDialogWZ* dialog_ptr = GetDialogWZ(); if (dialog_ptr != NULL) { RECT enable_rect = dialog_ptr->GetClientWZ()->GetSizeRect();; BYTE mouse_wheel_state = GetMouseWheelStatus(&enable_rect); if ((mouse_wheel_state == MOUSE_WHEEL_UP) || g_Input.GetState(DIK_UP, KS_UP) || g_Input.GetState(DIK_LEFT, KS_UP)) { OnSelectPrevCharacter(); } else if ((mouse_wheel_state == MOUSE_WHEEL_DOWN) || g_Input.GetState(DIK_DOWN, KS_UP) || g_Input.GetState(DIK_RIGHT, KS_UP)) { OnSelectNextCharacter(); } } } bool uiCharacterSelectList2::OnLButtonClick( SI_MESSAGE* message ) { bool result = true; DWORD control_position = GetControlPosition_byID(message->dwCtrlID); switch (control_position) { case kControl_Check_C006:SetSelectedCharacterListIndex(0);break; case kControl_Check_C001:SetSelectedCharacterListIndex(1);break; case kControl_Check_C008:SetSelectedCharacterListIndex(2);break; case kControl_Check_C009:SetSelectedCharacterListIndex(3);break; case kControl_Check_C010:SetSelectedCharacterListIndex(4);break; case kControl_Check_C011:SetSelectedCharacterListIndex(5);break; case kControl_Check_C012:SetSelectedCharacterListIndex(6);break; case kControl_Check_C013:SetSelectedCharacterListIndex(7);break; case kControl_Check_C014:SetSelectedCharacterListIndex(8);break; case kControl_Check_C015:SetSelectedCharacterListIndex(9);break; break; default: { //´©±º°¡ Ŭ¸¯ÀÌ µÇ¾ú´Ù ÇÏÁö¸¸ ÀÌ´Â ´©±¸Àΰ¡ //´­·¯Áø °´Ã¼Áß Ã¼Å© ¹öư È®ÀÎ for (int i = 0 ; i < kMaxListSlot ; ++i) { if(character_info_[i].isRangeCharacter(control_position)) { SetSelectedCharacterListIndex(i); break; } if(character_info_[i].isRangeKind(control_position)) { SetSelectedCharacterListIndex(i); break; } } //Ȱ¼ºÈ­µÈ üũ ¹öư ºñȰ¼ºÈ­ µÇÁö ¾Êµµ·Ï } break; } return result; } bool uiCharacterSelectList2::OnLButtonDClick( SI_MESSAGE* message ) { BYTE make_and_makeable_slot = g_CharSelectScene.GetCharacterSlotNumber(); BYTE list_slot_size = character_slot_list_.size(); bool result = true; DWORD control_position = GetControlPosition_byID(message->dwCtrlID); if (list_slot_size <= control_position && make_and_makeable_slot > control_position) { CharSelectDialog* charater_select_dialog = GET_CAST_DIALOG(CharSelectDialog, IM_CHARACTERSELECT_MANAGER::CHARACTER_SELECT_DIALOG); if (charater_select_dialog) { charater_select_dialog->OnCreateCharacter(); } return false; } if (g_CharSelectScene.GetCurSelectCharacterInfo() && (g_CharSelectScene.GetCurSelectCharacterInfo()->CharacterInfo.m_DelChk != 0)) { CharSelectDialog* charater_select_dialog = GET_CAST_DIALOG(CharSelectDialog, IM_CHARACTERSELECT_MANAGER::CHARACTER_SELECT_DIALOG); if (charater_select_dialog) { charater_select_dialog->OnDeleteCharacter(); } return false; } switch (control_position) { case kControl_Check_C006:CheckModifyDoubleClick(0); break; case kControl_Check_C001:CheckModifyDoubleClick(1); break; case kControl_Check_C008:CheckModifyDoubleClick(2); break; case kControl_Check_C009:CheckModifyDoubleClick(3); break; case kControl_Check_C010:CheckModifyDoubleClick(4); break; case kControl_Check_C011:CheckModifyDoubleClick(5); break; case kControl_Check_C012:CheckModifyDoubleClick(6); break; case kControl_Check_C013:CheckModifyDoubleClick(7); break; case kControl_Check_C014:CheckModifyDoubleClick(8); break; case kControl_Check_C015:CheckModifyDoubleClick(9); break; default: { //´©±º°¡ Ŭ¸¯ÀÌ µÇ¾ú´Ù ÇÏÁö¸¸ ÀÌ´Â ´©±¸Àΰ¡ //´­·¯Áø °´Ã¼Áß Ã¼Å© ¹öư È®ÀÎ for (int i = 0 ; i < kMaxListSlot ; ++i) { if(character_info_[i].isRangeCharacter(control_position)) { CheckModifyDoubleClick(i); break; } if(character_info_[i].isRangeKind(control_position)) { CheckModifyDoubleClick(i); break; } } } break; } return result; } void uiCharacterSelectList2::SetServerName() { uiLoginBackTop* login_back_top = GET_CAST_DIALOG(uiLoginBackTop, uiLoginBackTop::kDialog_ID); if (login_back_top == NULL) { return; } uiLoginMan* login_manager = GET_DIALOG_MANAGER(uiLoginMan, UIMAN_LOGIN); if (login_manager == NULL) { return; } AuthSetverData* server_data = login_manager->GetCurrentServerData(); if (server_data == NULL) { return; } #ifdef _DH_LAST_SELECTED_CHARACTER uiCharacterSelectMan* select_manager = GET_DIALOG_MANAGER(uiCharacterSelectMan, UIMAN_CHARACTERSELECT); if (select_manager) { select_manager->SetLastSelectServer(static_cast(server_data->m_GroupID), static_cast(server_data->m_ChannelID)); } #endif//_DH_LAST_SELECTED_CHARACTER TCHAR* server_name = const_cast(server_data->m_GroupName.c_str()); login_back_top->SetSceneTitleString(server_name); } void uiCharacterSelectList2::CharacterListUp() { for (int index = 0 ; index < kMaxListSlot ; ++index) { character_info_[index].all_show_character_Image(WZ_HIDE); character_info_[index].all_show_Kind_Image(WZ_HIDE); } character_slot_list_.clear(); selected_list_index_ = 0; for (int slot_index = 0; slot_index < MAX_CHARACTER_LIST_NUM; ++slot_index) { CharListInfo* character_info = g_CharSelectScene.GetCharacterInfoBySlotIndex(slot_index); if (character_info == NULL) { continue; } character_slot_list_.push_back(slot_index); } #ifdef _DH_LAST_SELECTED_CHARACTER //ij¸¯ÅÍ »èÁ¦½Ã ¹× °»½Å½Ã ¼±Åà ºÎºÐÀÌ ´Ù½Ã ó¸® µÇ°Ô µÈ´Ù. uiCharacterSelectMan* select_manager = GET_DIALOG_MANAGER(uiCharacterSelectMan, UIMAN_CHARACTERSELECT); if (select_manager && select_manager->last_selected_header().last_select_version > 0 && select_manager->last_selected_header().last_select_version <= LAST_SELECT_VERSION) { int selected_slot_index = select_manager->FindLastSelectedSlotIndex(select_manager->last_selected_header().last_select_server); selected_list_index_ = GetListIndexFromSlotIndex(selected_slot_index); } #endif//_DH_LAST_SELECTED_CHARACTER RefreshSelectList(); SetSelectedCharacterListIndex(selected_list_index_); } void uiCharacterSelectList2::RefreshSelectList() { int list_size = static_cast(character_slot_list_.size()); assert(list_size <= kMaxListSlot); ShowListSlotByCount(list_size); // ºó½½·Ô »ç¿ë ¸øÇÏ°Ô for (int slot_index = 0; slot_index < kMaxListSlot; ++slot_index) { if (slot_index >= static_cast(character_slot_list_.size())) { SetCharacterSlot(slot_index); } else { CharListInfo* character_info = g_CharSelectScene.GetCharacterInfoBySlotIndex(character_slot_list_[slot_index]); if (character_info == NULL) { continue; } TCHAR buffer_string[INTERFACE_STRING_LENGTH] = {0,}; TCHAR delete_string[INTERFACE_STRING_LENGTH] = "%d:%d"; g_InterfaceManager.GetInterfaceString(70560, buffer_string); Player* player = static_cast(g_ObjectManager.GetPlayer(character_info->dwObjectKey)); if (character_info->CharacterInfo.m_DelChk != 0 && player) { int day = 0 , hour = 0 , minute = 0; int RemainTotalTime = player->GetCharDelRemainTime(); int remainder = RemainTotalTime; // 1ÀÏ º¸´Ù Å«°¡ if( RemainTotalTime >= 86400) { day = RemainTotalTime / 86400; remainder = RemainTotalTime % 86400; } // 1½Ã°£ º¸´Ù Å«°¡ if( RemainTotalTime >= 3600 ) { hour = remainder / 3600; remainder = RemainTotalTime % 3600; } // ºÐ ´ÜÀ§ Àΰ¡ minute = remainder / 60; sprintf(delete_string, buffer_string, day, (hour+1)); } CLIENT_CHARACTER_PART* part_info = &(character_info->CharacterInfo); SetCharacterSlotInfo(slot_index, part_info->m_tszCharName, part_info->m_DelChk, part_info->m_LV, part_info->m_byClass, part_info->m_iRegion, delete_string, part_info->gender); } } } void uiCharacterSelectList2::ShowListSlotByCount(int slot_count) { BYTE make_and_makeable_slot = g_CharSelectScene.GetCharacterSlotNumber(); for (int slot_index = 0; slot_index < kMaxListSlot; ++slot_index) { if (slot_index >= make_and_makeable_slot) { character_info_[slot_index].lock_slot_ = true; character_info_[slot_index].lock_Image->ShowWindowWZ(WZ_SHOW); } else { character_info_[slot_index].lock_slot_ = false; if (character_info_[slot_index].lock_Image != NULL) { character_info_[slot_index].lock_Image->ShowWindowWZ(WZ_HIDE); } } character_info_[slot_index].character_info_text_.ClearSentence(); } CharSelectDialog* charater_select_dialog = GET_CAST_DIALOG(CharSelectDialog, IM_CHARACTERSELECT_MANAGER::CHARACTER_SELECT_DIALOG); if (charater_select_dialog) { charater_select_dialog->EnableButton((slot_count < make_and_makeable_slot), CharSelectDialog::CharSelect_Create); } } void uiCharacterSelectList2::SetCharacterSlot(int list_index) { if (list_index < 0 || list_index >= kMaxListSlot) { return; } RECT Base_rect = character_info_[list_index].Back_Check_->GetSizeRect(); int Left_out = (int)character_info_[list_index].charater_Image_[0]->GetSizeWidth(); int Right_out = (int)character_info_[list_index].kind_Image_[0]->GetSizeWidth(); Base_rect.left += Left_out; Base_rect.right -= Right_out; TCHAR character_info_string[INTERFACE_STRING_LENGTH] = {'\0', }; TCHAR class_string[INTERFACE_STRING_LENGTH] = {'\0', }; FTextParser parser; FTextSentence sentence; RECT control_rect = Base_rect; character_info_[list_index].character_info_text_.Init(GetDrawBase(), control_rect); character_info_[list_index].character_info_text_.SetVCenterAlign(true); character_info_[list_index].character_info_text_.SetHCenterAlign(true); character_info_[list_index].character_info_text_.SetMargin(kListLeftMargin, FTextRender::DEFAULT_MARGIN_TOP + 1, kListLeftMargin, FTextRender::DEFAULT_MARGIN_BOTTOM); // ij¸¯ÅÍ À̸§ BYTE make_and_makeable_slot = g_CharSelectScene.GetCharacterSlotNumber(); if (list_index < make_and_makeable_slot) { g_InterfaceManager.GetInterfaceString(5993, character_info_string); // 5993: ij¸¯Å͸¦ »ý¼º ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. parser.SetDefaultFont(kCharacterNameFont, kLevelColor); } else { g_InterfaceManager.GetInterfaceString(5994, character_info_string); // 5994: ij¸¯Å͸¦ »ý¼º ÇÏ½Ç ¼ö ¾ø½À´Ï´Ù. parser.SetDefaultFont(kCharacterNameFont, kCloseSlotColor); } parser.Parser(character_info_string, sentence); character_info_[list_index].character_info_text_.Append(sentence); character_info_[list_index].character_info_text_.convertLineInfo(); } void uiCharacterSelectList2::SetCharacterSlotInfo(int list_index, TCHAR* character_name, BYTE delete_check, int level, BYTE class_type, MAPCODE current_mapcode, TCHAR* day_for_delete, BYTE Gender) { if (character_name == NULL) { return; } if (list_index < 0 || list_index >= kMaxListSlot) { return; } int kind_index = 0; int class_index = 0; onShowCheckUICharacterandKind(class_type,Gender,class_index,kind_index); character_info_[list_index].show_character_Image(WZ_SHOW,class_index); character_info_[list_index].show_Kind_Image(WZ_SHOW,kind_index); TCHAR character_info_string[INTERFACE_STRING_LENGTH] = {'\0', }; TCHAR class_string[INTERFACE_STRING_LENGTH] = {'\0', }; FTextParser parser; FTextSentence sentence; RECT Base_rect = character_info_[list_index].Back_Check_->GetSizeRect(); int Left_out = (int)character_info_[list_index].charater_Image_[0]->GetSizeWidth(); int Right_out = (int)character_info_[list_index].kind_Image_[0]->GetSizeWidth(); Base_rect.left += Left_out; Base_rect.right -= Right_out; character_info_[list_index].character_info_text_.Init(GetDrawBase(), Base_rect); character_info_[list_index].character_info_text_.SetVCenterAlign(false); character_info_[list_index].character_info_text_.SetHCenterAlign(false); character_info_[list_index].character_info_text_.SetMargin(kListLeftMargin, 5, kListLeftMargin, 0); int baselineGap = character_info_[list_index].character_info_text_.getGapLine(); int basecharGap = character_info_[list_index].character_info_text_.getGapChar(); character_info_[list_index].character_info_text_.SetGap(basecharGap,-1); // ij¸¯ÅÍ À̸§ Snprintf(character_info_string, INTERFACE_STRING_LENGTH - 1, character_name); if (delete_check > 0) { parser.SetDefaultFont(kCharacterNameFont, kCloseSlotColor); // »èÁ¦ ´ë±âÁßÀÌ¸é »¡°£»ö } else { parser.SetDefaultFont(kCharacterNameFont, kCharacterNameColor); } parser.Parser(character_info_string, sentence); character_info_[list_index].character_info_text_.Append(sentence); // ij¸¯ÅÍ ·¹º§ & Ŭ·¡½º int class_name_code = GlobalFunc::GetClassNameCode(class_type); g_InterfaceManager.GetInterfaceString(class_name_code, class_string); Snprintf(character_info_string, INTERFACE_STRING_LENGTH - 1, "%d %s", level, class_string); parser.SetDefaultFont(kLevelFont, kLevelColor); parser.Parser(character_info_string, sentence); character_info_[list_index].character_info_text_.Append(sentence); // ÇöÀçÁö¿ª const sMAPINFO* current_map_info = MapInfoParser::Instance()->FindMapInfo(current_mapcode); if (delete_check > 0) { // »èÁ¦ ´ë±âÁßÀÌ¸é »èÁ¦ ´ë±â ¸Þ½ÃÁö g_InterfaceManager.GetInterfaceString(5038, class_string); Snprintf(character_info_string, INTERFACE_STRING_LENGTH, "%s [%s]", class_string, day_for_delete); parser.SetDefaultFont(kCurrentMapNameFont, kCurrentMapNameColor); parser.Parser(character_info_string, sentence); character_info_[list_index].character_info_text_.Append(sentence); } else { if (current_map_info != NULL) { g_InterfaceManager.GetInterfaceString(current_map_info->dwNCode, character_info_string); parser.SetDefaultFont(kCurrentMapNameFont, kCurrentMapNameColor); parser.Parser(character_info_string, sentence); character_info_[list_index].character_info_text_.Append(sentence); } } character_info_[list_index].character_info_text_.convertLineInfo(); } void uiCharacterSelectList2::SetSelectedCharacterSlotIndex(int slot_index) { int list_size = static_cast(character_slot_list_.size()); int list_index = -1; for (int index = 0; index < list_size; ++index) { if (character_slot_list_[index] == slot_index) { list_index = index; break; } } SetSelectedCharacterListIndex(list_index); } void uiCharacterSelectList2::SetSelectedCharacterListIndex(int list_index) { onCheckUIList(list_index); int list_size = static_cast(character_slot_list_.size()); if (list_size < 1) { list_index = -1; } selected_list_index_ = list_index; g_CharSelectScene.ShowSelectCharacter(GetSelectedCharacterSlotIndex()); } void uiCharacterSelectList2::OnSelectPrevCharacter() { --selected_list_index_; selected_list_index_ = max(selected_list_index_, 0); SetSelectedCharacterListIndex(selected_list_index_); } void uiCharacterSelectList2::OnSelectNextCharacter() { ++selected_list_index_; selected_list_index_ = min(selected_list_index_, kMaxListSlot); selected_list_index_ = min(selected_list_index_, static_cast(character_slot_list_.size() - 1)) ; if (selected_list_index_ == -1) { selected_list_index_ = 0; } SetSelectedCharacterListIndex(selected_list_index_); } int uiCharacterSelectList2::GetSelectedCharacterSlotIndex() { int list_size = static_cast(character_slot_list_.size()); if ((list_size < 1) || (list_size <= selected_list_index_)) { return -1; } int index = character_slot_list_[selected_list_index_]; return index; } //------------------------------------------------------------------------------ int uiCharacterSelectList2::GetListIndexFromSlotIndex(int slot_index) { std::vector::iterator begin = character_slot_list_.begin(); std::vector::iterator end = character_slot_list_.end(); for (int index = 0; begin != end; ++begin, ++index) { if ((*begin) == slot_index) { return index; } } return 0; } //³Ñ¾î¿À´Â ij¸¯ÅÍ¿¡ µû¶ó À妽º°¡ Ʋ·Á¾ßµÊ. void uiCharacterSelectList2::onShowCheckUICharacterandKind( byte classidx, byte gender, int& charIndex, int& KindIndex ) { switch(classidx) { case eCHAR_BERSERKER: KindIndex = 5; break; case eCHAR_DRAGON: KindIndex = 4; break; case eCHAR_SHADOW: KindIndex = 3; break; case eCHAR_ELEMENTALIST: KindIndex = 2; break; case eCHAR_MYSTIC: KindIndex = 1; break; case eCHAR_VALKYRIE: KindIndex = 0; break; case eCHAR_HELLROID: KindIndex = 6; break; #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE case eCHAR_WITCHBLADE: KindIndex = 7; break; #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE } eCHAR_TYPE race_type = ResourceCode::GetImageClassType((eCHAR_TYPE)classidx, (GenderType::Value)gender); switch(race_type) { case eCHAR_BERSERKER: charIndex = 5; break; case eCHAR_DRAGON: charIndex = 4; break; case eCHAR_SHADOW: charIndex = 3; break; case eCHAR_ELEMENTALIST: charIndex = 0; break; case eCHAR_MYSTIC: charIndex = 1; break; case eCHAR_VALKYRIE: charIndex = 2; break; case eCHAR_HELLROID: charIndex = 6; break; #ifdef _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE case eCHAR_WITCHBLADE: charIndex = 7; break; #endif // _NA_007514_20140828_NEW_CHARACTER_WITCHBLADE } } void uiCharacterSelectList2::onCheckUIList( int NowClickList ) { save_now_select_ = NowClickList; if(save_post_select_ != -1) { character_info_[save_post_select_].show_control_check(false); } if(save_now_select_ != -1) { character_info_[save_now_select_].show_control_check(true); } save_post_select_ = save_now_select_; } void uiCharacterSelectList2::CheckModifyDoubleClick( DWORD PosCheck ) { SetSelectedCharacterListIndex(PosCheck); g_Input.Reset(); TCHAR notice_message[INTERFACE_STRING_LENGTH] = {'\0', }; WzColor notice_color = WzColor_RGBA(255, 80, 80, 255); if( g_CharSelectScene.SendCharSelectPacket() == FALSE ) { CharSelectDialog* charater_select_dialog = GET_CAST_DIALOG(CharSelectDialog, IM_CHARACTERSELECT_MANAGER::CHARACTER_SELECT_DIALOG); if (charater_select_dialog) { charater_select_dialog->OnCreateCharacter(); } } } #endif