Add order= parameter for ScoreboardEndTakeRule
parent
6bebbb3f70
commit
327eafddb7
|
@ -47,6 +47,7 @@ void CScoreboard::CScoreboardEndTakeRule::Read(CLevelParserLine* line)
|
||||||
{
|
{
|
||||||
CScoreboardRule::Read(line);
|
CScoreboardRule::Read(line);
|
||||||
this->team = line->GetParam("team")->AsInt(0);
|
this->team = line->GetParam("team")->AsInt(0);
|
||||||
|
this->order = line->GetParam("order")->AsInt(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CScoreboard::AddKillRule(std::unique_ptr<CScoreboardKillRule> rule)
|
void CScoreboard::AddKillRule(std::unique_ptr<CScoreboardKillRule> rule)
|
||||||
|
@ -75,9 +76,11 @@ void CScoreboard::ProcessKill(CObject* target, CObject* killer)
|
||||||
|
|
||||||
void CScoreboard::ProcessEndTake(int team)
|
void CScoreboard::ProcessEndTake(int team)
|
||||||
{
|
{
|
||||||
|
m_finishCounter++;
|
||||||
for (auto& rule : m_rulesEndTake)
|
for (auto& rule : m_rulesEndTake)
|
||||||
{
|
{
|
||||||
if (rule->team == team || rule->team == 0)
|
if ((rule->team == team || rule->team == 0) &&
|
||||||
|
(rule->order == m_finishCounter || rule->order == 0))
|
||||||
{
|
{
|
||||||
AddPoints(team, rule->score);
|
AddPoints(team, rule->score);
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,6 +94,7 @@ public:
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int team = 0;
|
int team = 0;
|
||||||
|
int order = 0;
|
||||||
|
|
||||||
//! Read from line in scene file
|
//! Read from line in scene file
|
||||||
void Read(CLevelParserLine* line) override;
|
void Read(CLevelParserLine* line) override;
|
||||||
|
@ -117,4 +118,5 @@ private:
|
||||||
std::vector<std::unique_ptr<CScoreboardKillRule>> m_rulesKill = {};
|
std::vector<std::unique_ptr<CScoreboardKillRule>> m_rulesKill = {};
|
||||||
std::vector<std::unique_ptr<CScoreboardEndTakeRule>> m_rulesEndTake = {};
|
std::vector<std::unique_ptr<CScoreboardEndTakeRule>> m_rulesEndTake = {};
|
||||||
std::map<int, int> m_score;
|
std::map<int, int> m_score;
|
||||||
|
int m_finishCounter = 0;
|
||||||
};
|
};
|
Loading…
Reference in New Issue