Files
2022-10-26 12:25:11 +08:00

147 lines
3.9 KiB
C++

#include "StdAfx.h"
#include ".\BattleRecorder.h"
// _NA_0_20091118_GAMEROOM_BATTLE_RESULT
BattleRecorder::BattleRecorder()
{
ClearRecord();
}
BattleRecorder::~BattleRecorder()
{
}
void BattleRecorder::ClearRecord()
{
record_.total_damage_to_enemy = 0;
record_.total_damage_by_enemy = 0;
record_.total_heal_to_party = 0;
record_.max_damage_to_enemy = 0;
record_.monster_kill_count = 0;
record_.player_kill_count = 0;
record_.dead_count = 0;
record_.level = 0;
//_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
record_.strongpoint_attack = 0;
record_.strongpoint_defense = 0;
#ifdef _NA_006633_20130415_ADD_BATTLEGROUND_ASSIST
record_.assist_count = 0;
#endif //_NA_006633_20130415_ADD_BATTLEGROUND_ASSIST
#ifdef _NA_007065_20140217_CHAOSZONE_GOLDRUSH
record_.gold_point = 0;
record_.cumulative_required_gold_point = 0;
#endif //_NA_007065_20140217_CHAOSZONE_GOLDRUSH
}
#ifdef _NA_007065_20140217_CHAOSZONE_GOLDRUSH
bool BattleRecorder::DoRecord(eBATTLE_RECORD_TYPE record_type, int impact_value)
#else
bool BattleRecorder::DoRecord(eBATTLE_RECORD_TYPE record_type, uint impact_value)
#endif //_NA_007065_20140217_CHAOSZONE_GOLDRUSH
{
bool dirty = false;
switch (record_type)
{
case BATTLE_RECORD_ATTACK:
{
if (impact_value > 0)
{
if (record_.max_damage_to_enemy < impact_value)
record_.max_damage_to_enemy = impact_value;
record_.total_damage_to_enemy += impact_value;
dirty = true;
}
}
break;
case BATTLE_RECORD_DAMAGE:
{
if (impact_value > 0)
{
record_.total_damage_by_enemy += impact_value;
dirty = true;
}
}
break;
case BATTLE_RECORD_MONSTER_KILL:
{
++(record_.monster_kill_count);
dirty = true;
}
break;
case BATTLE_RECORD_PLAYER_KILL:
{
++(record_.player_kill_count);
dirty = true;
}
break;
case BATTLE_RECORD_DEAD:
{
++(record_.dead_count);
dirty = true;
}
break;
case BATTLE_RECORD_HEAL:
{
if (impact_value > 0)
{
record_.total_heal_to_party += impact_value;
dirty = true;
}
}
break;
case BATTLE_RECORD_LEVEL:
{
if (impact_value > 0 && ((record_.level == 0) || (record_.level != impact_value)))
{
record_.level = impact_value;
dirty = true;
}
}
break;
case BATTLE_RECORD_STRONGPOINT_ATTACK:
{
++(record_.strongpoint_attack);
dirty = true;
}
break;
case BATTLE_RECORD_STRONGPOINT_DEFENSE:
{
++(record_.strongpoint_defense);
dirty = true;
}
break;
#ifdef _NA_006633_20130415_ADD_BATTLEGROUND_ASSIST
case BATTLE_RECORD_ASSIST:
{
++(record_.assist_count);
dirty = true;
}
break;
#endif //_NA_006633_20130415_ADD_BATTLEGROUND_ASSIST
#ifdef _NA_007065_20140217_CHAOSZONE_GOLDRUSH
case BATTLE_RECORD_GOLDPOINT:
{
if (impact_value <= 0 && abs(impact_value) > record_.gold_point) {
// 골드 감소량이 소지골드보다 클 때
record_.gold_point = 0;
}
else
{
record_.gold_point += impact_value;
if (impact_value > 0) {
//누적 골드획득량 계산
record_.cumulative_required_gold_point += impact_value;
}
}
dirty = true;
}
break;
#endif //_NA_007065_20140217_CHAOSZONE_GOLDRUSH
default:
break;
}
return dirty;
}