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

208 lines
5.5 KiB
C++

#include "StdAfx.h"
//_NA_005026_20120527_CHAOS_ZONE_BATTLE_GROUND
#include <Player.h>
#include <World/ChaosZoneSystem/BattleGroundPlayerInfo.h>
#ifdef _NA_006593_20130327_ADD_ACHIEVEMENT_BATTLEGROUND
#include <AreaConquestCommonHeader.h>
#endif
#ifdef _NA_006607_20130402_ADD_QUESTTYPE
#include "QuestManager.h"
#include "QuestManager_Concrete.h"
#endif
BattleGroundPlayerInfo::BattleGroundPlayerInfo(Player* player) :
player_(player),
team_key_(kChaosZoneTeamNone),
player_state_(kPlayerStateNone),
battle_ground_record_(NULL),
series_kill_(0),
max_series_kill_(0)
{
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
ZeroMemory(false_name, sizeof(false_name));
false_name[0] = '\0';
name_index_ = 0;
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND
}
void BattleGroundPlayerInfo::Init(BattleGroundRecord* const record)
{
battle_ground_record_ = record;
WORD series_kill_ = 0;
WORD max_series_kill_ =0;
}
void BattleGroundPlayerInfo::Release()
{
}
void BattleGroundPlayerInfo::IncreasePlayTimes()
{
if(battle_ground_record_)
battle_ground_record_->total_count++;
}
void BattleGroundPlayerInfo::IncreaseWinTimes()
{
if(battle_ground_record_)
battle_ground_record_->win_count++;
#ifdef _NA_006593_20130327_ADD_ACHIEVEMENT_BATTLEGROUND
player_->GetACManager()->IncConditionValue(ACHIEVEMENT_OBJECT_BATTLEGROUND_WIN,
battle_ground_record_->GetMapCode());
#endif //_NA_006593_20130327_ADD_ACHIEVEMENT_BATTLEGROUND
#ifdef _NA_006607_20130402_ADD_QUESTTYPE
QUEST_MISSION_CLEAR_MSG quest_msg;
quest_msg.mission_code = battle_ground_record_->GetMapCode();
player_->GetQuestManager()->Event(QUEST_EVENT_MISSION_CLEAR, &quest_msg);
#endif //_NA_006607_20130402_ADD_QUESTTYPE
}
void BattleGroundPlayerInfo::IncreaseDrawTimes()
{
if(battle_ground_record_)
battle_ground_record_->draw_count++;
}
void BattleGroundPlayerInfo::IncreaseLoseTimes()
{
if(battle_ground_record_)
battle_ground_record_->lose_count++;
}
void BattleGroundPlayerInfo::IncreaseDisTimes()
{
if(battle_ground_record_)
battle_ground_record_->dis_count++;
}
void BattleGroundPlayerInfo::DecreaseDisTimes()
{
if(battle_ground_record_)
{
if (battle_ground_record_->dis_count > 0)
battle_ground_record_->dis_count--;
}
}
void BattleGroundPlayerInfo::IncreaseKill(const WORD kill_point)
{
if(battle_ground_record_ == NULL)
{
return;
}
battle_ground_record_->kill_count += kill_point;
++series_kill_;
if (max_series_kill_ < series_kill_)
{
max_series_kill_ = series_kill_;
}
if (battle_ground_record_->max_series_kill < max_series_kill_)
{
battle_ground_record_->max_series_kill = max_series_kill_;
}
}
void BattleGroundPlayerInfo::IncreaseDeath()
{
series_kill_ = 0;
if(battle_ground_record_)
battle_ground_record_->death_count++;
}
void BattleGroundPlayerInfo::IncreaseStrongpointAttack()
{
if(battle_ground_record_)
battle_ground_record_->strongpoint_attack++;
#ifdef _NA_006593_20130327_ADD_ACHIEVEMENT_BATTLEGROUND
player_->GetACManager()->IncConditionValue(ACHIEVEMENT_OBJECT_BATTLEGROUND_STRONGPOINT_ATTACK,
battle_ground_record_->GetMapCode());
#endif
}
void BattleGroundPlayerInfo::IncreaseStrongpointDefense()
{
if(battle_ground_record_)
battle_ground_record_->strongpoint_defense++;
#ifdef _NA_006593_20130327_ADD_ACHIEVEMENT_BATTLEGROUND
player_->GetACManager()->IncConditionValue(ACHIEVEMENT_OBJECT_BATTLEGROUND_STRONGPOINT_DEFENSE,
battle_ground_record_->GetMapCode());
#endif
}
void BattleGroundPlayerInfo::ClearScore()
{
if(battle_ground_record_)
ZeroMemory(battle_ground_record_, sizeof(BattleGroundRecord));
}
#ifdef _NA_006633_20130415_ADD_BATTLEGROUND_ASSIST
void BattleGroundPlayerInfo::IncreaseAssistTimes()
{
if(battle_ground_record_)
battle_ground_record_->assist_count++;
}
#endif //_NA_006633_20130415_ADD_BATTLEGROUND_ASSIST
#ifdef _NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR
WORD BattleGroundPlayerInfo::GetKillTimes()
{
return battle_ground_record_->kill_count;
}
WORD BattleGroundPlayerInfo::GetAssistTimes()
{
return battle_ground_record_->assist_count;
}
WORD BattleGroundPlayerInfo::GetWintimes()
{
return battle_ground_record_->win_count;
}
#endif //_NA_006801_20130814_RENEWAL_RANKINGSYSTEM_MINOR
INT BattleGroundPlayerInfo::GetWinRatio()
{
return (INT)(((FLOAT)battle_ground_record_->win_count / (FLOAT)battle_ground_record_->total_count) * 100.0f);
}
#ifdef _NA_008679_20160202_REWORK_BATTLEGROUND
VOID BattleGroundPlayerInfo::SetFalseName(const ChaosZoneTeam& team_index, const BYTE& player_index)
{
if(team_index == kRed)
{
_sntprintf(false_name, MAX_CHARNAME_LENGTH, _T("·¹µå%d"),player_index);
}
else // if (team_index == kblue)
{
_sntprintf(false_name, MAX_CHARNAME_LENGTH, _T("ºí·ç%d"),player_index);
}
false_name[MAX_CHARNAME_LENGTH]='\0';
name_index_ = player_index;
}
VOID BattleGroundPlayerInfo::SetFalseName( const BYTE& player_index )
{
ChaosZoneTeam team_index = GetTeamKey();
if(team_index == kRed)
{
_sntprintf(false_name, MAX_CHARNAME_LENGTH, _T("·¹µå%d"),player_index);
}
else // if (team_index == kblue)
{
_sntprintf(false_name, MAX_CHARNAME_LENGTH, _T("ºí·ç%d"),player_index);
}
false_name[MAX_CHARNAME_LENGTH]='\0';
name_index_ = player_index;
}
#endif //_NA_008679_20160202_REWORK_BATTLEGROUND