891 lines
37 KiB
C++
891 lines
37 KiB
C++
#include "SunClientPrecompiledHeader.h"
|
|
#ifdef _NA_003027_20111013_HONOR_SYSTEM
|
|
#include "uiCharacterStatusSockecInfo.h"
|
|
#include "uiCharacterStatus/uiCharacterStatusMain.h"
|
|
#include "uiCharacterStatusMan/uiCharacterStatusMan.h"
|
|
#include "uiToolTipMan/uiToolTipMan.h"
|
|
#include "Hero.h"
|
|
#include "SCItemSlot.h"
|
|
#include "OptionListParser.h"
|
|
#include "HeroEquipmentContainer.h"
|
|
#include "ItemUnitRenderer.h"
|
|
#include "GlobalFunc.h"
|
|
|
|
const DWORD uiCharacterStatusSockecInfo::kDialog_ID = StrToWzID("0403");
|
|
|
|
namespace
|
|
{
|
|
bool SortSocketOptionByOptionPoint(const ItemAttrCalculator::SocketOptionCalculator::CalculationResult& lhs,
|
|
const ItemAttrCalculator::SocketOptionCalculator::CalculationResult& lhr)
|
|
{
|
|
return (lhs.option_point > lhr.option_point);
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
int GetRowSocketOptionByOptionPoint(const eATTR_TYPE attr_type,
|
|
uiCharacterStatusSockecInfo::SocketOptionVector& socketcount_vector)
|
|
{
|
|
uiCharacterStatusSockecInfo::SocketOptionVector::iterator begin = socketcount_vector.begin();
|
|
uiCharacterStatusSockecInfo::SocketOptionVector::iterator end = socketcount_vector.end();
|
|
|
|
for (int i = 0; begin != end; ++begin, ++i)
|
|
{
|
|
if (begin->attr_option_code == attr_type)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
int GetColSocketOptionByAttribite(eEQUIPCONTAINER_POS equip_position)
|
|
{
|
|
switch (equip_position)
|
|
{
|
|
case eEQUIPCONTAINER_WEAPON: return 0;
|
|
case eEQUIPCONTAINER_ARMOR: return 1;
|
|
case eEQUIPCONTAINER_PROTECTOR: return 2;
|
|
case eEQUIPCONTAINER_HELMET: return 3;
|
|
case eEQUIPCONTAINER_PANTS: return 4;
|
|
case eEQUIPCONTAINER_BOOTS: return 5;
|
|
case eEQUIPCONTAINER_GLOVE: return 6;
|
|
case eEQUIPCONTAINER_BELT: return 7;
|
|
case eEQUIPCONTAINER_SHIRTS: return 8;
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
WzColor GetSocketOptionTextColor(int val)
|
|
{
|
|
WzColor text_color = WzColor_RGBA(255,255,255,255);
|
|
|
|
if (val > 0)
|
|
{
|
|
text_color = WzColor_RGBA(0,255,0,255);
|
|
}
|
|
else if (val < 0)
|
|
{
|
|
text_color = WzColor_RGBA(0,0,255,255);
|
|
}
|
|
|
|
return text_color;
|
|
}
|
|
};
|
|
|
|
uiCharacterStatusSockecInfo::uiCharacterStatusSockecInfo(InterfaceManager* interface_manager):
|
|
uiBase(interface_manager)
|
|
{
|
|
}
|
|
|
|
uiCharacterStatusSockecInfo::~uiCharacterStatusSockecInfo()
|
|
{
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::Init( CDrawBase* draw_base )
|
|
{
|
|
RegisterControlPosition(StrToWzID("C000"), kControl_CheckBT_C000);
|
|
#ifdef _NA_008472_20150903_IMPROVED_BALANCE
|
|
RegisterControlPosition(StrToWzID("C004"), kControl_CheckBT_C004);
|
|
#endif // _NA_008472_20150903_IMPROVED_BALANCE
|
|
RegisterControlPosition(StrToWzID("C001"), kControl_CheckBT_C001);
|
|
RegisterControlPosition(StrToWzID("C002"), kControl_CheckBT_C002);
|
|
RegisterControlPosition(StrToWzID("C003"), kControl_CheckBT_C003);
|
|
RegisterControlPosition(StrToWzID("S006"), kControl_Text_S006);
|
|
RegisterControlPosition(StrToWzID("S007"), kControl_Text_S007);
|
|
RegisterControlPosition(StrToWzID("S008"), kControl_Text_S008);
|
|
RegisterControlPosition(StrToWzID("S009"), kControl_Text_S009);
|
|
RegisterControlPosition(StrToWzID("S010"), kControl_Text_S010);
|
|
RegisterControlPosition(StrToWzID("S011"), kControl_Text_S011);
|
|
RegisterControlPosition(StrToWzID("S012"), kControl_Text_S012);
|
|
RegisterControlPosition(StrToWzID("S013"), kControl_Text_S013);
|
|
RegisterControlPosition(StrToWzID("S014"), kControl_Text_S014);
|
|
RegisterControlPosition(StrToWzID("S015"), kControl_Text_S015);
|
|
RegisterControlPosition(StrToWzID("S016"), kControl_Text_S016);
|
|
RegisterControlPosition(StrToWzID("S017"), kControl_Text_S017);
|
|
RegisterControlPosition(StrToWzID("S018"), kControl_Text_S018);
|
|
RegisterControlPosition(StrToWzID("S019"), kControl_Text_S019);
|
|
RegisterControlPosition(StrToWzID("S020"), kControl_Text_S020);
|
|
RegisterControlPosition(StrToWzID("S000"), kControl_Text_S000);
|
|
RegisterControlPosition(StrToWzID("S021"), kControl_Text_S021);
|
|
RegisterControlPosition(StrToWzID("S022"), kControl_Text_S022);
|
|
RegisterControlPosition(StrToWzID("S023"), kControl_Text_S023);
|
|
RegisterControlPosition(StrToWzID("S024"), kControl_Text_S024);
|
|
RegisterControlPosition(StrToWzID("S025"), kControl_Text_S025);
|
|
RegisterControlPosition(StrToWzID("S026"), kControl_Text_S026);
|
|
RegisterControlPosition(StrToWzID("S027"), kControl_Text_S027);
|
|
RegisterControlPosition(StrToWzID("S028"), kControl_Text_S028);
|
|
RegisterControlPosition(StrToWzID("S029"), kControl_Text_S029);
|
|
RegisterControlPosition(StrToWzID("S031"), kControl_Text_S031);
|
|
RegisterControlPosition(StrToWzID("S032"), kControl_Text_S032);
|
|
RegisterControlPosition(StrToWzID("S033"), kControl_Text_S033);
|
|
RegisterControlPosition(StrToWzID("S034"), kControl_Text_S034);
|
|
RegisterControlPosition(StrToWzID("S035"), kControl_Text_S035);
|
|
RegisterControlPosition(StrToWzID("S036"), kControl_Text_S036);
|
|
RegisterControlPosition(StrToWzID("S037"), kControl_Text_S037);
|
|
RegisterControlPosition(StrToWzID("S038"), kControl_Text_S038);
|
|
RegisterControlPosition(StrToWzID("S039"), kControl_Text_S039);
|
|
RegisterControlPosition(StrToWzID("S041"), kControl_Text_S041);
|
|
RegisterControlPosition(StrToWzID("S042"), kControl_Text_S042);
|
|
RegisterControlPosition(StrToWzID("S043"), kControl_Text_S043);
|
|
RegisterControlPosition(StrToWzID("S044"), kControl_Text_S044);
|
|
RegisterControlPosition(StrToWzID("S045"), kControl_Text_S045);
|
|
RegisterControlPosition(StrToWzID("S046"), kControl_Text_S046);
|
|
RegisterControlPosition(StrToWzID("S047"), kControl_Text_S047);
|
|
RegisterControlPosition(StrToWzID("S048"), kControl_Text_S048);
|
|
RegisterControlPosition(StrToWzID("S049"), kControl_Text_S049);
|
|
RegisterControlPosition(StrToWzID("S051"), kControl_Text_S051);
|
|
RegisterControlPosition(StrToWzID("S052"), kControl_Text_S052);
|
|
RegisterControlPosition(StrToWzID("S053"), kControl_Text_S053);
|
|
RegisterControlPosition(StrToWzID("S054"), kControl_Text_S054);
|
|
RegisterControlPosition(StrToWzID("S055"), kControl_Text_S055);
|
|
RegisterControlPosition(StrToWzID("S056"), kControl_Text_S056);
|
|
RegisterControlPosition(StrToWzID("S057"), kControl_Text_S057);
|
|
RegisterControlPosition(StrToWzID("S058"), kControl_Text_S058);
|
|
RegisterControlPosition(StrToWzID("S059"), kControl_Text_S059);
|
|
RegisterControlPosition(StrToWzID("S061"), kControl_Text_S061);
|
|
RegisterControlPosition(StrToWzID("S062"), kControl_Text_S062);
|
|
RegisterControlPosition(StrToWzID("S063"), kControl_Text_S063);
|
|
RegisterControlPosition(StrToWzID("S064"), kControl_Text_S064);
|
|
RegisterControlPosition(StrToWzID("S065"), kControl_Text_S065);
|
|
RegisterControlPosition(StrToWzID("S066"), kControl_Text_S066);
|
|
RegisterControlPosition(StrToWzID("S067"), kControl_Text_S067);
|
|
RegisterControlPosition(StrToWzID("S068"), kControl_Text_S068);
|
|
RegisterControlPosition(StrToWzID("S069"), kControl_Text_S069);
|
|
RegisterControlPosition(StrToWzID("S071"), kControl_Text_S071);
|
|
RegisterControlPosition(StrToWzID("S072"), kControl_Text_S072);
|
|
RegisterControlPosition(StrToWzID("S073"), kControl_Text_S073);
|
|
RegisterControlPosition(StrToWzID("S074"), kControl_Text_S074);
|
|
RegisterControlPosition(StrToWzID("S075"), kControl_Text_S075);
|
|
RegisterControlPosition(StrToWzID("S076"), kControl_Text_S076);
|
|
RegisterControlPosition(StrToWzID("S077"), kControl_Text_S077);
|
|
RegisterControlPosition(StrToWzID("S078"), kControl_Text_S078);
|
|
RegisterControlPosition(StrToWzID("S079"), kControl_Text_S079);
|
|
RegisterControlPosition(StrToWzID("S081"), kControl_Text_S081);
|
|
RegisterControlPosition(StrToWzID("S082"), kControl_Text_S082);
|
|
RegisterControlPosition(StrToWzID("S083"), kControl_Text_S083);
|
|
RegisterControlPosition(StrToWzID("S084"), kControl_Text_S084);
|
|
RegisterControlPosition(StrToWzID("S085"), kControl_Text_S085);
|
|
RegisterControlPosition(StrToWzID("S086"), kControl_Text_S086);
|
|
RegisterControlPosition(StrToWzID("S087"), kControl_Text_S087);
|
|
RegisterControlPosition(StrToWzID("S088"), kControl_Text_S088);
|
|
RegisterControlPosition(StrToWzID("S089"), kControl_Text_S089);
|
|
RegisterControlPosition(StrToWzID("S091"), kControl_Text_S091);
|
|
RegisterControlPosition(StrToWzID("S092"), kControl_Text_S092);
|
|
RegisterControlPosition(StrToWzID("S093"), kControl_Text_S093);
|
|
RegisterControlPosition(StrToWzID("S094"), kControl_Text_S094);
|
|
RegisterControlPosition(StrToWzID("S095"), kControl_Text_S095);
|
|
RegisterControlPosition(StrToWzID("S096"), kControl_Text_S096);
|
|
RegisterControlPosition(StrToWzID("S097"), kControl_Text_S097);
|
|
RegisterControlPosition(StrToWzID("S098"), kControl_Text_S098);
|
|
RegisterControlPosition(StrToWzID("S099"), kControl_Text_S099);
|
|
RegisterControlPosition(StrToWzID("S101"), kControl_Text_S101);
|
|
RegisterControlPosition(StrToWzID("S102"), kControl_Text_S102);
|
|
RegisterControlPosition(StrToWzID("S103"), kControl_Text_S103);
|
|
RegisterControlPosition(StrToWzID("S104"), kControl_Text_S104);
|
|
RegisterControlPosition(StrToWzID("S105"), kControl_Text_S105);
|
|
RegisterControlPosition(StrToWzID("S106"), kControl_Text_S106);
|
|
RegisterControlPosition(StrToWzID("S107"), kControl_Text_S107);
|
|
RegisterControlPosition(StrToWzID("S108"), kControl_Text_S108);
|
|
RegisterControlPosition(StrToWzID("S109"), kControl_Text_S109);
|
|
RegisterControlPosition(StrToWzID("S111"), kControl_Text_S111);
|
|
RegisterControlPosition(StrToWzID("S112"), kControl_Text_S112);
|
|
RegisterControlPosition(StrToWzID("S113"), kControl_Text_S113);
|
|
RegisterControlPosition(StrToWzID("S114"), kControl_Text_S114);
|
|
RegisterControlPosition(StrToWzID("S115"), kControl_Text_S115);
|
|
RegisterControlPosition(StrToWzID("S116"), kControl_Text_S116);
|
|
RegisterControlPosition(StrToWzID("S117"), kControl_Text_S117);
|
|
RegisterControlPosition(StrToWzID("S118"), kControl_Text_S118);
|
|
RegisterControlPosition(StrToWzID("S119"), kControl_Text_S119);
|
|
RegisterControlPosition(StrToWzID("S121"), kControl_Text_S121);
|
|
RegisterControlPosition(StrToWzID("S122"), kControl_Text_S122);
|
|
RegisterControlPosition(StrToWzID("S123"), kControl_Text_S123);
|
|
RegisterControlPosition(StrToWzID("S124"), kControl_Text_S124);
|
|
RegisterControlPosition(StrToWzID("S125"), kControl_Text_S125);
|
|
RegisterControlPosition(StrToWzID("S126"), kControl_Text_S126);
|
|
RegisterControlPosition(StrToWzID("S127"), kControl_Text_S127);
|
|
RegisterControlPosition(StrToWzID("S128"), kControl_Text_S128);
|
|
RegisterControlPosition(StrToWzID("S129"), kControl_Text_S129);
|
|
RegisterControlPosition(StrToWzID("S131"), kControl_Text_S131);
|
|
RegisterControlPosition(StrToWzID("S132"), kControl_Text_S132);
|
|
RegisterControlPosition(StrToWzID("S133"), kControl_Text_S133);
|
|
RegisterControlPosition(StrToWzID("S134"), kControl_Text_S134);
|
|
RegisterControlPosition(StrToWzID("S135"), kControl_Text_S135);
|
|
RegisterControlPosition(StrToWzID("S136"), kControl_Text_S136);
|
|
RegisterControlPosition(StrToWzID("S137"), kControl_Text_S137);
|
|
RegisterControlPosition(StrToWzID("S138"), kControl_Text_S138);
|
|
RegisterControlPosition(StrToWzID("S139"), kControl_Text_S139);
|
|
RegisterControlPosition(StrToWzID("S141"), kControl_Text_S141);
|
|
RegisterControlPosition(StrToWzID("S142"), kControl_Text_S142);
|
|
RegisterControlPosition(StrToWzID("S143"), kControl_Text_S143);
|
|
RegisterControlPosition(StrToWzID("S144"), kControl_Text_S144);
|
|
RegisterControlPosition(StrToWzID("S145"), kControl_Text_S145);
|
|
RegisterControlPosition(StrToWzID("S146"), kControl_Text_S146);
|
|
RegisterControlPosition(StrToWzID("S147"), kControl_Text_S147);
|
|
RegisterControlPosition(StrToWzID("S148"), kControl_Text_S148);
|
|
RegisterControlPosition(StrToWzID("S149"), kControl_Text_S149);
|
|
RegisterControlPosition(StrToWzID("S151"), kControl_Text_S151);
|
|
RegisterControlPosition(StrToWzID("S152"), kControl_Text_S152);
|
|
RegisterControlPosition(StrToWzID("S153"), kControl_Text_S153);
|
|
RegisterControlPosition(StrToWzID("S154"), kControl_Text_S154);
|
|
RegisterControlPosition(StrToWzID("S155"), kControl_Text_S155);
|
|
RegisterControlPosition(StrToWzID("S156"), kControl_Text_S156);
|
|
RegisterControlPosition(StrToWzID("S157"), kControl_Text_S157);
|
|
RegisterControlPosition(StrToWzID("S158"), kControl_Text_S158);
|
|
RegisterControlPosition(StrToWzID("S159"), kControl_Text_S159);
|
|
RegisterControlPosition(StrToWzID("S161"), kControl_Text_S161);
|
|
RegisterControlPosition(StrToWzID("S162"), kControl_Text_S162);
|
|
RegisterControlPosition(StrToWzID("S163"), kControl_Text_S163);
|
|
RegisterControlPosition(StrToWzID("S164"), kControl_Text_S164);
|
|
RegisterControlPosition(StrToWzID("S165"), kControl_Text_S165);
|
|
RegisterControlPosition(StrToWzID("S166"), kControl_Text_S166);
|
|
RegisterControlPosition(StrToWzID("S167"), kControl_Text_S167);
|
|
RegisterControlPosition(StrToWzID("S168"), kControl_Text_S168);
|
|
RegisterControlPosition(StrToWzID("S169"), kControl_Text_S169);
|
|
RegisterControlPosition(StrToWzID("S171"), kControl_Text_S171);
|
|
RegisterControlPosition(StrToWzID("S172"), kControl_Text_S172);
|
|
RegisterControlPosition(StrToWzID("S173"), kControl_Text_S173);
|
|
RegisterControlPosition(StrToWzID("S174"), kControl_Text_S174);
|
|
RegisterControlPosition(StrToWzID("S175"), kControl_Text_S175);
|
|
RegisterControlPosition(StrToWzID("S176"), kControl_Text_S176);
|
|
RegisterControlPosition(StrToWzID("S177"), kControl_Text_S177);
|
|
RegisterControlPosition(StrToWzID("S178"), kControl_Text_S178);
|
|
RegisterControlPosition(StrToWzID("S179"), kControl_Text_S179);
|
|
RegisterControlPosition(StrToWzID("S030"), kControl_Text_S030);
|
|
RegisterControlPosition(StrToWzID("S040"), kControl_Text_S040);
|
|
RegisterControlPosition(StrToWzID("S050"), kControl_Text_S050);
|
|
RegisterControlPosition(StrToWzID("S060"), kControl_Text_S060);
|
|
RegisterControlPosition(StrToWzID("S070"), kControl_Text_S070);
|
|
RegisterControlPosition(StrToWzID("S080"), kControl_Text_S080);
|
|
RegisterControlPosition(StrToWzID("S090"), kControl_Text_S090);
|
|
RegisterControlPosition(StrToWzID("S100"), kControl_Text_S100);
|
|
RegisterControlPosition(StrToWzID("S110"), kControl_Text_S110);
|
|
RegisterControlPosition(StrToWzID("S120"), kControl_Text_S120);
|
|
RegisterControlPosition(StrToWzID("S130"), kControl_Text_S130);
|
|
RegisterControlPosition(StrToWzID("S140"), kControl_Text_S140);
|
|
RegisterControlPosition(StrToWzID("S150"), kControl_Text_S150);
|
|
RegisterControlPosition(StrToWzID("S160"), kControl_Text_S160);
|
|
RegisterControlPosition(StrToWzID("S170"), kControl_Text_S170);
|
|
RegisterControlPosition(StrToWzID("S180"), kControl_Text_S180);
|
|
RegisterControlPosition(StrToWzID("S201"), kControl_Text_S201);
|
|
RegisterControlPosition(StrToWzID("S202"), kControl_Text_S202);
|
|
RegisterControlPosition(StrToWzID("S203"), kControl_Text_S203);
|
|
RegisterControlPosition(StrToWzID("S204"), kControl_Text_S204);
|
|
RegisterControlPosition(StrToWzID("S205"), kControl_Text_S205);
|
|
RegisterControlPosition(StrToWzID("S206"), kControl_Text_S206);
|
|
RegisterControlPosition(StrToWzID("S207"), kControl_Text_S207);
|
|
RegisterControlPosition(StrToWzID("S208"), kControl_Text_S208);
|
|
RegisterControlPosition(StrToWzID("S209"), kControl_Text_S209);
|
|
RegisterControlPosition(StrToWzID("S210"), kControl_Text_S210);
|
|
RegisterControlPosition(StrToWzID("S211"), kControl_Text_S211);
|
|
RegisterControlPosition(StrToWzID("S212"), kControl_Text_S212);
|
|
RegisterControlPosition(StrToWzID("S213"), kControl_Text_S213);
|
|
RegisterControlPosition(StrToWzID("S214"), kControl_Text_S214);
|
|
RegisterControlPosition(StrToWzID("S215"), kControl_Text_S215);
|
|
RegisterControlPosition(StrToWzID("S216"), kControl_Text_S216);
|
|
RegisterControlPosition(StrToWzID("V000"), kControl_VScroll_V000);
|
|
RegisterControlPosition(StrToWzID("P035"), kControl_Picture_P035);
|
|
RegisterControlPosition(StrToWzID("P043"), kControl_Picture_P043);
|
|
RegisterControlPosition(StrToWzID("P044"), kControl_Picture_P044);
|
|
RegisterControlPosition(StrToWzID("P045"), kControl_Picture_P045);
|
|
RegisterControlPosition(StrToWzID("P046"), kControl_Picture_P046);
|
|
RegisterControlPosition(StrToWzID("P047"), kControl_Picture_P047);
|
|
RegisterControlPosition(StrToWzID("P048"), kControl_Picture_P048);
|
|
RegisterControlPosition(StrToWzID("P049"), kControl_Picture_P049);
|
|
RegisterControlPosition(StrToWzID("P050"), kControl_Picture_P050);
|
|
|
|
for (DWORD control_position = kControl_Text_S006; control_position <= kControl_Text_S216; ++control_position)
|
|
{
|
|
GetControlWZ_byPosition(control_position)->SetTextWZ("");
|
|
}
|
|
|
|
socket_option_show_begin_index_ = 0;
|
|
socketoption_vector().clear();
|
|
|
|
CCtrlVScrollWZ* scroll_control = static_cast<CCtrlVScrollWZ*>(GetControlWZ_byPosition(kControl_VScroll_V000));
|
|
if (scroll_control != NULL)
|
|
{
|
|
scroll_control->SetScrollRangeWZ(0, 0);
|
|
scroll_control->SetScrollPosWZ(0);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::Release()
|
|
{
|
|
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::OnShowWindow(BOOL is_show)
|
|
{
|
|
if (is_show == TRUE)
|
|
{
|
|
CCtrlVScrollWZ* scroll_control = static_cast<CCtrlVScrollWZ*>(GetControlWZ_byPosition(kControl_VScroll_V000));
|
|
if (scroll_control != NULL)
|
|
{
|
|
socket_option_show_begin_index_ = 0;
|
|
scroll_control->SetScrollRangeWZ(0, 0);
|
|
scroll_control->SetScrollPosWZ(0);
|
|
scroll_control->SetChangeSizeThumb(100);
|
|
socketoption_vector().clear();
|
|
}
|
|
RefreshTab();
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::MessageProc(SI_MESSAGE* message)
|
|
{
|
|
if (IsLock())
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (GetMan() == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
switch (message->eResultMsg)
|
|
{
|
|
case RT_MSG_LBUTTONCLICK:
|
|
OnLButtonClick(message);
|
|
break;
|
|
case RT_MSG_SB_LINETOP:
|
|
OnVScrollUp(static_cast<CCtrlVScrollWZ*>(GetControlWZ(message->dwCtrlID)));
|
|
break;
|
|
case RT_MSG_SB_LINEBOTTOM:
|
|
OnVScrollDown(static_cast<CCtrlVScrollWZ*>(GetControlWZ(message->dwCtrlID)));
|
|
break;
|
|
case RT_MSG_SB_THUMBTRACK:
|
|
case RT_MSG_SB_THUMBPOSITION:
|
|
case RT_MSG_SB_ENDSCROLL:
|
|
OnVScrollThumb(static_cast<CCtrlVScrollWZ*>(GetControlWZ(message->dwCtrlID)));
|
|
break;
|
|
default:
|
|
SolarDialog::MessageProc(message);
|
|
break;
|
|
}
|
|
}
|
|
|
|
bool uiCharacterStatusSockecInfo::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_C004:
|
|
#endif // _NA_008472_20150903_IMPROVED_BALANCE
|
|
case kControl_CheckBT_C001:
|
|
case kControl_CheckBT_C002:
|
|
case kControl_CheckBT_C003:
|
|
{
|
|
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;
|
|
default:
|
|
{
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::OnUpdateSolarDialog()
|
|
{
|
|
UpdateMouseWheel();
|
|
|
|
if (GetDialogWZ()->HaveFocus() == true)
|
|
{
|
|
GlobalFunc::MoveToTopDialog(uiCharacterStatusMain::kDialog_ID);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::OnRenderSolarDialog()
|
|
{
|
|
for (int control_position = kControl_Text_S006; control_position <= kControl_Text_S216; ++control_position)
|
|
{
|
|
GetControlWZ_byPosition(control_position)->SetTextWZ("");
|
|
}
|
|
|
|
int backup_cur_apply_socket_count = socketoption_vector().size();
|
|
socketoption_vector().clear();
|
|
CalcTotalSocketOption(socketoption_vector());
|
|
|
|
//------------------------------------------------------------------------------
|
|
//! ���� �ɼ��� �ٲ������� ��ũ�ѹ� ����.
|
|
if (backup_cur_apply_socket_count != socketoption_vector().size())
|
|
{
|
|
set_socket_option_show_begin_index(0);
|
|
|
|
backup_cur_apply_socket_count = socketoption_vector().size();
|
|
|
|
CCtrlVScrollWZ* scroll_control = static_cast<CCtrlVScrollWZ*>(GetControlWZ_byPosition(kControl_VScroll_V000));
|
|
if (scroll_control != NULL)
|
|
{
|
|
// ��ũ�� �� ������Ʈ
|
|
int max_num = max(0, backup_cur_apply_socket_count - kSocketOptionShowRowCount);
|
|
|
|
scroll_control->SetScrollRangeWZ(0, max_num);
|
|
scroll_control->SetScrollPosWZ(socket_option_show_begin_index());
|
|
|
|
int thumb_size = 100 / (max_num + 1);
|
|
scroll_control->SetChangeSizeThumb(thumb_size);
|
|
}
|
|
}
|
|
//------------------------------------------------------------------------------
|
|
|
|
//! ������������ ����
|
|
std::sort(socketoption_vector().begin(), socketoption_vector().end(), SortSocketOptionByOptionPoint);
|
|
|
|
//! ������ ����
|
|
UpdateSocketOptionName(socketoption_vector());
|
|
|
|
//------------------------------------------------------------------------------
|
|
HeroEquipmentContainer* equip_container = static_cast<HeroEquipmentContainer*>(g_pHero->GetHeroEquipContainer());
|
|
ItemUnitRenderer::RenderUnit * render_unit = NULL;
|
|
ItemUnitRenderer* item_renderer = equip_container->GetItemUnitRender();
|
|
uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP);
|
|
SCItemSlot* item_slot_back_up = NULL;
|
|
|
|
item_renderer->GetItemUnitHashTable()->SetFirst();
|
|
while (render_unit = item_renderer->GetItemUnitHashTable()->GetNext())
|
|
{
|
|
if ((render_unit->m_pIconImage == NULL) ||
|
|
(render_unit->m_pRefSlot == NULL) ||
|
|
(render_unit->m_pRefSlot->GetSlotType() != ST_ITEM))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
SCItemSlot* item_slot = (SCItemSlot*)(render_unit->m_pRefSlot);
|
|
|
|
int col_index = GetColSocketOptionByAttribite(static_cast<eEQUIPCONTAINER_POS>(item_slot->GetItemInfo()->m_wEqPos));
|
|
|
|
if ((col_index >= 0) && (col_index < kSocketOptionShowColCount))
|
|
{
|
|
UpdateSocketOptionValue(item_slot, col_index, socketoption_vector());
|
|
|
|
RECT area_rect = GetControlWZ_byPosition(kControl_Picture_P035 + col_index)->GetSizeRect();
|
|
render_unit->m_pIconImage->Render(&area_rect);
|
|
|
|
//���� ����
|
|
if (IsOverControl(GetControlWZ_byPosition(kControl_Picture_P035 + col_index)))
|
|
{
|
|
item_slot_back_up = item_slot;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// ���� ����
|
|
if (this->IsLocked() == false)
|
|
{
|
|
RenderTooltip_SocketOption(socketoption_vector());
|
|
|
|
if (item_slot_back_up != NULL)
|
|
{
|
|
tooltip_manager->RegisterSlotInfoTooltip(item_slot_back_up);
|
|
tooltip_manager->SetTooltipDialogID(GetDialogKey());
|
|
}
|
|
}
|
|
}
|
|
|
|
bool uiCharacterStatusSockecInfo::OnVScrollUp(CCtrlVScrollWZ* scroll_control)
|
|
{
|
|
bool result = true;
|
|
if (scroll_control == NULL)
|
|
{
|
|
result = false;
|
|
return result;
|
|
}
|
|
|
|
int pos = scroll_control->GetScrollPosWZ();
|
|
int mmin = 0, mmax = 0;
|
|
scroll_control->GetScrollRangeWZ(&mmin, &mmax);
|
|
if(pos > mmin)
|
|
{
|
|
--pos;
|
|
scroll_control->SetScrollPosWZ(pos);
|
|
}
|
|
|
|
DWORD control_index = GetControlPosition_byID(scroll_control->GetCtrlID());
|
|
if (control_index == kControl_VScroll_V000)
|
|
{
|
|
set_socket_option_show_begin_index(pos);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
bool uiCharacterStatusSockecInfo::OnVScrollDown(CCtrlVScrollWZ* scroll_control)
|
|
{
|
|
bool result = true;
|
|
if (scroll_control == NULL)
|
|
{
|
|
result = false;
|
|
return result;
|
|
}
|
|
|
|
int pos = scroll_control->GetScrollPosWZ();
|
|
int mmin = 0, mmax = 0;
|
|
scroll_control->GetScrollRangeWZ(&mmin, &mmax);
|
|
|
|
if (pos < mmax)
|
|
{
|
|
++pos;
|
|
scroll_control->SetScrollPosWZ(pos);
|
|
}
|
|
|
|
DWORD control_index = GetControlPosition_byID(scroll_control->GetCtrlID());
|
|
if (control_index == kControl_VScroll_V000)
|
|
{
|
|
set_socket_option_show_begin_index(pos);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
bool uiCharacterStatusSockecInfo::OnVScrollThumb(CCtrlVScrollWZ* scroll_control)
|
|
{
|
|
bool result = true;
|
|
if (scroll_control == NULL)
|
|
{
|
|
result = false;
|
|
return result;
|
|
}
|
|
|
|
int pos2 = scroll_control->GetScrollPosWZ();
|
|
int pos = pos2;
|
|
int mmin = 0, mmax = 0;
|
|
scroll_control->GetScrollRangeWZ(&mmin, &mmax);
|
|
|
|
pos = max(mmin, pos);
|
|
pos = min(mmax, pos);
|
|
|
|
if(pos != pos2)
|
|
{
|
|
scroll_control->SetScrollPosWZ(pos);
|
|
}
|
|
|
|
DWORD control_index = GetControlPosition_byID(scroll_control->GetCtrlID());
|
|
if (control_index == kControl_VScroll_V000)
|
|
{
|
|
set_socket_option_show_begin_index(pos);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::RefreshTab()
|
|
{
|
|
CCtrlButtonCheckWZ* check_button = NULL;
|
|
for (int position = kControl_CheckBT_C000; position < (kControl_CheckBT_C003 + 1); ++position)
|
|
{
|
|
check_button =
|
|
static_cast<CCtrlButtonCheckWZ*>(GetControlWZ(GetControlID_byPosition(position)));
|
|
if (check_button == NULL)
|
|
{
|
|
continue;
|
|
}
|
|
check_button->SetCheckState((position == kControl_CheckBT_C001) ? (true) : (false));
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::UpdateSocketOptionValue(SCItemSlot* item_slot,
|
|
int col,
|
|
IN uiCharacterStatusSockecInfo::SocketOptionVector& socketcount_vector)
|
|
{
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResultMap socket_option_calc_result;
|
|
if (ItemAttrCalculator::SocketOptionCalculator::CalculateItemOptionPoint(*item_slot, socket_option_calc_result) == true)
|
|
{
|
|
FOREACH_CONTAINER(ItemAttrCalculator::SocketOptionCalculator::CalculationResultMap::value_type& socket_option_calc_pair,
|
|
socket_option_calc_result,
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResultMap)
|
|
{
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResult& socket_option_calc = socket_option_calc_pair.second;
|
|
|
|
int row = GetRowSocketOptionByOptionPoint(socket_option_calc.attr_option_code,
|
|
socketcount_vector);
|
|
|
|
if ((row < 0) ||
|
|
(row < socket_option_show_begin_index()) ||
|
|
(row - socket_option_show_begin_index() >= kSocketOptionShowRowCount) ||
|
|
(row >= (int)socketcount_vector.size()))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
ZardOptionInfo* zard_option_info = SocketOptionParser::Instance()->FindZardOption(socket_option_calc.item_option_code);
|
|
if (zard_option_info == NULL)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
WzColor text_color = WzColor_RGBA(255,255,255,255);
|
|
|
|
const ZardOptionInfo::OptionValueInfo* option_value_info = zard_option_info->Find(socketcount_vector[row].option_point);
|
|
if (item_slot->IsExpiredTime() || item_slot->IsExpiredWaitTime())
|
|
{
|
|
text_color = WzColor_RGBA(110,110,110,255);
|
|
}
|
|
else
|
|
{
|
|
if (option_value_info != NULL)
|
|
{
|
|
if (option_value_info->point > 0)
|
|
{
|
|
text_color = WzColor_RGBA(0,255,0,255);
|
|
}
|
|
else if (option_value_info->point < 0)
|
|
{
|
|
text_color = WzColor_RGBA(0,0,255,255);
|
|
}
|
|
}
|
|
}
|
|
|
|
SetSocketOptionValue(col,
|
|
row - socket_option_show_begin_index(),
|
|
socket_option_calc.option_point,
|
|
text_color);
|
|
}
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::UpdateSocketOptionName(IN uiCharacterStatusSockecInfo::SocketOptionVector& socketcount_vector)
|
|
{
|
|
if (socket_option_show_begin_index() >= (int)socketcount_vector.size())
|
|
{
|
|
return;
|
|
}
|
|
|
|
//! ��ų��
|
|
uiCharacterStatusSockecInfo::SocketOptionVector::iterator begin = socketcount_vector.begin() + socket_option_show_begin_index();
|
|
uiCharacterStatusSockecInfo::SocketOptionVector::iterator end = socketcount_vector.end();
|
|
int index = 0;
|
|
for ( ; begin != end; ++begin)
|
|
{
|
|
BASE_OptionList* socket_option_desc = OptionListParser::Instance()->GetOptionList(begin->item_option_code);
|
|
if (socket_option_desc != NULL)
|
|
{
|
|
WzColor text_color = WzColor_RGBA(255,255,255,255);
|
|
|
|
TCHAR str_name[INTERFACE_STRING_LENGTH] = {NULL, };
|
|
TCHAR str_msg[INTERFACE_STRING_LENGTH] = {NULL, };
|
|
g_InterfaceManager.GetInterfaceString(socket_option_desc->mdwNameCode, str_name);
|
|
GetControlWZ_byPosition(kControl_Text_S006 + index)->SetTextWZ(str_name);
|
|
|
|
ZardOptionInfo* zard_option_info = SocketOptionParser::Instance()->FindZardOption(begin->item_option_code);
|
|
if (zard_option_info != NULL)
|
|
{
|
|
const ZardOptionInfo::OptionValueInfo* option_value_info = zard_option_info->Find(begin->option_point);
|
|
if (option_value_info != NULL)
|
|
{
|
|
text_color = GetSocketOptionTextColor(option_value_info->value);
|
|
|
|
Sprintf(str_msg, _T("%+d"),
|
|
#ifdef _NA_008823_20160517_ADD_ITEMOPTION_VALUETYPE_MILLISECOND
|
|
GlobalFunc::OptionValueQuantification(socket_option_desc, option_value_info->value));
|
|
#else
|
|
option_value_info->value);
|
|
#endif //_NA_008823_20160517_ADD_ITEMOPTION_VALUETYPE_MILLISECOND
|
|
|
|
//�ɼǸ� ���̻�
|
|
GlobalFunc::AddOptionSuffix(option_value_info->type, socket_option_desc, str_msg);
|
|
}
|
|
else
|
|
{
|
|
//! �̹ߵ�
|
|
g_InterfaceManager.GetInterfaceString(3444, str_msg);
|
|
}
|
|
|
|
SetSocketOptionValue(static_cast<UIControlPos>(kControl_Text_S201 + index), str_msg, text_color);
|
|
}
|
|
|
|
SetSocketOptionValue(static_cast<UIControlPos>(kControl_Text_S030 + index), begin->option_point, text_color);
|
|
}
|
|
|
|
++index;
|
|
|
|
if (kControl_Text_S006 + index > kControl_Text_S000)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::SetSocketOptionValue(int col, int row, int val, WzColor text_color)
|
|
{
|
|
int control_posistion = kControl_Text_S021 + (col * kSocketOptionShowRowCount) + row;
|
|
if (col < 0 || col >= kSocketOptionShowColCount ||
|
|
row < 0 || row >= kSocketOptionShowRowCount ||
|
|
control_posistion < kControl_Text_S021 || control_posistion > kControl_Text_S180)
|
|
{
|
|
return;
|
|
}
|
|
|
|
SetSocketOptionValue(static_cast<UIControlPos>(control_posistion), val, text_color);
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::SetSocketOptionValue(UIControlPos control_position, TCHAR* text_string, WzColor text_color)
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
if (control_ptr != NULL)
|
|
{
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT) == true)
|
|
{
|
|
(static_cast<CCtrlStaticWZ*>(control_ptr))->SetTextColor(text_color);
|
|
}
|
|
|
|
control_ptr->SetTextWZA(text_string);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::SetSocketOptionValue(UIControlPos control_position, int val, WzColor text_color)
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
if (control_ptr != NULL)
|
|
{
|
|
static TCHAR str[MAX_PATH] = {NULL, };
|
|
Sprintf(str, _T("%d"), val);
|
|
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT) == true)
|
|
{
|
|
(static_cast<CCtrlStaticWZ*>(control_ptr))->SetTextColor(text_color);
|
|
}
|
|
|
|
control_ptr->SetTextWZA(str);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::CalcTotalSocketOption(OUT uiCharacterStatusSockecInfo::SocketOptionVector& socketcount_vector)
|
|
{
|
|
HeroEquipmentContainer* equip_container = static_cast<HeroEquipmentContainer*>(g_pHero->GetHeroEquipContainer());
|
|
|
|
ItemUnitRenderer::RenderUnit * render_unit = NULL;
|
|
ItemUnitRenderer* item_renderer = equip_container->GetItemUnitRender();
|
|
|
|
item_renderer->GetItemUnitHashTable()->SetFirst();
|
|
while (render_unit = item_renderer->GetItemUnitHashTable()->GetNext())
|
|
{
|
|
if ((render_unit->m_pIconImage == NULL) ||
|
|
(render_unit->m_pRefSlot == NULL) ||
|
|
(render_unit->m_pRefSlot->GetSlotType() != ST_ITEM))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
SCItemSlot* item_slot = (SCItemSlot*)(render_unit->m_pRefSlot);
|
|
if (item_slot->IsExpiredTime() || item_slot->IsExpiredWaitTime())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResultMap socket_option_calc_result;
|
|
if (ItemAttrCalculator::SocketOptionCalculator::CalculateItemOptionPoint(*item_slot, socket_option_calc_result) == false)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
ns_formula::EquipSlotsManageInfo* equip_slot_manage_info = g_pHero->GetEquipmentContainer()->GetEquipmentManageInfo();
|
|
ns_formula::EquipSlotsManageInfo::Node* it = equip_slot_manage_info->slots;
|
|
if (!equip_slot_manage_info->slots[item_slot->GetPos()].activated) // �������� Ȱ��ȭ�� ���츸 ����
|
|
{
|
|
continue;
|
|
}
|
|
|
|
FOREACH_CONTAINER(ItemAttrCalculator::SocketOptionCalculator::CalculationResultMap::value_type& socket_option_calc_pair,
|
|
socket_option_calc_result,
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResultMap)
|
|
{
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResult& socket_option_calc = socket_option_calc_pair.second;
|
|
|
|
//------------------------------------------------------------------------------
|
|
uiCharacterStatusSockecInfo::SocketOptionVector::iterator begin = socketcount_vector.begin();
|
|
uiCharacterStatusSockecInfo::SocketOptionVector::iterator end = socketcount_vector.end();
|
|
bool is_find = false;
|
|
for (; begin != end; ++begin)
|
|
{
|
|
if (begin->attr_option_code == socket_option_calc.attr_option_code)
|
|
{
|
|
begin->option_point += socket_option_calc.option_point;
|
|
is_find = true;
|
|
break;
|
|
}
|
|
}
|
|
if (is_find == false)
|
|
{
|
|
socketcount_vector.push_back(socket_option_calc);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::RenderTooltip_SocketOption(IN uiCharacterStatusSockecInfo::SocketOptionVector& socketcount_vector)
|
|
{
|
|
uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP);
|
|
if (tooltip_manager == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
for (int position_index = 0; position_index < kSocketOptionShowRowCount; ++position_index)
|
|
{
|
|
if (position_index + socket_option_show_begin_index() >= (int)socketcount_vector.size())
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (IsOverControl(GetControlWZ_byPosition(kControl_Text_S006 + position_index)))
|
|
{
|
|
ItemAttrCalculator::SocketOptionCalculator::CalculationResult* result = &(socketcount_vector[position_index + socket_option_show_begin_index()]);
|
|
|
|
tooltip_manager->RegisterTooltipSocketOption(result->item_option_code);
|
|
tooltip_manager->SetTooltipDialogID(GetDialogKey());
|
|
}
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusSockecInfo::UpdateMouseWheel()
|
|
{
|
|
//! ���� �ɼ� ����Ʈ�� ��ũ�� üũ
|
|
CControlWZ* control_lt = GetControlWZ_byPosition(kControl_Text_S006);
|
|
CControlWZ* control_rb = GetControlWZ_byPosition(kControl_Text_S216);
|
|
CCtrlVScrollWZ* scroll_control = static_cast<CCtrlVScrollWZ*>(GetControlWZ_byPosition(kControl_VScroll_V000));
|
|
if ((control_lt != NULL) && (control_rb != NULL) && (scroll_control != NULL))
|
|
{
|
|
RECT area;
|
|
area.left = control_lt->GetSizeRect().left;
|
|
area.top = control_lt->GetSizeRect().top;
|
|
area.right = control_rb->GetSizeRect().right;
|
|
area.bottom = control_rb->GetSizeRect().bottom;
|
|
|
|
switch (GetMouseWheelStatus(&area))
|
|
{
|
|
case MOUSE_WHEEL_UP:
|
|
{
|
|
OnVScrollUp(scroll_control);
|
|
}
|
|
break;
|
|
|
|
case MOUSE_WHEEL_DOWN:
|
|
{
|
|
OnVScrollDown(scroll_control);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif //_NA_003027_20111013_HONOR_SYSTEM
|