1560 lines
58 KiB
C++
1560 lines
58 KiB
C++
#include "SunClientPrecompiledHeader.h"
|
|
#ifdef _NA_008472_20150903_IMPROVED_BALANCE
|
|
#include "uiCharacterStatusInfo2.h"
|
|
#include "uiCharacterStatusMan/uiCharacterStatusMan.h"
|
|
#include "uiCharacterStatus/uiCharacterStatusInfo.h"
|
|
#include "Hero.h"
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
#include "OptionListParser.h"
|
|
#endif
|
|
|
|
const DWORD uiCharacterStatusInfo2::kDialog_ID = StrToWzID("0421");
|
|
|
|
uiCharacterStatusInfo2::uiCharacterStatusInfo2(InterfaceManager* interface_manager)
|
|
{
|
|
}
|
|
|
|
uiCharacterStatusInfo2::~uiCharacterStatusInfo2(void)
|
|
{
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::Init( CDrawBase* draw_base )
|
|
{
|
|
uiBase::Init(draw_base);
|
|
#ifndef _20220413_NEW_CHARAC_STATUS
|
|
RegisterControlPosition(StrToWzID("C000"), kControl_CheckBT_C000);
|
|
RegisterControlPosition(StrToWzID("C003"), kControl_CheckBT_C003);
|
|
RegisterControlPosition(StrToWzID("C001"), kControl_CheckBT_C001);
|
|
RegisterControlPosition(StrToWzID("C002"), kControl_CheckBT_C002);
|
|
RegisterControlPosition(StrToWzID("C032"), kControl_CheckBT_C032);
|
|
RegisterControlPosition(StrToWzID("TI09"), kControl_TextImage_TI09);
|
|
RegisterControlPosition(StrToWzID("TI12"), kControl_TextImage_TI12);
|
|
RegisterControlPosition(StrToWzID("TI32"), kControl_TextImage_TI32);
|
|
RegisterControlPosition(StrToWzID("TI13"), kControl_TextImage_TI13);
|
|
RegisterControlPosition(StrToWzID("TI11"), kControl_TextImage_TI11);
|
|
RegisterControlPosition(StrToWzID("I003"), kControl_TextImage_I003);
|
|
RegisterControlPosition(StrToWzID("I004"), kControl_TextImage_I004);
|
|
RegisterControlPosition(StrToWzID("I005"), kControl_TextImage_I005);
|
|
RegisterControlPosition(StrToWzID("I001"), kControl_TextImage_I001);
|
|
RegisterControlPosition(StrToWzID("I002"), kControl_TextImage_I002);
|
|
#else
|
|
RegisterControlPosition(StrToWzID("C000"), kControl_CheckBT_C000);
|
|
RegisterControlPosition(StrToWzID("C004"), kControl_CheckBT_C003);
|
|
RegisterControlPosition(StrToWzID("C005"), kControl_CheckBT_C001);
|
|
RegisterControlPosition(StrToWzID("C002"), kControl_CheckBT_C002);
|
|
RegisterControlPosition(StrToWzID("C003"), kControl_CheckBT_C032);
|
|
|
|
RegisterControlPosition(StrToWzID("V000"), kControl_VScroll_V000);
|
|
|
|
|
|
RegisterControlPosition(StrToWzID("S006"), kControl_TextImage_CaptionName_S006);
|
|
RegisterControlPosition(StrToWzID("S000"), kControl_TextImage_CaptionName_S000);
|
|
RegisterControlPosition(StrToWzID("S001"), kControl_TextImage_CaptionName_S001);
|
|
RegisterControlPosition(StrToWzID("S002"), kControl_TextImage_CaptionName_S002);
|
|
RegisterControlPosition(StrToWzID("S004"), kControl_TextImage_CaptionName_S004);
|
|
RegisterControlPosition(StrToWzID("S007"), kControl_TextImage_CaptionName_S007);
|
|
RegisterControlPosition(StrToWzID("S008"), kControl_TextImage_CaptionName_S008);
|
|
RegisterControlPosition(StrToWzID("S009"), kControl_TextImage_CaptionName_S009);
|
|
RegisterControlPosition(StrToWzID("S010"), kControl_TextImage_CaptionName_S010);
|
|
RegisterControlPosition(StrToWzID("S011"), kControl_TextImage_CaptionName_S011);
|
|
RegisterControlPosition(StrToWzID("S012"), kControl_TextImage_CaptionName_S012);
|
|
RegisterControlPosition(StrToWzID("S013"), kControl_TextImage_CaptionName_S013);
|
|
RegisterControlPosition(StrToWzID("S014"), kControl_TextImage_CaptionName_S014);
|
|
RegisterControlPosition(StrToWzID("S015"), kControl_TextImage_CaptionName_S015);
|
|
RegisterControlPosition(StrToWzID("S016"), kControl_TextImage_CaptionName_S016);
|
|
RegisterControlPosition(StrToWzID("S017"), kControl_TextImage_CaptionName_S017);
|
|
|
|
RegisterControlPosition(StrToWzID("S201"), kControl_TextImage_CaptionValue_S201);
|
|
RegisterControlPosition(StrToWzID("S202"), kControl_TextImage_CaptionValue_S202);
|
|
RegisterControlPosition(StrToWzID("S203"), kControl_TextImage_CaptionValue_S203);
|
|
RegisterControlPosition(StrToWzID("S204"), kControl_TextImage_CaptionValue_S204);
|
|
RegisterControlPosition(StrToWzID("S205"), kControl_TextImage_CaptionValue_S205);
|
|
RegisterControlPosition(StrToWzID("S206"), kControl_TextImage_CaptionValue_S206);
|
|
RegisterControlPosition(StrToWzID("S207"), kControl_TextImage_CaptionValue_S207);
|
|
RegisterControlPosition(StrToWzID("S208"), kControl_TextImage_CaptionValue_S208);
|
|
RegisterControlPosition(StrToWzID("S209"), kControl_TextImage_CaptionValue_S209);
|
|
RegisterControlPosition(StrToWzID("S210"), kControl_TextImage_CaptionValue_S210);
|
|
RegisterControlPosition(StrToWzID("S211"), kControl_TextImage_CaptionValue_S211);
|
|
RegisterControlPosition(StrToWzID("S212"), kControl_TextImage_CaptionValue_S212);
|
|
RegisterControlPosition(StrToWzID("S213"), kControl_TextImage_CaptionValue_S213);
|
|
RegisterControlPosition(StrToWzID("S214"), kControl_TextImage_CaptionValue_S214);
|
|
RegisterControlPosition(StrToWzID("S215"), kControl_TextImage_CaptionValue_S215);
|
|
RegisterControlPosition(StrToWzID("S216"), kControl_TextImage_CaptionValue_S216);
|
|
|
|
CCtrlVScrollWZ* scroll_control = static_cast<CCtrlVScrollWZ*>(GetControlWZ_byPosition(kControl_VScroll_V000));
|
|
initOptionListVector();
|
|
|
|
if (scroll_control != NULL)
|
|
{
|
|
scroll_control->SetScrollRangeWZ(0, 0);
|
|
scroll_control->SetScrollPosWZ(0);
|
|
}
|
|
#endif
|
|
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::Release()
|
|
{
|
|
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::OnShowWindow( BOOL is_show )
|
|
{
|
|
if (is_show == TRUE)
|
|
{
|
|
|
|
RefreshTab();
|
|
uiCharacterStatusInfo* character_status_info = GET_CAST_DIALOG(uiCharacterStatusInfo, uiCharacterStatusInfo::kDialog_ID);
|
|
if (character_status_info)
|
|
{
|
|
character_status_info->ShowWindowRefreshSimulation();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::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;
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
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;
|
|
#endif
|
|
default:
|
|
SolarDialog::MessageProc(message);
|
|
break;
|
|
}
|
|
}
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
|
|
bool uiCharacterStatusInfo2::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_status_show_begin_index(pos);
|
|
char message[2048];
|
|
sprintf(message,"OnVScrollUp pos: %d\n",pos);
|
|
OutputDebugStringA(message);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
bool uiCharacterStatusInfo2::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_status_show_begin_index(pos);
|
|
|
|
char message[2048];
|
|
sprintf(message,"OnVScrollDown pos: %d\n",pos);
|
|
OutputDebugStringA(message);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
bool uiCharacterStatusInfo2::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);
|
|
return result;
|
|
}
|
|
|
|
DWORD control_index = GetControlPosition_byID(scroll_control->GetCtrlID());
|
|
if (control_index == kControl_VScroll_V000)
|
|
{
|
|
char message[2048];
|
|
sprintf(message,"OnVScrollThumb pos: %d min:%d max:%d \n",pos,mmin,mmax);
|
|
OutputDebugStringA(message);
|
|
set_status_show_begin_index(pos);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
void uiCharacterStatusInfo2::initOptionListVector(){
|
|
status_vecotr.clear();
|
|
/*uiCharacterStatusInfo* character_status_info = GET_CAST_DIALOG(uiCharacterStatusInfo, uiCharacterStatusInfo::kDialog_ID);
|
|
|
|
*/
|
|
if (g_pHero == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
PlayerAttributes* player_attributes = g_pHero->GetPlayerAttribute();
|
|
//const BASE_PLAYERINFO* player_info = character_status_info->GetSimulation_BASE_PLAYERINFO();
|
|
|
|
int interfaceStringIndex[] = {274/*技能强化力*/,23191/*技能攻击力增加(%)*/,12901/*技能防御力*/,23142/*技能冷却*/,370/*致命一击几率*/,23188/*受到致命一击的概率*/
|
|
,23189/*致命一击伤害增加*/,23190/*致命一击伤害增加(%)*/,11308/*致命一击 伤害*/,24188/*承受的致命一击伤害(%)*/,23192/*增益效果时间增加*/,23193/*承受的减益时间减少*/,23194/*输出的减益时间增加*/,
|
|
11398/*转换输出伤害为护盾值的转换量*/,11399/*转换输出伤害为生命值的转换量*/,11360/*PVP时承受的伤害减少*/,11361/*技能施放时间减少*/,23018/*伤害减少(%)*/,23019/*减少怪物所造成的伤害(%)*/,23020/*减少狂战士所造成的伤害(%)*/
|
|
,23021/*减少龙骑士所造成的伤害(%)*/,23022/*减少圣射手所造成的伤害(%)*/,23023/*减少魔法师所造成的伤害(%)*/,23024/*减少暗影所造成的伤害(%)*/,23025/*减少刺客所造成的伤害(%)*/,23026/*减少海落伊德所造成的伤害(%)*/,23027/*减少魔力刀锋所造成的伤害(%)*/
|
|
,23028/*贯穿(%)*/,11252/*减少对方基本防御力*/,11366/*减少对方所有元素抵抗率*/,23030/*额外伤害(%)*/,23031/*给怪物造成额外伤害(%)*/,11320/*最大伤害发生概率*/,11274/*伤害反弹概率*/
|
|
,11287/*死亡状态复活概率*/,11277/*多重攻击概率*/,11286/*幸运怪额外伤害*/,23041/*攻城目标输出伤害(%)*/,23042/*恢复药水恢复量(%)*/,11317/*恢复药水冷却时间*/,11309/*制作费用*/
|
|
,11310/*防止制作失败时材料消耗*/,11315/*强化费用*/,11316/*防止强化降级(消失)*/,11319/*任务经验*/,23043/*NPC商店修理费用*/,11349/*NPC商店 购买费用*/,11285/*组合成功率*/
|
|
,11275/*获得金币*/,11276/*获得经验值*/}; //输出的减益成功率
|
|
for (int i =0;i<50;i++)
|
|
{
|
|
if (interfaceStringIndex[i] == 274)/*技能强化力*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetSkillAttackPower();
|
|
data.base_value = player_attributes->GetBaseSkillAttackPower();
|
|
data.dataType = ParameterCaption;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
|
|
}
|
|
if (interfaceStringIndex[i] == 23191)/*技能攻击力增加(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetSkillPercentDamage();
|
|
data.base_value = player_attributes->GetBaseSkillPercentDamage();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
|
|
}
|
|
if (interfaceStringIndex[i] == 12901)/*技能防御力*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = 0;
|
|
data.base_value = 0;
|
|
data.dataType = ParameterCaption;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
|
|
}
|
|
if (interfaceStringIndex[i] == 23142)/*技能冷却*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioBonusSkillCoolTime();
|
|
data.base_value = player_attributes->GetBaseBonusSkillCoolTime();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 370)/*致命一击几率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetCriticalRatioChange();
|
|
data.base_value = player_attributes->GetBaseCriticalRatioChange();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23188)/*受到致命一击的概率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetEnemyCriticalRatioChange();
|
|
data.base_value = player_attributes->GetBaseEnemyCriticalRatioChange();
|
|
data.dataType = ParameterCaptionWithPercentReverseTextColor;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23189)/*致命一击伤害增加*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetCriticalDamageBonus();
|
|
data.base_value = player_attributes->GetBaseCriticalDamageBonus();
|
|
data.dataType = ParameterCaption;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23190)/*致命一击伤害增加(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioCriticalDamageBonus();
|
|
data.base_value = player_attributes->GetBaseCriticalDamageBonus();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
|
|
if (interfaceStringIndex[i] == 11308)/*致命一击 伤害 代码未实现*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetItemEnemyCriticalDamageChange() ;
|
|
data.base_value = player_attributes->GetBaseEnemyCriticalDamageChange();
|
|
data.dataType = ParameterCaption2;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 24188)/*承受的致命一击伤害(%) 代码未实现*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioEnemyCriticalDamageChange() ;
|
|
data.base_value = player_attributes->GetBaseCriticalRatioDecrease();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23192)/*增益效果时间增加*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetItemIncreaseSkillDuration() ;
|
|
data.base_value = player_attributes->GetBaseIncreaseSkillDuration();
|
|
data.dataType = ParameterCaptionWithMilisecond;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23193)/*承受的减益时间减少 未实现*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetItemDecreaseSkillDuration() ;
|
|
data.base_value =player_attributes->GetBaseDecreaseSkillDuration();
|
|
data.dataType = ParameterCaptionWithMilisecond;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23194)/*输出的减益时间增加 未实现*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetDebuffDuration() ;
|
|
data.base_value =player_attributes->GetBaseDebuffDuration();
|
|
data.dataType = ParameterCaptionWithMilisecond;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11398)/*转换输出伤害为护盾值的转换量*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetAttackDamageAbsorbSDRatio() ;
|
|
data.base_value = player_attributes->GetBaseAttackDamageAbsorbSDRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11399)/*转换输出伤害为生命值的转换量*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetAttackDamageAbsorbHPRatio() ;
|
|
data.base_value = player_attributes->GetBaseAttackDamageAbsorbHPRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11360)/*PVP时承受的伤害减少*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetDecreasePVPDamage() ;
|
|
data.base_value = player_attributes->GetBaseDecreasePVPDamage();
|
|
data.dataType = ParameterCaption2;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23017)/*PVP时承受的伤害减少 (%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreasePVPDamage() ;
|
|
data.base_value = player_attributes->GetBaseDecreasePVPDamage();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23018)/*伤害减少(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecDamage() ;
|
|
data.base_value = player_attributes->GetBaseDecDamage();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23019)/*减少怪物所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageNPC() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageNPC();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23020)/*减少狂战士所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageBerserker() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageBerserker();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23021)/*减少龙骑士所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageDragonKnight() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageDragonKnight();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23022)/*减少圣射手所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageValkyrie() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageValkyrie();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23023)/*减少魔法师所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageElementalist() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageElementalist();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23024)/*减少暗影所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageShadow() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageShadow();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23025)/*减少刺客所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageMystic() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageMystic();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23026)/*减少海落伊德所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageHellroid() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageHellroid();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23027)/*减少魔力刀锋所造成的伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDecreaseDamageWitchBlade() ;
|
|
data.base_value = player_attributes->GetBaseDecreaseDamageWitchBlade();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23028)/*贯穿(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioPassDecDamage() ;
|
|
data.base_value = player_attributes->GetBasePassDecDamage();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11252)/*减少对方基本防御力*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetReducePhysicalTargetDefenseRatio() ;
|
|
data.base_value = 0;
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11366)/*减少对方所有元素抵抗率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetReduceElementTargetDefenseRatio((eATTACK_TYPE)eATTR_DEL_MAGICAL_ALL_DAMAGE) ;
|
|
data.base_value = 0;
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23030)/*额外伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioAddDamage() ;
|
|
data.base_value = player_attributes->GetBaseAddDamage();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23031)/*给怪物造成额外伤害(%) 未实现*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = 0 ;
|
|
data.base_value = 0;
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11320)/*最大伤害发生概率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetMaxDamageRatio() ;
|
|
data.base_value = player_attributes->GetBaseMaxDamageRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11274)/*伤害反弹概率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetReflectDamageRatio() ;
|
|
data.base_value = player_attributes->GetBaseReflectDamageRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11287)/*死亡状态复活概率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetResurrectionRatio() ;
|
|
data.base_value = player_attributes->GetBaseResurrectionRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11277)/*多重攻击概率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetAreaAttackRatio() ;
|
|
data.base_value = player_attributes->GetBaseAreaAttackRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11286)/*幸运怪额外伤害*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetLuckMonIncDamage() ;
|
|
data.base_value = player_attributes->GetBaseLuckMonIncDamage();
|
|
data.dataType = ParameterCaption2;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23041)/*攻城目标输出伤害(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioDominationMapobjectDamageRatio() ;
|
|
data.base_value = player_attributes->GetBaseDominationMapobjectDamageRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23042)/*恢复药水恢复量(%)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRatioRecoverPotionRecoveryRatio() ;
|
|
data.base_value = player_attributes->GetBaseRecoverPotionRecoveryRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11317)/*恢复药水恢复量*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetRecoverPotionCooltimeRatio() ;
|
|
data.base_value = player_attributes->GetBaseRecoverPotionCooltimeRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11309)/*制作费用*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetCraftCostRatio() ;
|
|
data.base_value = player_attributes->GetBaseCraftCostRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11310)/*防止制作失败时材料消耗*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetCraftPreventExtinctionMaterialRatio() ;
|
|
data.base_value = player_attributes->GetBaseCraftPreventExtinctionMaterialRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11315)/*强化费用*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetEnchantCostRatio() ;
|
|
data.base_value = player_attributes->GetBaseEnchantCostRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
|
|
if (interfaceStringIndex[i] == 11316)/*防止强化降级(消失)*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetEnchantPreventDestroyNDowngradeItemRatio() ;
|
|
data.base_value = player_attributes->GetBaseEnchantPreventDestroyNDowngradeItemRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11319)/*任务经验*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetQuestRewardExpRatio() ;
|
|
data.base_value = player_attributes->GetBaseQuestRewardExpRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 23043)/*NPC商店修理费用*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetShopRepairHeimRatio();
|
|
data.base_value = player_attributes->GetBaseShopRepairHeimRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11349)/*NPC商店 购买费用*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetShopBuyHeimRatio();
|
|
data.base_value = player_attributes->GetBaseShopBuyHeimRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11285)/*组合成功率*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetCompositeIncRatio();
|
|
data.base_value = player_attributes->GetBaseCompositeIncRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11275)/*获得金币*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetBonusMoneyRatio();
|
|
data.base_value = player_attributes->GetBaseBonusMoneyRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
if (interfaceStringIndex[i] == 11276)/*获得经验值*/
|
|
{
|
|
StatusData data = {0};
|
|
data.calc_value = player_attributes->GetBonusExpRatio();
|
|
data.base_value = player_attributes->GetBaseBonusExpRatio();
|
|
data.dataType = ParameterCaptionWithPercent;
|
|
g_InterfaceManager.GetInterfaceString(interfaceStringIndex[i], data.name, INTERFACE_STRING_LENGTH);
|
|
status_vecotr.push_back(data);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
void uiCharacterStatusInfo2::UpdateStautsOption()
|
|
{
|
|
if (status_show_begin_index() >= (int)status_vecotr.size())
|
|
{
|
|
return;
|
|
}
|
|
|
|
//! 胶懦疙
|
|
StatusVector::iterator begin = status_vecotr.begin() + status_show_begin_index();
|
|
StatusVector::iterator end = status_vecotr.end();
|
|
int index = 0;
|
|
for ( ; begin != end; ++begin)
|
|
{
|
|
static_cast<CCtrlImageStaticWZ*>(GetControlWZ_byPosition(kControl_TextImage_CaptionName_S006 + index))->SetTextWZ(begin->name);
|
|
if (begin->dataType == ParameterCaption)
|
|
{
|
|
SetParameterCaption((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterCaption2)
|
|
{
|
|
SetParameterCaption((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterDamage)
|
|
{
|
|
SetParameterDamage(static_cast<CCtrlImageStaticWZ*>(GetControlWZ_byPosition(kControl_TextImage_CaptionValue_S201 + index)),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterCaptionWithPercent)
|
|
{
|
|
SetParameterCaptionWithPercent((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterCaptionWithPercentReverseTextColor)
|
|
{
|
|
SetParameterCaptionWithPercentReverseTextColor((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterCaptionWithSecond)
|
|
{
|
|
SetParameterCaptionWithSecond((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterCaptionWithMilisecond)
|
|
{
|
|
SetParameterCaptionWithMilisecond((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
if (begin->dataType == ParameterCaptionWithSecondReverse)
|
|
{
|
|
SetParameterCaptionWithSecondReverse((uiCharacterStatusInfo2::UIControlPos)(kControl_TextImage_CaptionValue_S201 + index),begin->calc_value,begin->base_value);
|
|
|
|
}
|
|
++index;
|
|
|
|
if (kControl_TextImage_CaptionName_S006 + index > kControl_TextImage_CaptionName_S017 && kControl_TextImage_CaptionValue_S201 + index > kControl_TextImage_CaptionValue_S216)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
void uiCharacterStatusInfo2::UpdateMouseWheel()
|
|
{
|
|
//! 家南 可记 府胶飘甸 胶农费 眉农
|
|
CControlWZ* control_lt = GetControlWZ_byPosition(kControl_TextImage_CaptionName_S006);
|
|
CControlWZ* control_rb = GetControlWZ_byPosition(kControl_TextImage_CaptionValue_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
|
|
void uiCharacterStatusInfo2::OnUpdateSolarDialog()
|
|
{
|
|
|
|
if (g_pHero == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// 瓷仿摹 诀单捞飘
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
UpdateMouseWheel();
|
|
initOptionListVector();
|
|
#endif
|
|
UpdateParameter();
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::OnRenderSolarDialog()
|
|
{
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
// 砒屏 免仿
|
|
//set_status_show_begin_index(0);
|
|
|
|
int backup_cur_apply_status_count = status_vecotr.size();
|
|
|
|
CCtrlVScrollWZ* scroll_control = static_cast<CCtrlVScrollWZ*>(GetControlWZ_byPosition(kControl_VScroll_V000));
|
|
if (scroll_control != NULL)
|
|
{
|
|
// 胶农费 官 诀单捞飘
|
|
int max_num = max(0, backup_cur_apply_status_count - kStatusRowCount);
|
|
|
|
scroll_control->SetScrollRangeWZ(0, max_num);
|
|
scroll_control->SetScrollPosWZ(status_show_begin_index());
|
|
|
|
int thumb_size = 100 / (max_num + 1);
|
|
scroll_control->SetChangeSizeThumb(thumb_size);
|
|
}
|
|
UpdateStautsOption();
|
|
#endif
|
|
if (IsLocked() == false)
|
|
{
|
|
RenderTooltip();
|
|
}
|
|
}
|
|
|
|
bool uiCharacterStatusInfo2::OnLButtonClick( SI_MESSAGE* message )
|
|
{
|
|
bool result = true;
|
|
DWORD control_position = GetControlPosition_byID(message->dwCtrlID);
|
|
switch (control_position)
|
|
{
|
|
case kControl_CheckBT_C000:
|
|
case kControl_CheckBT_C003:
|
|
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;
|
|
default:
|
|
{
|
|
}
|
|
break;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
bool uiCharacterStatusInfo2::OnLButtonDown( SI_MESSAGE* message )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
bool uiCharacterStatusInfo2::OnLButtonUp( SI_MESSAGE* message )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::RefreshTab()
|
|
{
|
|
CCtrlButtonCheckWZ* check_button = NULL;
|
|
for (int position = kControl_CheckBT_C000; position < (kControl_CheckBT_C032 + 1); ++position)
|
|
{
|
|
check_button =
|
|
static_cast<CCtrlButtonCheckWZ*>(GetControlWZ(GetControlID_byPosition(position)));
|
|
if (check_button == NULL)
|
|
{
|
|
continue;
|
|
}
|
|
check_button->SetCheckState((position == kControl_CheckBT_C003) ? (true) : (false));
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetControlTextColor( CCtrlImageStaticWZ* control_ptr, int val, bool is_max /*= false*/ )
|
|
{
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT) == false)
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == false)
|
|
{
|
|
#endif
|
|
|
|
return;
|
|
}
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if ((control_ptr->IsKind(CTRL_KIND_TEXT) == true))
|
|
{
|
|
#else
|
|
if ((control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == true))
|
|
{
|
|
#endif
|
|
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));
|
|
}
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetControlReverseTextColor( CCtrlImageStaticWZ* control_ptr, int val, bool is_max /*= false*/ )
|
|
{
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT) == false)
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == false)
|
|
{
|
|
#endif
|
|
return;
|
|
}
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if ((control_ptr->IsKind(CTRL_KIND_TEXT) == true))
|
|
{
|
|
#else
|
|
if ((control_ptr->IsKind(CTRL_KIND_TEXTIMAGE) == true))
|
|
{
|
|
#endif
|
|
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 _20220413_NEW_CHARAC_STATUS
|
|
void uiCharacterStatusInfo2::SetOptionName(UIControlPos control_position, DWORD nameCode){
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
|
|
static_cast<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(g_InterfaceManager.GetInterfaceString(nameCode));
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endif
|
|
void uiCharacterStatusInfo2::SetParameterCaption( UIControlPos control_position, int val )
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE))
|
|
{
|
|
#endif
|
|
|
|
SetControlTextColor(static_cast<CCtrlImageStaticWZ*>(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<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(text_string);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetParameterCaption( UIControlPos control_position, int calc_value, int base_value )
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE))
|
|
{
|
|
#endif
|
|
SetControlTextColor(static_cast<CCtrlImageStaticWZ*>(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<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(text_string);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::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 uiCharacterStatusInfo2::SetParameterCaptionWithPercent( UIControlPos control_position, int calc_value, int base_value )
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE))
|
|
{
|
|
#endif
|
|
SetControlTextColor(static_cast<CCtrlImageStaticWZ*>(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<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(string_messgae);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetParameterCaptionWithPercentReverseTextColor( UIControlPos control_position, int calc_value, int base_value )
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE))
|
|
{
|
|
#endif
|
|
SetControlReverseTextColor(static_cast<CCtrlImageStaticWZ*>(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<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(string_messgae);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetParameterCaptionWithSecond( UIControlPos control_position, int calc_value, int base_value )
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE))
|
|
{
|
|
#endif
|
|
SetControlTextColor(static_cast<CCtrlImageStaticWZ*>(control_ptr),
|
|
(calc_value - base_value),
|
|
IsMaxParameterCaption(control_position, calc_value));
|
|
|
|
TCHAR string_format[INTERFACE_STRING_LENGTH] = {0, };
|
|
TCHAR string_message[INTERFACE_STRING_LENGTH] = {0, };
|
|
|
|
// 2149 : 檬
|
|
g_InterfaceManager.GetInterfaceString(2149, string_format, INTERFACE_STRING_LENGTH);
|
|
Snprintf(string_message, INTERFACE_STRING_LENGTH-1, "%d%s", calc_value, string_format);
|
|
|
|
static_cast<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(string_message);
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetParameterCaptionWithMilisecond( UIControlPos control_position, int calc_value, int base_value )
|
|
{
|
|
CControlWZ* control_ptr = GetControlWZ_byPosition(control_position);
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXT))
|
|
{
|
|
#else
|
|
if (control_ptr->IsKind(CTRL_KIND_TEXTIMAGE))
|
|
{
|
|
#endif
|
|
SetControlTextColor(static_cast<CCtrlImageStaticWZ*>(control_ptr),
|
|
(calc_value - base_value),
|
|
IsMaxParameterCaption(control_position, calc_value));
|
|
|
|
TCHAR string_format[INTERFACE_STRING_LENGTH] = {0, };
|
|
TCHAR string_message[INTERFACE_STRING_LENGTH] = {0, };
|
|
|
|
// 2149 : 檬
|
|
g_InterfaceManager.GetInterfaceString(2149, string_format, INTERFACE_STRING_LENGTH);
|
|
float result_value = static_cast<float>(calc_value) * 0.001f;
|
|
Snprintf(string_message, INTERFACE_STRING_LENGTH-1, "%.1f%s", result_value, string_format);
|
|
|
|
static_cast<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(string_message);
|
|
}
|
|
}
|
|
|
|
bool uiCharacterStatusInfo2::IsMaxParameterCaption( UIControlPos control_position, IN OUT int& calc_value )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::UpdateParameter()
|
|
{
|
|
uiCharacterStatusInfo* character_status_info = GET_CAST_DIALOG(uiCharacterStatusInfo, uiCharacterStatusInfo::kDialog_ID);
|
|
|
|
if (character_status_info == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
PlayerAttributes* player_attributes = character_status_info->GetSimulationPlayerAttributes();
|
|
const BASE_PLAYERINFO* player_info = character_status_info->GetSimulation_BASE_PLAYERINFO();
|
|
|
|
#ifdef _20220413_NEW_CHARAC_STATUS
|
|
/*BASE_OptionList *option = OptionListParser::Instance()->GetOptionListByAttr(eATTR_ADD_SKILL_ATTACK_POWER);
|
|
SetOptionName(kControl_TextImage_CaptionName_S006,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S201,
|
|
player_attributes->GetSkillAttackPower(),
|
|
player_attributes->GetBaseSkillAttackPower());
|
|
|
|
option = OptionListParser::Instance()->GetOptionListByAttr(eATTR_ADD_SKILL_DAMAGE_RATIO);
|
|
SetOptionName(kControl_TextImage_CaptionName_S000,option->mdwNameCode);
|
|
SetParameterCaptionWithPercent(kControl_TextImage_CaptionValue_S202,
|
|
player_attributes->GetSkillPercentDamage(),
|
|
player_attributes->GetBaseSkillPercentDamage());
|
|
option = OptionListParser::Instance()->GetOptionListByAttr(eATTR_BONUS_SKILL_COOL_TIME);
|
|
SetOptionName(kControl_TextImage_CaptionName_S001,option->mdwNameCode);
|
|
SetParameterCaptionWithPercent(kControl_TextImage_CaptionValue_S203,
|
|
player_attributes->GetBonusSkillCoolTime(),
|
|
player_attributes->GetBaseBonusSkillCoolTime());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(41); //致命一擊幾率
|
|
SetOptionName(kControl_TextImage_CaptionName_S002,option->mdwNameCode);
|
|
SetParameterCaptionWithPercent(kControl_TextImage_CaptionValue_S204,
|
|
player_attributes->GetCriticalRatioBonus(),
|
|
player_attributes->GetBaseCriticalRatioBonus());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(42); //致命一擊傷害
|
|
SetOptionName(kControl_TextImage_CaptionName_S004,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S205,
|
|
player_attributes->GetCriticalDamageBonus(),
|
|
player_attributes->GetBaseCriticalDamageBonus());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(61); //增益效果時間
|
|
SetOptionName(kControl_TextImage_CaptionName_S007,option->mdwNameCode);
|
|
SetParameterCaptionWithMilisecond(kControl_TextImage_CaptionValue_S206,
|
|
player_attributes->GetIncreaseSkillDuration(),
|
|
player_attributes->GetBaseIncreaseSkillDuration());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(98); //转换输出伤害为护盾值的转换量
|
|
SetOptionName(kControl_TextImage_CaptionName_S008,option->mdwNameCode);
|
|
SetParameterCaptionWithPercent(kControl_TextImage_CaptionValue_S207,
|
|
player_attributes->GetAttackDamageAbsorbSDRatio(),
|
|
player_attributes->GetBaseAttackDamageAbsorbSDRatio());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(99); //转换输出伤害为生命值的转换量
|
|
SetOptionName(kControl_TextImage_CaptionName_S009,option->mdwNameCode);
|
|
SetParameterCaptionWithPercent(kControl_TextImage_CaptionValue_S208,
|
|
player_attributes->GetAttackDamageAbsorbHPRatio(),
|
|
player_attributes->GetBaseAttackDamageAbsorbHPRatio());
|
|
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(72); //PVP時承受的傷害減少。
|
|
SetOptionName(kControl_TextImage_CaptionName_S010,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S209,
|
|
player_attributes->GetDecreasePVPDamage(),
|
|
player_attributes->GetBaseDecreasePVPDamage());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(117); //減少怪物的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S011,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S210,
|
|
player_attributes->GetDecreaseDamageNPC(),
|
|
player_attributes->GetBaseDecreaseDamageNPC());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(118); //減少狂戰士的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S012,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S211,
|
|
player_attributes->GetDecreaseDamageBerserker (),
|
|
player_attributes->GetBaseDecreaseDamageBerserker());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(119); //減少龍騎士的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S013,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S212,
|
|
player_attributes->GetDecreaseDamageDragonKnight(),
|
|
player_attributes->GetBaseDecreaseDamageDragonKnight());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(120); //減少聖射手的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S014,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S213,
|
|
player_attributes->GetDecreaseDamageValkyrie(),
|
|
player_attributes->GetBaseDecreaseDamageValkyrie());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(121); //減少魔法師的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S015,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S214,
|
|
player_attributes->GetDecreaseDamageElementalist(),
|
|
player_attributes->GetBaseDecreaseDamageElementalist());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(122); //減少暗影的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S016,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S215,
|
|
player_attributes->GetDecreaseDamageShadow(),
|
|
player_attributes->GetBaseDecreaseDamageShadow());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(123); //減少刺客的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S017,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S216,
|
|
player_attributes->GetDecreaseDamageMystic(),
|
|
player_attributes->GetBaseDecreaseDamageMystic());
|
|
/*
|
|
option = OptionListParser::Instance()->GetOptionList(124); //減少海落伊德的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S018,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S210,
|
|
player_attributes->GetDecreaseDamageNPC(),
|
|
player_attributes->GetBaseDecreaseDamageNPC());
|
|
|
|
option = OptionListParser::Instance()->GetOptionList(125); //減少魔力刀鋒的傷害。
|
|
SetOptionName(kControl_TextImage_CaptionName_S011,option->mdwNameCode);
|
|
SetParameterCaption(kControl_TextImage_CaptionValue_S210,
|
|
player_attributes->GetDecreaseDamageNPC(),
|
|
player_attributes->GetBaseDecreaseDamageNPC());*/
|
|
|
|
|
|
|
|
#else
|
|
// 胶懦傍拜仿 刘啊(%)
|
|
SetParameterCaptionWithPercent(kControl_TextImage_TI09,
|
|
player_attributes->GetSkillPercentDamage(),
|
|
player_attributes->GetBaseSkillPercentDamage());
|
|
|
|
// 胶懦 碍拳仿
|
|
SetParameterCaption(kControl_TextImage_TI12,
|
|
player_attributes->GetSkillAttackPower(),
|
|
player_attributes->GetBaseSkillAttackPower());
|
|
|
|
// 滚橇矫埃 刘啊
|
|
SetParameterCaptionWithSecond(kControl_TextImage_TI32,
|
|
player_attributes->GetIncreaseSkillDuration(),
|
|
player_attributes->GetBaseIncreaseSkillDuration());
|
|
|
|
// 乔秦 叼滚橇矫埃 皑家
|
|
SetParameterCaptionWithSecondReverse(kControl_TextImage_TI13,
|
|
player_attributes->GetDecreaseSkillDuration(),
|
|
player_attributes->GetBaseDecreaseSkillDuration());
|
|
|
|
// 啊秦 叼滚橇矫埃 碍拳
|
|
SetParameterCaptionWithMilisecond(kControl_TextImage_TI11,
|
|
player_attributes->GetDebuffDuration(),
|
|
player_attributes->GetBaseDebuffDuration());
|
|
|
|
// 胶懦惑怕公矫
|
|
SetParameterCaptionWithPercent(kControl_TextImage_I003,
|
|
player_attributes->GetResistBadStatusRatio(),
|
|
player_attributes->GetBaseResistBadStatusRatio());
|
|
|
|
// 弥措单固瘤 惯积犬伏
|
|
SetParameterCaptionWithPercent(kControl_TextImage_I004,
|
|
player_attributes->GetMaxDamageRatio(),
|
|
player_attributes->GetBaseMaxDamageRatio());
|
|
|
|
// 炼钦 己傍伏
|
|
SetParameterCaptionWithPercent(kControl_TextImage_I005,
|
|
player_attributes->GetCompositeIncRatio(),
|
|
player_attributes->GetBaseCompositeIncRatio());
|
|
|
|
// 窍烙 嚼垫
|
|
SetParameterCaptionWithPercent(kControl_TextImage_I001,
|
|
player_attributes->GetBonusMoneyRatio(),
|
|
player_attributes->GetBaseBonusMoneyRatio());
|
|
|
|
// 版氰摹 嚼垫
|
|
SetParameterCaptionWithPercent(kControl_TextImage_I002,
|
|
player_attributes->GetBonusExpRatio(),
|
|
player_attributes->GetBaseBonusExpRatio());
|
|
#endif
|
|
//
|
|
|
|
|
|
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::RenderTooltip()
|
|
{
|
|
uiCharacterStatusInfo* character_status_info = GET_CAST_DIALOG(uiCharacterStatusInfo, uiCharacterStatusInfo::kDialog_ID);
|
|
|
|
if (character_status_info == NULL)
|
|
{
|
|
return;
|
|
}
|
|
|
|
PlayerAttributes* player_attributes = character_status_info->GetSimulationPlayerAttributes();
|
|
uiToolTipMan* tooltip_manager = GET_DIALOG_MANAGER(uiToolTipMan, UIMAN_TOOLTIP);
|
|
|
|
if ((tooltip_manager == NULL) || (player_attributes == NULL))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI09))) // 胶懦傍拜仿 刘啊(%)
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseSkillPercentDamage(),
|
|
player_attributes->GetSkillPercentDamage());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI12))) // 胶懦 碍拳仿
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseSkillAttackPower(),
|
|
player_attributes->GetSkillAttackPower());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI32))) // 滚橇矫埃 刘啊
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseIncreaseSkillDuration(),
|
|
player_attributes->GetIncreaseSkillDuration());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI13))) // 乔秦 叼滚橇矫埃 皑家
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseDecreaseSkillDuration(),
|
|
player_attributes->GetDecreaseSkillDuration());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_TI11))) // 啊秦 叼滚橇矫埃 碍拳
|
|
{
|
|
RenderTooltip_BaseAndCalcMilisecond(tooltip_manager,
|
|
player_attributes->GetBaseDebuffDuration(),
|
|
player_attributes->GetDebuffDuration());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I003))) // 胶懦惑怕公矫
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseResistBadStatusRatio(),
|
|
player_attributes->GetResistBadStatusRatio());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I004))) // 弥措单固瘤 惯积犬伏
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseMaxDamageRatio(),
|
|
player_attributes->GetMaxDamageRatio());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I005))) // 炼钦 己傍伏
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseCompositeIncRatio(),
|
|
player_attributes->GetCompositeIncRatio());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I001))) // 窍烙 嚼垫
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseBonusMoneyRatio(),
|
|
player_attributes->GetBonusMoneyRatio());
|
|
}
|
|
else if (IsOverControl(GetControlWZ_byPosition(kControl_TextImage_I002))) // 版氰摹 嚼垫
|
|
{
|
|
RenderTooltip_BaseAndCalc(tooltip_manager,
|
|
player_attributes->GetBaseBonusExpRatio(),
|
|
player_attributes->GetBonusExpRatio());
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::RenderTooltip_StringCode( uiToolTipMan* tooltip_manager, int StringCode )
|
|
{
|
|
tooltip_manager->RegisterTooltipWithStringCode( StringCode );
|
|
tooltip_manager->SetTooltipDialogID(GetDialogKey());
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::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());
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::RenderTooltip_BaseAndCalcMilisecond( 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("%.1f + %.1f"));
|
|
}
|
|
else
|
|
{
|
|
_tcscat(tooltip_string, _T("%.1f - %.1f"));
|
|
}
|
|
float result_calc = static_cast<float>(calc_value) * 0.001f;
|
|
float result_base = static_cast<float>(base_value) * 0.001f;
|
|
tooltip_manager->RegisterTooltipFormat(tooltip_string, result_base, fabs(result_calc - result_base));
|
|
tooltip_manager->SetTooltipDialogID(GetDialogKey());
|
|
}
|
|
}
|
|
|
|
void uiCharacterStatusInfo2::SetParameterCaptionWithSecondReverse( 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<CCtrlImageStaticWZ*>(control_ptr),
|
|
(calc_value - base_value),
|
|
IsMaxParameterCaption(control_position, calc_value));
|
|
|
|
TCHAR string_format[INTERFACE_STRING_LENGTH] = {0, };
|
|
TCHAR string_message[INTERFACE_STRING_LENGTH] = {0, };
|
|
|
|
// 2149 : 檬
|
|
g_InterfaceManager.GetInterfaceString(2149, string_format, INTERFACE_STRING_LENGTH);
|
|
Snprintf(string_message, INTERFACE_STRING_LENGTH-1, "%d%s", calc_value, string_format);
|
|
|
|
static_cast<CCtrlImageStaticWZ*>(control_ptr)->SetTextWZ(string_message);
|
|
}
|
|
}
|
|
|
|
#endif // _NA_008472_20150903_IMPROVED_BALANCE
|