#include "SunClientPrecompiledHeader.h" #ifdef _NA_008016_20150203_SUN_RANKING_SYSTEM #include "uiSUNRankingDialog.h" #include "SUNRankingSlot.h" void uiSUNRankingDialog::MessageProc( SI_MESSAGE* message ) { if ( IsLock() ) return; if ( GetMan() == NULL ) return; bool is_change = false; if ( dropdown_class_filter_.MessageProc( message, OUT is_change ) ) { if ( is_change ) { dropdown_class_filter_.CurrentUserData(); int mode = get_sun_ranking_mode_(); if ( mode % 2 == 1 ) { set_sun_ranking_mode_(mode-1 + dropdown_class_filter_.CurrentUserData()); } else { set_sun_ranking_mode_(mode + dropdown_class_filter_.CurrentUserData()); } // ŸÀÌ¸Ó ÇÊ¿ä. if ( current_time_[get_sun_ranking_mode_()] == 0 ) { ui_sun_ranking_manager_->Send_CG_ETC_SUN_RANKING_SYN(get_sun_ranking_mode_()); } } return; } switch ( message->eResultMsg ) { case RT_MSG_LBUTTONCLICK: { OnLButtonClick( message ); } break; case RT_MSG_MOUSEOVER: { OnMouseOver( message ); } break; case RT_MSG_SB_PAGETOP: // À­ÂÊ ¸öÅëÀ» ´­·¶´Ù. case RT_MSG_SB_LINETOP: // À­ÂÊ È­»ìÇ¥¸¦ ´­·¶´Ù. { OnVScrollUp( message ); } break; case RT_MSG_SB_LINEBOTTOM: case RT_MSG_SB_PAGEBOTTOM: { OnVScrollDown( message ); } break; case RT_MSG_SB_THUMBTRACK: // ½æÀ» µå·¡±× Çϰí ÀÖ´Ù. case RT_MSG_SB_THUMBPOSITION: // ½æÀ» µå·¡±× ÇÑ ÈÄ ¸¶¿ì½º¸¦ ³õ¾Ò´Ù. case RT_MSG_SB_ENDSCROLL: // ½ºÅ©·ÑÀÌ Á¾·á µÇ¾ú´Ù. { OnVScrollThumb( message ); } break; default: SolarDialog::MessageProc(message); break; } } bool uiSUNRankingDialog::OnLButtonClick( SI_MESSAGE* message ) { DWORD control_position = GetControlPosition_byID( message->dwCtrlID ); switch ( control_position ) { case kControl_CheckBT_C000: case kControl_CheckBT_C001: case kControl_CheckBT_C002: case kControl_CheckBT_C003: case kControl_CheckBT_C004: case kControl_CheckBT_C005: case kControl_CheckBT_C006: #ifdef _NA_008679_20160202_REWORK_BATTLEGROUND case kControl_CheckBT_C010: case kControl_CheckBT_C009: #endif //_NA_008679_20160202_REWORK_BATTLEGROUND { if ( ui_sun_ranking_manager_->get_Is_wait_receive_packet_() == true ) { return true; } RankingArticleButtonClick( control_position ); } break; case kControl_Button_B012: { ShowInterface( FALSE ); } break; case kControl_Button_B003: { } break; case kControl_Button_B007: { OpenTutorialGuid(); } break; } return true; } void uiSUNRankingDialog::RankingArticleButtonClick( const DWORD& position ) { CCtrlButtonCheckWZ* check_button = NULL; for ( int i = kControl_CheckBT_C000; i <= kControl_CheckBT_C006; ++i ) { check_button = static_cast(GetControlWZ_byPosition(i)); if ( check_button == NULL ) { continue; } check_button->SetCheckState(false); if ( position == i ) { check_button->SetCheckState( true ); int mode = get_sun_ranking_mode_(); // ±âÁ¸ÀÇ ¸ðµå¿Í ¼±ÅÃµÈ ¸ðµå°¡ ´Ù¸¦ °æ¿ì. if ( mode != (i * MODE_MAX) + dropdown_class_filter_.CurrentUserData() ) { set_sun_ranking_mode_((i * MODE_MAX) + dropdown_class_filter_.CurrentUserData()); // ŸÀÌ¸Ó ÇÊ¿ä. if ( current_time_[get_sun_ranking_mode_()] == 0 ) { ui_sun_ranking_manager_->Send_CG_ETC_SUN_RANKING_SYN(get_sun_ranking_mode_()); } } } } } bool uiSUNRankingDialog::OnMouseOver( SI_MESSAGE* message ) { return true; } void uiSUNRankingDialog::UpdateMouseWheel() { CControlWZ* picture_control = GetControlWZ_byPosition(kControl_Picture_P008); SUNRankingMouseWheel::MOUSEWHEEL_STATE state = sun_ranking_mouse_wheel_.get_mouse_wheel_state_(); SUNRankingMouseWheel::MOUSEWHEEL_STATE local_state = state; bool is_differ_state = false; if ( picture_control ) { RECT area = picture_control->GetSizeRect(); BYTE wheel_msg = uiBase::GetMouseWheelStatus(&area); switch ( wheel_msg ) { case MOUSE_WHEEL_UP: local_state = SUNRankingMouseWheel::MOUSEWHEEL_UP; is_differ_state = true; break; case MOUSE_WHEEL_DOWN: local_state = SUNRankingMouseWheel::MOUSEWHEEL_DOWN; is_differ_state = true; break; } } DWORD current_tick = g_pSunRenderer->x_Clock.GetCurrentTick(); static DWORD last_time = current_tick; static float s_rate = 0.003f; float delta_tick = (float)(current_tick - last_time) * 0.003f; last_time = current_tick; // delta_tick ³Ö¾î ÁÖ¸é µÈ´Ù. int range_min = 0; int range_max = 0; int current_position = vscroll_control_->GetScrollPosWZ(); vscroll_control_->GetScrollRangeWZ(&range_min, &range_max); static short wheel = 2; static float fMoveSpeed = 180.0f; static float accel = 80.0f; moveval_.accel_ = accel; moveval_.speed_ = wheel * fMoveSpeed * 0.25f; moveval_.y_ = current_position; bool is_change = false; if ( is_differ_state == true && state == local_state ) { is_change = sun_ranking_mouse_wheel_.AccelMove(SUNRankingMouseWheel::MOUSEWHEEL_MAX, moveval_, delta_tick); } else { is_change = sun_ranking_mouse_wheel_.AccelMove(local_state, moveval_, delta_tick); } if ( is_change == true ) { current_position = moveval_.y_; current_position = max(current_position, 0); current_position = min(current_position, range_max); vscroll_control_->SetScrollPosWZ(current_position); SUNRankingSlot::set_is_message_(true); } } bool uiSUNRankingDialog::OnVScrollUp( SI_MESSAGE* message ) { if ( vscroll_control_ ) { int range_min = 0; int range_max = 0; int current_position = vscroll_control_->GetScrollPosWZ(); vscroll_control_->GetScrollRangeWZ(&range_min, &range_max); current_position -= kdivide_slot; current_position = max(current_position, 0); current_position = min(current_position, range_max); vscroll_control_->SetScrollPosWZ(current_position); SUNRankingSlot::set_is_message_(true); } return true; } bool uiSUNRankingDialog::OnVScrollDown( SI_MESSAGE* message ) { if ( vscroll_control_ ) { int range_min = 0; int range_max = 0; int current_position = vscroll_control_->GetScrollPosWZ(); vscroll_control_->GetScrollRangeWZ(&range_min, &range_max); current_position += kdivide_slot; current_position = max(current_position, 0); current_position = min(current_position, range_max); vscroll_control_->SetScrollPosWZ(current_position); SUNRankingSlot::set_is_message_(true); } return true; } bool uiSUNRankingDialog::OnVScrollThumb( SI_MESSAGE* message ) { SUNRankingSlot::set_is_message_(true); return true; } #endif // _NA_008016_20150203_SUN_RANKING_SYSTEM