Files
Sun1602/Client/GameClient/Interface/uiCharacterStatus/uiCharacterStatusInfo2.cpp
T
2022-10-26 12:25:11 +08:00

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