#include "SunClientPrecompiledHeader.h" #ifdef _NA_003027_20111013_HONOR_SYSTEM #include "uiCharacterStatusInfo.h" #include "uiCharacterStatus/uiCharacterStatusMain.h" #include "uiCharacterStatusMan/uiCharacterStatusMan.h" #include "uiToolTipMan/uiToolTipMan.h" #include "uiSystemMan/uiSystemMan.h" #include "CommonCharacterFormula.h" #include "GlobalFunc.h" #include "Hero.h" #include "PacketRequestManager.h" #include "GameOptionParser.h" #include "Mouse.h" #ifdef _NA_002935_20110704_ITEM_SCORE #include "equipmentcontainer.h" #endif //_NA_002935_20110704_ITEM_SCORE #ifdef _NA_008472_20150903_IMPROVED_BALANCE #include "uiCharacterStatusInfo2.h" #endif // _NA_008472_20150903_IMPROVED_BALANCE const DWORD uiCharacterStatusInfo::kDialog_ID = StrToWzID("0402"); #ifdef _NA_005010_20120621_RATE_OF_DEFENCE_SUCCESS_MODIFY const int ATTRUBUTE_MAX_PHYSICAL_ATTACK_RATE = 99; const int ATTRUBUTE_MAX_PHYSICAL_AVOID_RATE = 80; #else const int ATTRUBUTE_MAX_PHYSICAL_ATTACK_AND_AVOID_RATE = 99; #endif //_NA_005010_20120621_RATE_OF_DEFENCE_SUCCESS_MODIFY const int ATTRUBUTE_MAX_PHYSICAL_CRITICAL_RATIO = 100; const int ATTRUBUTE_MAX_REDUCE_ELEMENT_DAMAGE_RATIO = 80; uiCharacterStatusInfo::uiCharacterStatusInfo(InterfaceManager* interface_manager): uiBase(interface_manager) { } uiCharacterStatusInfo::~uiCharacterStatusInfo() { } void uiCharacterStatusInfo::Init(CDrawBase* draw_base) { uiBase::Init(draw_base); GetDialogWZ()->SetCallbackTooltip(uiToolTipMan::Callback_Tooltip); RegisterControlPosition(StrToWzID("C000"), kControl_CheckBT_C000); #ifdef _NA_008472_20150903_IMPROVED_BALANCE RegisterControlPosition(StrToWzID("C003"), kControl_CheckBT_C003); #endif // _NA_008472_20150903_IMPROVED_BALANCE RegisterControlPosition(StrToWzID("C001"), kControl_CheckBT_C001); RegisterControlPosition(StrToWzID("C002"), kControl_CheckBT_C002); RegisterControlPosition(StrToWzID("C032"), kControl_CheckBT_C032); RegisterControlPosition(StrToWzID("B000"), kControl_Button_B000); RegisterControlPosition(StrToWzID("B001"), kControl_Button_B001); RegisterControlPosition(StrToWzID("B002"), kControl_Button_B002); RegisterControlPosition(StrToWzID("B004"), kControl_Button_B004); RegisterControlPosition(StrToWzID("B006"), kControl_Button_B006); RegisterControlPosition(StrToWzID("B003"), kControl_Button_B003); RegisterControlPosition(StrToWzID("B005"), kControl_Button_B005); RegisterControlPosition(StrToWzID("B011"), kControl_Button_B011); RegisterControlPosition(StrToWzID("B012"), kControl_Button_B012); RegisterControlPosition(StrToWzID("B013"), kControl_Button_B013); RegisterControlPosition(StrToWzID("B014"), kControl_Button_B014); RegisterControlPosition(StrToWzID("B015"), kControl_Button_B015); RegisterControlPosition(StrToWzID("ST00"), kControl_Text_ST00); RegisterControlPosition(StrToWzID("P003"), kControl_Picture_P003); RegisterControlPosition(StrToWzID("TI04"), kControl_TextImage_TI04); RegisterControlPosition(StrToWzID("TI33"), kControl_TextImage_TI33); RegisterControlPosition(StrToWzID("TI08"), kControl_TextImage_TI08); RegisterControlPosition(StrToWzID("TI05"), kControl_TextImage_TI05); RegisterControlPosition(StrToWzID("I001"), kControl_TextImage_I001); RegisterControlPosition(StrToWzID("TI12"), kControl_TextImage_TI12); RegisterControlPosition(StrToWzID("TI32"), kControl_TextImage_TI32); RegisterControlPosition(StrToWzID("TI13"), kControl_TextImage_TI13); RegisterControlPosition(StrToWzID("TI09"), kControl_TextImage_TI09); RegisterControlPosition(StrToWzID("TI11"), kControl_TextImage_TI11); #ifdef _NA_008472_20150903_IMPROVED_BALANCE RegisterControlPosition(StrToWzID("I003"), kControl_TextImage_I003); RegisterControlPosition(StrToWzID("I004"), kControl_TextImage_I004); RegisterControlPosition(StrToWzID("I005"), kControl_TextImage_I005); #else RegisterControlPosition(StrToWzID("I000"), kControl_TextImage_I000); #endif // _NA_008472_20150903_IMPROVED_BALANCE RegisterControlPosition(StrToWzID("TI14"), kControl_TextImage_TI14); RegisterControlPosition(StrToWzID("TI16"), kControl_TextImage_TI16); RegisterControlPosition(StrToWzID("TI18"), kControl_TextImage_TI18); RegisterControlPosition(StrToWzID("TI20"), kControl_TextImage_TI20); RegisterControlPosition(StrToWzID("TI15"), kControl_TextImage_TI15); RegisterControlPosition(StrToWzID("TI21"), kControl_TextImage_TI21); RegisterControlPosition(StrToWzID("TI25"), kControl_TextImage_TI25); RegisterControlPosition(StrToWzID("TI22"), kControl_TextImage_TI22); RegisterControlPosition(StrToWzID("TI24"), kControl_TextImage_TI24); RegisterControlPosition(StrToWzID("TI23"), kControl_TextImage_TI23); RegisterControlPosition(StrToWzID("TI26"), kControl_TextImage_TI26); RegisterControlPosition(StrToWzID("TI28"), kControl_TextImage_TI28); RegisterControlPosition(StrToWzID("TI31"), kControl_TextImage_TI31); RegisterControlPosition(StrToWzID("TI29"), kControl_TextImage_TI29); RegisterControlPosition(StrToWzID("TI30"), kControl_TextImage_TI30); RegisterControlPosition(StrToWzID("TI27"), kControl_TextImage_TI27); #ifdef _NA_002935_20110704_ITEM_SCORE RegisterControlPosition(StrToWzID("I002"), kControl_TextImage_I002); #endif //_NA_002935_20110704_ITEM_SCORE simulation_info().simulation_player_attributes.Clear(); simulation_info().pressed_button_index = kControl_Size; simulation_info().pressed_button_time = clock_function::GetTickCount(); simulation_info().ResetStatCount(); } void uiCharacterStatusInfo::Release() { simulation_info().simulation_player_attributes.Clear(); } void uiCharacterStatusInfo::OnShowWindow(BOOL is_show) { if (is_show == TRUE) { #ifdef _NA_008472_20150903_IMPROVED_BALANCE uiCharacterStatusMan* ui_status_manager = GET_DIALOG_MANAGER(uiCharacterStatusMan, UIMAN_CHARACTERSTATUS); if (ui_status_manager != NULL) { TabCheckButtonControllManager& tab_manager = ui_status_manager->status_dialog_tab_manager(); if (tab_manager.GetPrevTabIndex() != kControl_CheckBT_C003) { simulation_info().ResetStatCount(); RefreshSimulationPlayerAttributes(); } } #else simulation_info().ResetStatCount(); RefreshSimulationPlayerAttributes(); #endif // _NA_008472_20150903_IMPROVED_BALANCE CControlWZ* picture_control = GetControlWZ_byPosition(kControl_Picture_P003); if (picture_control != NULL) { picture_control->SetDiscardMessage(true); picture_control->ShowWindowWZ(WZ_HIDE); } RefreshTab(); } else { #ifdef _NA_008472_20150903_IMPROVED_BALANCE uiCharacterStatusMan* ui_status_manager = GET_DIALOG_MANAGER(uiCharacterStatusMan, UIMAN_CHARACTERSTATUS); if (ui_status_manager != NULL) { TabCheckButtonControllManager& tab_manager = ui_status_manager->status_dialog_tab_manager(); if (tab_manager.GetCurrentTabIndex() != kControl_CheckBT_C003) { simulation_info().ResetStatCount(); simulation_info().simulation_player_attributes.Clear(); } } else { simulation_info().ResetStatCount(); simulation_info().simulation_player_attributes.Clear(); } #else simulation_info().ResetStatCount(); simulation_info().simulation_player_attributes.Clear(); #endif // _NA_008472_20150903_IMPROVED_BALANCE } } void uiCharacterStatusInfo::MessageProc(SI_MESSAGE* message) { if (IsLock()) { return; } if (GetMan() == NULL) { return; } switch (message->eResultMsg) { case RT_MSG_LBUTTONCLICK: OnLButtonClick(message); break; case RT_MSG_LBUTTONDOWN: OnLButtonDown(message); break; case RT_MSG_LBUTTONUP: OnLButtonUp(message); break; default: SolarDialog::MessageProc(message); break; } } void uiCharacterStatusInfo::OnUpdateSolarDialog() { if (g_pHero == NULL) { return; } // ½ºÅÈ ½Ã¹Ä·¹ÀÌ¼Ç ¹öư ´©¸§ ó¸® ProcessStatbutton(); // ´É·ÂÄ¡ ¾÷µ¥ÀÌÆ® UpdateParameter(); // ÃʱâÈ­ Æ÷ÀÎÆ® ¾÷µ¥ÀÌÆ® if (g_pHero->GetLevel() <= GameOptionParser::Instance()->GetFreeStatInitLevel()) { ShowFreeStatInitControls( WZ_SHOW ); CCtrlImageStaticWZ* init_point_control = static_cast(GetControlWZ_byPosition(kControl_TextImage_TI33)); if (init_point_control != NULL) { TCHAR point_string[INTERFACE_STRING_LENGTH] = {'\0', }; Snprintf(point_string, INTERFACE_STRING_LENGTH-1, _T("%d"), g_pHero->GetCharInfo()->m_byFreeInitCount); init_point_control->SetTextWZ(point_string); } } else { ShowFreeStatInitControls( WZ_HIDE ); } if (GetDialogWZ()->HaveFocus() == true) { GlobalFunc::MoveToTopDialog(uiCharacterStatusMain::kDialog_ID); } } void uiCharacterStatusInfo::OnRenderSolarDialog() { // ÅøÆÁ Ãâ·Â if (IsLocked() == false) { RenderTooltip(); } } void uiCharacterStatusInfo::RefreshTab() { CCtrlButtonCheckWZ* check_button = NULL; for (int position = kControl_CheckBT_C000; position < (kControl_CheckBT_C032 + 1); ++position) { check_button = static_cast(GetControlWZ(GetControlID_byPosition(position))); if (check_button == NULL) { continue; } check_button->SetCheckState((position == kControl_CheckBT_C000) ? (true) : (false)); } } void uiCharacterStatusInfo::ProcessStatbutton() { CControlWZ* control_ptr = GetControlWZ_byPosition(simulation_info().pressed_button_index); if (IsOverControl(control_ptr) && Mouse::Instance()->LButtonPressed() == TRUE) { DWORD cur_tick = clock_function::GetTickCount(); DWORD gab_tick = cur_tick - simulation_info().pressed_button_time; int add_count = ((int)gab_tick - 0) / 1000; if (add_count > 0) { UpdateSimulationPlayerAttributes(simulation_info().pressed_button_index, add_count); } } else { simulation_info().pressed_button_index = kControl_Size; simulation_info().pressed_button_time = clock_function::GetTickCount(); } control_ptr = GetControlWZ_byPosition(kControl_Picture_P003); if (control_ptr != NULL) { static DWORD alpha_value = 0; static DWORD cur_tick = clock_function::GetTickCount(); static DWORD prev_tick = clock_function::GetTickCount(); cur_tick = clock_function::GetTickCount(); if (IsSimulationStatChanged() == true) { alpha_value += ((cur_tick - prev_tick) * 2); alpha_value = alpha_value % int(PI * 1000); float alpha = abs(sin(alpha_value * 0.001f)); control_ptr->SetTransprency(alpha); control_ptr->ShowWindowWZ(WZ_SHOW); } else { alpha_value = 0; control_ptr->ShowWindowWZ(WZ_HIDE); } prev_tick = cur_tick; } } void uiCharacterStatusInfo::UpdateParameter() { PlayerAttributes* player_attributes = &(simulation_info().simulation_player_attributes); const BASE_PLAYERINFO* player_info = simulation_info().simulation_player.GetCharacterInfo(); // ±âº» 5½ºÅÝ Á¾·ù SetParameterCaption(kControl_TextImage_TI14, player_attributes->GetSTR(), player_attributes->GetBaseSTR()); //!< Èû SetParameterCaption(kControl_TextImage_TI16, player_attributes->GetDEX(), player_attributes->GetBaseDEX()); //!< ¹Îø SetParameterCaption(kControl_TextImage_TI18, player_attributes->GetVIT(), player_attributes->GetBaseVIT()); //!< ü·Â SetParameterCaption(kControl_TextImage_TI20, player_attributes->GetINT(), player_attributes->GetBaseINT()); //!< Áö·Â SetParameterCaption(kControl_TextImage_TI15, player_attributes->GetSPR(), player_attributes->GetBaseSPR()); //!< Á¤½Å·Â // ³²¾ÆÀÖ´Â ½ºÅÝÆ÷ÀÎÆ® SetParameterCaption(kControl_TextImage_TI21, player_info->m_iRemainStat); // °ø°Ý·Â ¹× ¹æ¾î·Â // µ¥¹ÌÁö CCtrlImageStaticWZ *pControl = static_cast(GetControlWZ_byPosition(kControl_TextImage_TI04)); if (g_pHero->IsRangedNormalAttack()) { SetParameterDamage(pControl, player_attributes->GetBaseRangeMinAttPower(), player_attributes->GetBaseRangeMaxAttPower()); } else { SetParameterDamage(pControl, player_attributes->GetBaseMeleeMinAttPower(), player_attributes->GetBaseMeleeMaxAttPower()); } // ¹°¸®µ¥¹ÌÁö ¿É¼Ç SetParameterCaption(kControl_TextImage_TI05, player_attributes->GetOptionPhysicalAttPower(), player_attributes->GetBaseOptionPhysicalAttPower()); //¹°¸®¹æ¾î·Â if (g_pHero->IsRangedNormalAttack()) { SetParameterCaption(kControl_TextImage_TI08, player_attributes->GetBaseRangeDefPower(),// + player_attributes->GetOptionPhysicalDefPower(), player_attributes->GetBaseRangeDefPower()); } else { SetParameterCaption(kControl_TextImage_TI08, player_attributes->GetBaseMeleeDefPower(),// + player_attributes->GetOptionPhysicalDefPower(), player_attributes->GetBaseMeleeDefPower()); } // ¹°¸®¹æ¾î·Â ¿É¼Ç SetParameterCaption(kControl_TextImage_I001, player_attributes->GetOptionPhysicalDefPower(), player_attributes->GetBaseOptionPhysicalDefPower()); // ±âŸ ´É·ÂÄ¡ //Å©¸®Æ¼ÄÃÈ®·ü SetParameterCaptionWithPercent(kControl_TextImage_TI11, player_attributes->GetCriticalRatioChange(), player_attributes->GetBaseCriticalRatioChange()); #ifdef _NA_008472_20150903_IMPROVED_BALANCE // Å©¸®Æ¼Äà ÇǰÝÈ®·ü SetParameterCaptionWithPercentReverseTextColor(kControl_TextImage_I003, player_attributes->GetEnemyCriticalRatioChange(), player_attributes->GetBaseEnemyCriticalRatioChange()); // Å©¸®Æ¼Äà µ¥¹ÌÁöÁõ°¡ SetParameterCaption(kControl_TextImage_I004, player_attributes->GetCriticalDamageBonus(), player_attributes->GetBaseCriticalDamageBonus()); // Å©¸®Æ¼Äà µ¥¹ÌÁöÁõ°¡(%) SetParameterCaptionWithPercent(kControl_TextImage_I005, player_attributes->GetRatioCriticalDamageBonus(), player_attributes->GetBaseCriticalDamageBonus()); #else //! Ãß°¡ ½ºÅ³ °ø°Ý·Â SetParameterCaption(kControl_TextImage_I000, player_attributes->GetSkillAttackPower(), player_attributes->GetBaseSkillAttackPower()); #endif // _NA_008472_20150903_IMPROVED_BALANCE // ¹°¸®°ø°ÝȸÇÇÀ² SetParameterCaptionWithPercent(kControl_TextImage_TI12, player_attributes->GetPhysicalAvoidRate(), player_attributes->GetBasePhysicalAvoidRate()); int base_attack_speed = 0; int base_attack_rate = 0; if (g_pHero->GetWeaponInfo() != NULL) { base_attack_speed = g_pHero->GetWeaponInfo()->m_wPhyAttSpeed; base_attack_rate = g_pHero->GetWeaponInfo()->m_wPhyAttRate; } // ¹°¸®°ø°Ý¼º°ø·ü SetParameterCaptionWithPercent(kControl_TextImage_TI09, player_attributes->GetPhysicalAttackRate(), base_attack_rate + player_attributes->GetBasePhysicalAttackRate()); //°ø°Ý ¼Óµµ SetParameterCaption(kControl_TextImage_TI13, player_attributes->GetAttSpeedRatio(), //±×³É ºñÀ² ns_formula::CalcAttackSpeedRatio(g_pHero->GetClass(), g_pHero->GetWeaponKind(), player_attributes->GetDEX(), base_attack_speed, 0)); //À̵¿ ¼Óµµ #ifdef _NA_008486_20150914_TOTAL_BALANCE SetParameterCaption(kControl_TextImage_TI32, player_attributes->GetMoveSpeedRatio(), ns_formula::CalcMoveSpeedRatio(0, 0, g_pHero->GetLevel())); #else SetParameterCaption(kControl_TextImage_TI32, player_attributes->GetMoveSpeedRatio(), ns_formula::CalcMoveSpeedRatio(player_attributes->GetDEX(), 0, 0)); #endif //_NA_008486_20150914_TOTAL_BALANCE // ¼Ó¼º °ø°Ý·Â/ÀúÇ×·ü int over_value = 0; // È­ : ¼Ó¼º °ø°Ý·Â over_value = player_attributes->GetMagicalAttackPower(eATTACK_TYPE_FIRE);// - player_attributes->GetMagicalAttackPower(eATTACK_TYPE_FIRE, eATTR_KIND_BASE); SetParameterCaption(kControl_TextImage_TI25, over_value); // ¼ö over_value = player_attributes->GetMagicalAttackPower(eATTACK_TYPE_WATER);// - player_attributes->GetMagicalAttackPower(eATTACK_TYPE_WATER, eATTR_KIND_BASE); SetParameterCaption(kControl_TextImage_TI22, over_value); // Áö over_value = player_attributes->GetMagicalAttackPower(eATTACK_TYPE_EARTH);// - player_attributes->GetMagicalAttackPower(eATTACK_TYPE_EARTH, eATTR_KIND_BASE); SetParameterCaption(kControl_TextImage_TI24, over_value); // dz over_value = player_attributes->GetMagicalAttackPower(eATTACK_TYPE_WIND);// - player_attributes->GetMagicalAttackPower(eATTACK_TYPE_WIND, eATTR_KIND_BASE); SetParameterCaption(kControl_TextImage_TI23, over_value); // ¾Ï over_value = player_attributes->GetMagicalAttackPower(eATTACK_TYPE_DARKNESS);// - player_attributes->GetMagicalAttackPower(eATTACK_TYPE_DARKNESS, eATTR_KIND_BASE); SetParameterCaption(kControl_TextImage_TI26, over_value); // È­ : ¼Ó¼º ÀúÇ×·ü SetParameterCaptionWithPercent(kControl_TextImage_TI28, player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_FIRE), player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_FIRE, eATTR_KIND_BASE)); // ¼ö SetParameterCaptionWithPercent(kControl_TextImage_TI31, player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_WATER), player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_WATER, eATTR_KIND_BASE)); // Áö SetParameterCaptionWithPercent(kControl_TextImage_TI29, player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_EARTH), player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_EARTH, eATTR_KIND_BASE)); // dz SetParameterCaptionWithPercent(kControl_TextImage_TI30, player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_WIND), player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_WIND, eATTR_KIND_BASE)); // ¾Ï SetParameterCaptionWithPercent(kControl_TextImage_TI27, player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_DARKNESS), player_attributes->GetReduceElementDamageRatio(eATTACK_TYPE_DARKNESS, eATTR_KIND_BASE)); #ifdef _NA_002935_20110704_ITEM_SCORE // ÀåºñÆòÁ¡ int item_score = g_pHero->GetItemScore(); SetParameterCaption(kControl_TextImage_I002, item_score, item_score); #endif //_NA_002935_20110704_ITEM_SCORE } void uiCharacterStatusInfo::ShowFreeStatInitControls(ENUM_STATEWZ show_state) { for (DWORD control_position = kControl_TextImage_TI33; control_position < kControl_Text_ST00 + 1; ++control_position) { CControlWZ* control_ptr = GetControlWZ_byPosition(control_position); if (control_ptr != NULL) { control_ptr->ShowWindowWZ(show_state); } } } eATTR_TYPE uiCharacterStatusInfo::GetAttrTypeFromButtonPos(UIControlPos control_position) { switch (control_position) { case kControl_Button_B000: case kControl_Button_B005: return eATTR_STR; case kControl_Button_B002: case kControl_Button_B011: return eATTR_DEX; case kControl_Button_B004: case kControl_Button_B012: return eATTR_VIT; case kControl_Button_B006: case kControl_Button_B013: return eATTR_INT; case kControl_Button_B001: case kControl_Button_B014: return eATTR_SPR; } return eATTR_TYPE_INVALID; } void uiCharacterStatusInfo::UpdateSimulationPlayerAttributes(UIControlPos control_position, int add_value) { eATTR_TYPE attr_type = GetAttrTypeFromButtonPos(control_position); if (attr_type == eATTR_TYPE_INVALID) { return; } int org_value = g_pHero->GetPlayerAttribute()->GetAttrValue(attr_type); int cur_value = simulation_info().simulation_player_attributes.GetAttrValue(attr_type); int base_value = simulation_info().simulation_player_attributes.GetAttrValue(attr_type, eATTR_KIND_BASE); switch (control_position) { // [-] ¹öưÀ» ´©¸§ case kControl_Button_B005: case kControl_Button_B011: case kControl_Button_B012: case kControl_Button_B013: case kControl_Button_B014: { add_value = -add_value; } break; } if (add_value < 0) { if ((cur_value <= org_value) || (simulation_info().simulation_stat_count[attr_type] <= 0)) { return; } if (cur_value + add_value < org_value) { //! ±âº»°ª º¸´Ù´Â Å©°Å³ª °°°Ô ÇÑ´Ù. add_value = org_value - cur_value; } } else if (add_value > 0) { //! ½ºÅÝ Æ÷ÀÎÆ® ÃÖ´ë°¡ 1000 const int kMaxStatValue = 1000; if ((cur_value >= kMaxStatValue) || (simulation_info().simulation_stat_count[attr_type] >= kMaxStatValue)) { return; } if ((cur_value + add_value) > kMaxStatValue) { add_value = kMaxStatValue - cur_value; } if (add_value > simulation_info().simulation_player.GetCharacterInfo()->m_iRemainStat) { add_value = simulation_info().simulation_player.GetCharacterInfo()->m_iRemainStat; } } if (add_value == 0) { return; } simulation_info().simulation_player_attributes.SetAttrValue(attr_type, eATTR_KIND_BASE, base_value + add_value); simulation_info().simulation_player_attributes.Update(); int apply_value = simulation_info().simulation_player_attributes.GetAttrValue(attr_type); simulation_info().simulation_player.GetCharacterInfo()->m_iRemainStat -= add_value; //(add_value - (next_value - apply_value)); //! º¯°æ ½ºÅÝ Ä«¿îÆ®¸¦ ÀúÀåÇÑ´Ù. simulation_info().simulation_stat_count[attr_type] += add_value; GetControlWZ_byPosition(kControl_Button_B015)->EnableWindowWZ(IsSimulationStatChanged()); } bool uiCharacterStatusInfo::IsSimulationStatChanged() { return (g_pHero->GetCharInfo()->m_iRemainStat != simulation_info().simulation_player.GetCharacterInfo()->m_iRemainStat); } void uiCharacterStatusInfo::RefreshStatButton() { ENUM_STATEWZ show_state = WZ_HIDE; if (g_pHero->GetCharInfo()->m_iRemainStat > 0) { show_state = WZ_SHOW; } GetControlWZ_byPosition(kControl_Button_B000)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B005)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B002)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B011)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B004)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B012)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B006)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B013)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B001)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B014)->ShowWindowWZ(show_state); GetControlWZ_byPosition(kControl_Button_B015)->ShowWindowWZ(show_state); if (show_state == WZ_SHOW) { GetControlWZ_byPosition(kControl_Button_B015)->EnableWindowWZ(IsSimulationStatChanged()); } } void uiCharacterStatusInfo::SEND_STATUS_STAT_APPLY_SYN() { if (PacketRequestManager::Instance()->is_sent(CG_STATUS, CG_STATUS_STAT_APPLY_SYN)) { return; } if (IsSimulationStatChanged() == false) { return; } MSG_CG_STATUS_STAT_APPLY_SYN syn; syn.stat_point[eATTR_STR] = simulation_info().simulation_stat_count[eATTR_STR]; syn.stat_point[eATTR_DEX] = simulation_info().simulation_stat_count[eATTR_DEX]; syn.stat_point[eATTR_VIT] = simulation_info().simulation_stat_count[eATTR_VIT]; syn.stat_point[eATTR_INT] = simulation_info().simulation_stat_count[eATTR_INT]; syn.stat_point[eATTR_SPR] = simulation_info().simulation_stat_count[eATTR_SPR]; GlobalFunc::SendPacket(CI_GAMESERVERIDX, &syn, sizeof(syn)); PacketRequestManager::Instance()->PushPacket((new MSG_CG_STATUS_STAT_APPLY_SYN), (new MSG_CG_STATUS_STAT_APPLY_ACK), (new MSG_CG_STATUS_STAT_APPLY_NAK), sizeof(MSG_CG_STATUS_STAT_APPLY_SYN), PACKET_WAITING_MILLISECOND, false); } void uiCharacterStatusInfo::RefreshSimulationPlayerAttributes() { #ifdef _NA_008472_20150903_IMPROVED_BALANCE uiCharacterStatusInfo2* character_status_info2 = GET_CAST_DIALOG(uiCharacterStatusInfo2, uiCharacterStatusInfo2::kDialog_ID); if (IsVisible() == FALSE && character_status_info2 && character_status_info2->IsVisible() == FALSE) { return; } #else if (IsVisible() == FALSE) { return; } #endif // _NA_008472_20150903_IMPROVED_BALANCE if (g_pHero->GetCharInfo() == NULL) { return; } simulation_info().simulation_player.SetCharInfo(g_pHero->GetCharInfo()); simulation_info().simulation_player.SetWeaponKind(g_pHero->GetWeaponKind()); simulation_info().simulation_player_attributes.Clear(); g_pHero->GetPlayerAttribute()->Clone(&(simulation_info().simulation_player_attributes)); simulation_info().simulation_player_attributes.SetOwner(&simulation_info().simulation_player); int cur_str_stat_count = simulation_info().simulation_player_attributes.GetAttrValue(eATTR_STR, eATTR_KIND_BASE); int cur_dex_stat_count = simulation_info().simulation_player_attributes.GetAttrValue(eATTR_DEX, eATTR_KIND_BASE); int cur_vit_stat_count = simulation_info().simulation_player_attributes.GetAttrValue(eATTR_VIT, eATTR_KIND_BASE); int cur_int_stat_count = simulation_info().simulation_player_attributes.GetAttrValue(eATTR_INT, eATTR_KIND_BASE); int cur_spr_stat_count = simulation_info().simulation_player_attributes.GetAttrValue(eATTR_SPR, eATTR_KIND_BASE); simulation_info().simulation_player_attributes.SetAttrValue(eATTR_STR, eATTR_KIND_BASE, cur_str_stat_count + simulation_info().simulation_stat_count[eATTR_STR]); simulation_info().simulation_player_attributes.SetAttrValue(eATTR_DEX, eATTR_KIND_BASE, cur_dex_stat_count + simulation_info().simulation_stat_count[eATTR_DEX]); simulation_info().simulation_player_attributes.SetAttrValue(eATTR_VIT, eATTR_KIND_BASE, cur_vit_stat_count + simulation_info().simulation_stat_count[eATTR_VIT]); simulation_info().simulation_player_attributes.SetAttrValue(eATTR_INT, eATTR_KIND_BASE, cur_int_stat_count + simulation_info().simulation_stat_count[eATTR_INT]); simulation_info().simulation_player_attributes.SetAttrValue(eATTR_SPR, eATTR_KIND_BASE, cur_spr_stat_count + simulation_info().simulation_stat_count[eATTR_SPR]); simulation_info().simulation_player_attributes.Update(); simulation_info().simulation_player.GetCharacterInfo()->m_iRemainStat -= (simulation_info().simulation_stat_count[eATTR_STR] + simulation_info().simulation_stat_count[eATTR_DEX] + simulation_info().simulation_stat_count[eATTR_VIT] + simulation_info().simulation_stat_count[eATTR_INT] + simulation_info().simulation_stat_count[eATTR_SPR]); RefreshStatButton(); } void uiCharacterStatusInfo::ResetSimulationStatCount() { simulation_info().ResetStatCount(); } void uiCharacterStatusInfo::CallbackSendPacketStatusStatApply(bool is_yes) { if (is_yes) { uiCharacterStatusInfo* status_info_dialog = GET_CAST_DIALOG(uiCharacterStatusInfo, uiCharacterStatusInfo::kDialog_ID); if ((status_info_dialog != NULL) && (status_info_dialog->IsVisible() == TRUE)) { status_info_dialog->SEND_STATUS_STAT_APPLY_SYN(); } } } void uiCharacterStatusInfo::SetParameterCaption(UIControlPos control_position, int val) { CControlWZ* control_ptr = GetControlWZ_byPosition(control_position); if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE)) { SetControlTextColor(static_cast(control_ptr), val, IsMaxParameterCaption(control_position, val)); TCHAR text_string[INTERFACE_STRING_LENGTH] = {0, }; Snprintf(text_string, INTERFACE_STRING_LENGTH-1, _T("%d"), val); static_cast(control_ptr)->SetTextWZ(text_string); } } void uiCharacterStatusInfo::SetParameterCaption(UIControlPos control_position, int calc_value, int base_value) { CControlWZ* control_ptr = GetControlWZ_byPosition(control_position); if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE)) { SetControlTextColor(static_cast(control_ptr), (calc_value - base_value), IsMaxParameterCaption(control_position, calc_value)); TCHAR text_string[INTERFACE_STRING_LENGTH] = {0, }; Snprintf(text_string, INTERFACE_STRING_LENGTH-1, _T("%d"), calc_value); static_cast(control_ptr)->SetTextWZ(text_string); } } void uiCharacterStatusInfo::SetParameterDamage(CCtrlImageStaticWZ* control_ptr,int min_value,int max_value) { TCHAR text_string[INTERFACE_STRING_LENGTH] = {0, }; #ifdef _JAPAN Snprintf(text_string, INTERFACE_STRING_LENGTH-1, _T("%d-%d"), min_value, max_value); #else Snprintf(text_string, INTERFACE_STRING_LENGTH-1, _T("%d~%d"), min_value, max_value); #endif control_ptr->SetTextColor(WzColor_RGBA(255,255,255,255)); control_ptr->SetTextWZ(text_string); } void uiCharacterStatusInfo::SetParameterCaptionWithPercent(UIControlPos control_position, int calc_value, int base_value) { CControlWZ* control_ptr = GetControlWZ_byPosition(control_position); if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE)) { SetControlTextColor(static_cast(control_ptr), (calc_value - base_value), IsMaxParameterCaption(control_position, calc_value)); TCHAR string_format[INTERFACE_STRING_LENGTH] = {NULL, }; TCHAR string_messgae[INTERFACE_STRING_LENGTH] = {NULL, }; //! 158573 %d%% g_InterfaceManager.GetInterfaceString(158573, string_format, INTERFACE_STRING_LENGTH); Snprintf(string_messgae, INTERFACE_STRING_LENGTH-1, string_format, calc_value); static_cast(control_ptr)->SetTextWZ(string_messgae); } } #ifdef _NA_008472_20150903_IMPROVED_BALANCE void uiCharacterStatusInfo::SetParameterCaptionWithPercentReverseTextColor( UIControlPos control_position, int calc_value, int base_value ) { CControlWZ* control_ptr = GetControlWZ_byPosition(control_position); if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE)) { SetControlReverseTextColor(static_cast(control_ptr), (calc_value - base_value), IsMaxParameterCaption(control_position, calc_value)); TCHAR string_format[INTERFACE_STRING_LENGTH] = {NULL, }; TCHAR string_messgae[INTERFACE_STRING_LENGTH] = {NULL, }; //! 158573 %d%% g_InterfaceManager.GetInterfaceString(158573, string_format, INTERFACE_STRING_LENGTH); Snprintf(string_messgae, INTERFACE_STRING_LENGTH-1, string_format, calc_value); static_cast(control_ptr)->SetTextWZ(string_messgae); } } #endif // _NA_008472_20150903_IMPROVED_BALANCE void uiCharacterStatusInfo::SetControlTextColor(CCtrlImageStaticWZ* control_ptr, int val, bool is_max /* =false */) { if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == false) { return; } if ((control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == true)) { if (is_max == true) { control_ptr->SetTextColor(WzColor_RGBA(20,255,255,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(20,255,255,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(20,255,255,255)); control_ptr->SetFontID(StrToWzID("m217")); return; } else { control_ptr->SetFontID(StrToWzID("st10")); } if (val > 0) { control_ptr->SetTextColor(WzColor_RGBA(20,255,20,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(20,255,20,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(20,255,20,255)); } else if (val < 0) { control_ptr->SetTextColor(WzColor_RGBA(20,20,255,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(20,20,255,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(20,20,255,255)); } else { control_ptr->SetTextColor(WzColor_RGBA(255,255,255,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(255,255,255,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(255,255,255,255)); } } } #ifdef _NA_008472_20150903_IMPROVED_BALANCE void uiCharacterStatusInfo::SetControlReverseTextColor( CCtrlImageStaticWZ* control_ptr, int val, bool is_max /*= false*/ ) { if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == false) { return; } if ((control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == true)) { if (is_max == true) { control_ptr->SetTextColor(WzColor_RGBA(20,255,255,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(20,255,255,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(20,255,255,255)); control_ptr->SetFontID(StrToWzID("m217")); return; } else { control_ptr->SetFontID(StrToWzID("st10")); } if (val < 0) { control_ptr->SetTextColor(WzColor_RGBA(20,255,20,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(20,255,20,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(20,255,20,255)); } else if (val > 0) { control_ptr->SetTextColor(WzColor_RGBA(20,20,255,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(20,20,255,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(20,20,255,255)); } else { control_ptr->SetTextColor(WzColor_RGBA(255,255,255,255)); control_ptr->SetTextMouseOnColor(WzColor_RGBA(255,255,255,255)); control_ptr->SetTextMouseDownColor(WzColor_RGBA(255,255,255,255)); } } } #endif // _NA_008472_20150903_IMPROVED_BALANCE void uiCharacterStatusInfo::RenderTooltip() { PlayerAttributes* player_attributes = &(simulation_info().simulation_player_attributes); uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP); if ((tooltip_manager == NULL) || (player_attributes == NULL)) { return; } // ¼Ó¼º °ø°Ý·Â if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI25))) RenderTooltip_StringCode(tooltip_manager, 11490); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI22))) RenderTooltip_StringCode(tooltip_manager, 11487); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI24))) RenderTooltip_StringCode(tooltip_manager, 11489); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI23))) RenderTooltip_StringCode(tooltip_manager, 11488); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI26))) RenderTooltip_StringCode(tooltip_manager, 11491); // ¼Ó¼º ÀúÇ×·ü else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI28))) RenderTooltip_StringCode(tooltip_manager, 11484); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI31))) RenderTooltip_StringCode(tooltip_manager, 11481); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI29))) RenderTooltip_StringCode(tooltip_manager, 11483); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI30))) RenderTooltip_StringCode(tooltip_manager, 11482); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI27))) RenderTooltip_StringCode(tooltip_manager, 11485); // ±âº» ´É·ÂÄ¡ else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI14))) RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseSTR(), player_attributes->GetSTR(), true, 11560); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI16))) RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseDEX(), player_attributes->GetDEX(), true, 11561); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI18))) RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseVIT(), player_attributes->GetVIT(), true, 11562); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI20))) RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseINT(), player_attributes->GetINT(), true, 11563); else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI15))) RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseSPR(), player_attributes->GetSPR(), true, 11564); // ±âŸ ´É·ÂÄ¡ else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI09))) { // ¹°¸®°ø°Ý¼º°ø·ü int base_attack_rate = 0; if (g_pHero->GetWeaponInfo() != NULL) { base_attack_rate = g_pHero->GetWeaponInfo()->m_wPhyAttRate; } RenderTooltip_BaseAndCalc(tooltip_manager, base_attack_rate + player_attributes->GetBasePhysicalAttackRate(), player_attributes->GetPhysicalAttackRate()); } else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI12))) { // ¹°¸®°ø°ÝȸÇÇÀ² RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBasePhysicalAvoidRate(), player_attributes->GetPhysicalAvoidRate()); } else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI32))) { // À̵¿ ¼Óµµ #ifdef _NA_008486_20150914_TOTAL_BALANCE RenderTooltip_BaseAndCalc(tooltip_manager, ns_formula::CalcMoveSpeedRatio(0, 0, g_pHero->GetLevel()), player_attributes->GetMoveSpeedRatio()); #else RenderTooltip_BaseAndCalc(tooltip_manager, ns_formula::CalcMoveSpeedRatio(player_attributes->GetDEX(), 0, 0), player_attributes->GetMoveSpeedRatio()); #endif //_NA_008486_20150914_TOTAL_BALANCE } else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI13))) { // °ø°Ý ¼Óµµ int base_attack_speed = 0; if (g_pHero->GetWeaponInfo() != NULL) { base_attack_speed = g_pHero->GetWeaponInfo()->m_wPhyAttSpeed; } RenderTooltip_BaseAndCalc(tooltip_manager, ns_formula::CalcAttackSpeedRatio(g_pHero->GetClass(), g_pHero->GetWeaponKind(), player_attributes->GetDEX(), base_attack_speed, 0), player_attributes->GetAttSpeedRatio()); } else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI11))) { // Å©¸®Æ¼ÄÃÈ®·ü RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseCriticalRatioChange(), player_attributes->GetCriticalRatioChange()); } #ifdef _NA_008472_20150903_IMPROVED_BALANCE else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I003))) { // Å©¸®Æ¼Äà ÇǰÝÈ®·ü RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseEnemyCriticalRatioChange(), player_attributes->GetEnemyCriticalRatioChange()); } else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I004))) { // Å©¸®Æ¼Äà µ¥¹ÌÁöÁõ°¡ RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseCriticalDamageBonus(), player_attributes->GetCriticalDamageBonus()); } else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I005))) { // Å©¸®Æ¼Äà µ¥¹ÌÁöÁõ°¡(%) RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseCriticalDamageBonus(), player_attributes->GetRatioCriticalDamageBonus()); } #else else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I000))) { // Ãß°¡ ½ºÅ³ °ø°Ý·Â RenderTooltip_BaseAndCalc(tooltip_manager, player_attributes->GetBaseSkillAttackPower(), player_attributes->GetSkillAttackPower()); } #endif // _NA_008472_20150903_IMPROVED_BALANCE #ifdef _NA_002935_20110704_ITEM_SCORE else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I002))) { // 11478 : Àåºñ ÆòÁ¡ RenderTooltip_StringCode( tooltip_manager, 11478); } #endif //_NA_002935_20110704_ITEM_SCORE else if (IsOverControl(GetControlWZ_byPosition(kControl_Button_B003))) { if (GetControlWZ_byPosition(kControl_Button_B003)->GetState() == WZ_SHOW) { TCHAR limit_level[INTERFACE_STRING_LENGTH] = {0,}; TCHAR limit_count[INTERFACE_STRING_LENGTH] = {0,}; _itot(GameOptionParser::Instance()->GetFreeStatInitLevel(), limit_level, 10); _itot(g_pHero->GetCharInfo()->m_byFreeInitCount, limit_count, 10); // 6297 %s·¹º§±îÁö ¹«·á·Î ½ºÅݰú ½ºÅ³À» ÃʱâÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù.\nÇöÀç ³²Àº Ƚ¼ö : %sȸ TCHAR tooltip_text[INTERFACE_STRING_LENGTH] = {0,}; g_InterfaceManager.GetInterfaceStringFormat(tooltip_text, INTERFACE_STRING_LENGTH, 6297, limit_level, limit_count); tooltip_manager->RegisterTooltipSimpleText(tooltip_text); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } } } void uiCharacterStatusInfo::RenderTooltip_StringCode(uiToolTipMan* tooltip_manager, int StringCode ) { tooltip_manager->RegisterTooltipWithStringCode( StringCode ); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } void uiCharacterStatusInfo::RenderTooltip_BaseAndCalc(uiToolTipMan* tooltip_manager, int base_value, int calc_value, bool is_force /*= true*/, DWORD string_code /*= 0*/) { if ((base_value != calc_value) || (is_force == true)) { TCHAR tooltip_string[INTERFACE_STRING_LENGTH] = {NULL, }; if (string_code > 0) { g_InterfaceManager.GetInterfaceString(string_code, tooltip_string, INTERFACE_STRING_LENGTH); } if (calc_value >= base_value) { _tcscat(tooltip_string, _T("%d + %d")); } else { _tcscat(tooltip_string, _T("%d - %d")); } tooltip_manager->RegisterTooltipFormat(tooltip_string, base_value, abs(calc_value - base_value)); tooltip_manager->SetTooltipDialogID(GetDialogKey()); } } bool uiCharacterStatusInfo::OnLButtonClick( SI_MESSAGE* message ) { bool result = true; DWORD control_position = GetControlPosition_byID(message->dwCtrlID); switch (control_position) { case kControl_CheckBT_C000: #ifdef _NA_008472_20150903_IMPROVED_BALANCE case kControl_CheckBT_C003: #endif // _NA_008472_20150903_IMPROVED_BALANCE case kControl_CheckBT_C001: case kControl_CheckBT_C002: case kControl_CheckBT_C032: { uiCharacterStatusMan* ui_status_manager = GET_DIALOG_MANAGER(uiCharacterStatusMan, UIMAN_CHARACTERSTATUS); if (ui_status_manager != NULL) { TabCheckButtonControllManager& tab_manager = ui_status_manager->status_dialog_tab_manager(); tab_manager.OnClickTab(control_position - kControl_CheckBT_C000); } RefreshTab(); } break; case kControl_Button_B015: { // Æ÷ÀÎÆ® Àû¿ë ¹öư uiSystemMan* system_manager = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM); if (system_manager != NULL) { TCHAR message[INTERFACE_STRING_LENGTH] = {NULL, }; if ((g_pHero != NULL) && (g_pHero->IsTransForm() == TRUE)) { // 5139 º¯½Å »óÅ¿¡¼­´Â ÀÌ¿ëÀÌ °¡´ÉÇÏÁö ¾Ê½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5139, message ,INTERFACE_STRING_LENGTH); system_manager->Sys_VerifyLock(message); } else { // 2800 º¯°æÇÑ ½ºÅÈ Æ÷ÀÎÆ®¸¦ Àû¿ëÇϽðڽÀ´Ï±î? g_InterfaceManager.GetInterfaceString(2800, message, INTERFACE_STRING_LENGTH); system_manager->Sys_ConfirmLock(message, uiCharacterStatusInfo::CallbackSendPacketStatusStatApply); } } } break; case kControl_Button_B003: { TCHAR message[INTERFACE_STRING_LENGTH] = {NULL, }; if ((g_pHero != NULL) && (g_pHero->IsTransForm() == TRUE)) { uiSystemMan* system_manager = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM); if (system_manager != NULL) { // 5139 º¯½Å »óÅ¿¡¼­´Â ÀÌ¿ëÀÌ °¡´ÉÇÏÁö ¾Ê½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5139, message ,INTERFACE_STRING_LENGTH); system_manager->Sys_VerifyLock(message); } } else { TCHAR limit_level[INTERFACE_STRING_LENGTH] = {0,}; TCHAR limit_count[INTERFACE_STRING_LENGTH] = {0,}; _itot(GameOptionParser::Instance()->GetFreeStatInitLevel(), limit_level, 10); _itot(g_pHero->GetCharInfo()->m_byFreeInitCount, limit_count, 10); // 6291 %s ·¹º§±îÁö ¸ðµç ½ºÅÝÀ» 5ȸ ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ü, %s ·¹º§À» ÃʰúÇÏ¸é »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.\n ³²Àº Ƚ¼ö : %s ȸ TCHAR tooltip_text[INTERFACE_STRING_LENGTH] = {0,}; g_InterfaceManager.GetInterfaceStringFormat(tooltip_text, INTERFACE_STRING_LENGTH, 6291, limit_level, limit_level, limit_count); // ÃʱâÈ­ ¹öư uiSystemMan* system_manager = GET_DIALOG_MANAGER(uiSystemMan, UIMAN_SYSTEM); system_manager->Sys_Confirm(tooltip_text, GlobalFunc::SendStateInitSyn); } } break; default: { } break; } return result; } bool uiCharacterStatusInfo::OnLButtonDown(SI_MESSAGE* message) { bool result = true; UIControlPos control_position = static_cast(GetControlPosition_byID(message->dwCtrlID)); switch (control_position) { case kControl_Button_B000: case kControl_Button_B005: case kControl_Button_B002: case kControl_Button_B011: case kControl_Button_B004: case kControl_Button_B012: case kControl_Button_B006: case kControl_Button_B013: case kControl_Button_B001: case kControl_Button_B014: { if ((g_pHero != NULL) && (g_pHero->IsTransForm() == TRUE)) { uiSystemMan* system_main = (uiSystemMan *)g_InterfaceManager.GetUserInterfaceManager(UIMAN_SYSTEM); if (system_main != NULL) { TCHAR message[INTERFACE_STRING_LENGTH] = {NULL, }; // 5139 º¯½Å »óÅ¿¡¼­´Â ÀÌ¿ëÀÌ °¡´ÉÇÏÁö ¾Ê½À´Ï´Ù. g_InterfaceManager.GetInterfaceString(5139, message ,INTERFACE_STRING_LENGTH); system_main->Sys_VerifyLock(message); } } else { simulation_info().pressed_button_time = clock_function::GetTickCount(); simulation_info().pressed_button_index = control_position; UpdateSimulationPlayerAttributes(control_position, 1); } } break; default: { } } return result; } bool uiCharacterStatusInfo::OnLButtonUp( SI_MESSAGE* message ) { bool result = true; simulation_info().pressed_button_time = clock_function::GetTickCount(); simulation_info().pressed_button_index = kControl_Size; return result; } bool uiCharacterStatusInfo::IsMaxParameterCaption(UIControlPos control_position, IN OUT int& calc_value) { PlayerAttributes* player_attributes = &(simulation_info().simulation_player_attributes); int attribute_max_value = 0; bool check_enable = false; //ÃÖ´ë°ª Á¶»ç switch(control_position) { case kControl_TextImage_TI14: //Èû attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_STR); check_enable = true; break; case kControl_TextImage_TI16: //¹Îø attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_DEX); check_enable = true; break; case kControl_TextImage_TI18: //ü·Â attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_VIT); check_enable = true; break; case kControl_TextImage_TI20: //Áö·Â attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_INT); check_enable = true; break; case kControl_TextImage_TI15: //Á¤½Å·Â attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_SPR); check_enable = true; break; //case kControl_TextImage_TI32: //À̵¿¼Óµµ // attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_MOVE_SPEED); // check_enable = true; // break; //case kControl_TextImage_TI13: //°ø°Ý¼Óµµ // attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_ATTACK_SPEED); // check_enable = true; // break; //case kControl_TextImage_I000: //½ºÅ³°­È­·Â // attribute_max_value = player_attributes->GetAttrMaxBoundValue(eATTR_ADD_SKILL_ATTACK_POWER); // check_enable = true; // break; // 2011. 08. 22 / ¼ÛÂùÁ¾ // MAX °ªÀº º¯ÇÒ ¼ö ÀÖ´Â °ªÀ̹ǷΠµ¥ÀÌÅÍ·Î½á °ü¸®ÇØ¾ß ÇÏÁö¸¸, Àӽ÷ΠÁ÷Á¢ °ªÀ» ÀÔ·ÂÇÔ // ±âȹÀÚ¿Í ÇùÀÇÇÏ°í ¼öÁ¤ ÇÊ¿äÇÔ #ifdef _NA_005010_20120621_RATE_OF_DEFENCE_SUCCESS_MODIFY case kControl_TextImage_TI12: // ¹æ¾î ¼º°ø·ü attribute_max_value = ATTRUBUTE_MAX_PHYSICAL_AVOID_RATE; check_enable = true; break; case kControl_TextImage_TI09: // °ø°Ý ¼º°ø·ü attribute_max_value = ATTRUBUTE_MAX_PHYSICAL_ATTACK_RATE; check_enable = true; break; #else case kControl_TextImage_TI12: // ¹æ¾î ¼º°ø·ü case kControl_TextImage_TI09: // °ø°Ý ¼º°ø·ü attribute_max_value = ATTRUBUTE_MAX_PHYSICAL_ATTACK_AND_AVOID_RATE; check_enable = true; break; #endif //_NA_005010_20120621_RATE_OF_DEFENCE_SUCCESS_MODIFY case kControl_TextImage_TI11: // Å©¸®Æ¼Äà Ȯ·ü attribute_max_value = ATTRUBUTE_MAX_PHYSICAL_CRITICAL_RATIO; check_enable = true; break; case kControl_TextImage_TI28: // È­ ÀúÇ× case kControl_TextImage_TI31: // ¼ö ÀúÇ× case kControl_TextImage_TI29: // Áö ÀúÇ× case kControl_TextImage_TI30: // dz ÀúÇ× case kControl_TextImage_TI27: // ¾Ï ÀúÇ× attribute_max_value = ATTRUBUTE_MAX_REDUCE_ELEMENT_DAMAGE_RATIO; check_enable = true; break; //¿ø¼Ò ÀúÇ×À²Àº ¹«Á¦ÇÑ #ifdef _NA_002935_20110704_ITEM_SCORE case kControl_TextImage_I002: // ÀåºñÆòÁ¡ attribute_max_value = kItemScoreMax; check_enable = true; #endif //_NA_002935_20110704_ITEM_SCORE } if ((check_enable == true) && (attribute_max_value <= calc_value)) { calc_value = attribute_max_value; return true; } return false; } #endif //_NA_003027_20111013_HONOR_SYSTEM #ifdef _NA_008472_20150903_IMPROVED_BALANCE void uiCharacterStatusInfo::ShowWindowRefreshSimulation() { RefreshSimulationPlayerAttributes(); } #endif // _NA_008472_20150903_IMPROVED_BALANCE