Skip to content

Commit

Permalink
move the chance range limiting lines into CCombat::GetWinningChance
Browse files Browse the repository at this point in the history
  • Loading branch information
anonymissimus committed Nov 12, 2014
1 parent 6c6b1df commit af2ccd9
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 13 deletions.
5 changes: 1 addition & 4 deletions BotE Game/trunk/Source/GUI/CombatMenuView.cpp
Expand Up @@ -188,10 +188,7 @@ void CCombatMenuView::OnDraw(CDC* dc)

// grobe prozentuale Kampfchance und beteiligte Rassen berechnen
const boost::shared_ptr<const CAnomaly>& pAnomaly = pDoc->GetSystem(pDoc->m_ptCurrentCombatSector.x, pDoc->m_ptCurrentCombatSector.y).GetAnomaly();
m_dWinningChance = CCombat::GetWinningChance(*pMajor, m_Ships, *pDoc->GetRaceCtrl(), m_sFriends, m_sEnemies, pAnomaly.get(), false);

m_dWinningChance = min(0.99, m_dWinningChance);
m_dWinningChance = max(0.01, m_dWinningChance);
m_dWinningChance = CCombat::GetWinningChance(*pMajor, m_Ships, *pDoc->GetRaceCtrl(), m_sFriends, m_sEnemies, pAnomaly.get(), false, true);

if (m_sFriends.find(m_pPlayersRace) != m_sFriends.end())
{
Expand Down
4 changes: 1 addition & 3 deletions BotE Game/trunk/Source/GUI/GalaxyMenuView.cpp
Expand Up @@ -1782,9 +1782,7 @@ CString CGalaxyMenuView::CreateTooltip(void)
std::set<const CRace*> dummy1;
std::set<const CRace*> dummy2;
double chance = CCombat::GetWinningChance(*pMajor, involved_ships,
*pDoc->GetRaceCtrl(), dummy1, dummy2, pSector->GetAnomaly().get(), true);
chance = min(0.99, chance);
chance = max(0.01, chance);
*pDoc->GetRaceCtrl(), dummy1, dummy2, pSector->GetAnomaly().get(), true, true);

sTip += CHTMLStringBuilder::GetHTMLStringNewLine();
sTip += CHTMLStringBuilder::GetHTMLStringHorzLine();
Expand Down
2 changes: 1 addition & 1 deletion BotE Game/trunk/Source/Gamedata/AI/CombatAI.cpp
Expand Up @@ -113,7 +113,7 @@ void CCombatAI::ApplyCombatOrders(const CArray<CShips*>& vInvolvedShips, const C
// Ist die Beziehung nicht ausreichend, dann die Schiffstärken im Sektor beachten und Gewinnchance ermitteln
set<const CRace*> sFriends;
set<const CRace*> sEnemies;
double dWinningChance = CCombat::GetWinningChance(pRace1.get(), vInvolvedShips, pmRaces, sFriends, sEnemies, pAnomaly);
double dWinningChance = CCombat::GetWinningChance(pRace1.get(), vInvolvedShips, pmRaces, sFriends, sEnemies, pAnomaly, false);

if (dWinningChance > 0.75)
mCombatOrders[*it] = COMBAT_ORDER::AUTOCOMBAT;
Expand Down
12 changes: 9 additions & 3 deletions BotE Game/trunk/Source/Gamedata/Ships/Combat.cpp
Expand Up @@ -583,7 +583,7 @@ bool CCombat::CheckShipStayInCombat(int i)

// Funktion zum Berechnen der groben prozentualen Siegchance einer Rasse. Die Siegchance liegt zwischen 0 und 1.

double CCombat::GetWinningChance(const CRace& OurRace, const std::vector<boost::shared_ptr<CShips>>& vInvolvedShips, const CRaceController& races, std::set<const CRace*>& friends, std::set<const CRace*>& enemies, const CAnomaly* const pAnomaly, bool include_fleet)
double CCombat::GetWinningChance(const CRace& OurRace, const std::vector<boost::shared_ptr<CShips>>& vInvolvedShips, const CRaceController& races, std::set<const CRace*>& friends, std::set<const CRace*>& enemies, const CAnomaly* const pAnomaly, bool include_fleet, bool limit)
{
double dWinningChance = 0.5;
double dOurStrenght = 0.0;
Expand Down Expand Up @@ -649,10 +649,16 @@ double CCombat::GetWinningChance(const CRace& OurRace, const std::vector<boost::
else if (dEnemyStrenght > 0.0)
dWinningChance = dOurStrenght / dEnemyStrenght / 2.0;

if(limit)
{
dWinningChance = min(0.99, dWinningChance);
dWinningChance = max(0.01, dWinningChance);
}

return dWinningChance;
}

double CCombat::GetWinningChance(const CRace* pOurRace, const CArray<CShips*>& vInvolvedShips, const CRaceController* pmRaces, std::set<const CRace*>& sFriends, std::set<const CRace*>& sEnemies, const CAnomaly* pAnomaly)
double CCombat::GetWinningChance(const CRace* pOurRace, const CArray<CShips*>& vInvolvedShips, const CRaceController* pmRaces, std::set<const CRace*>& sFriends, std::set<const CRace*>& sEnemies, const CAnomaly* pAnomaly, bool limit)
{
AssertBotE(pOurRace);
AssertBotE(pmRaces);
Expand All @@ -662,7 +668,7 @@ double CCombat::GetWinningChance(const CRace* pOurRace, const CArray<CShips*>& v
for (int i = 0; i < vInvolvedShips.GetSize(); i++)
ships.push_back(vInvolvedShips.GetAt(i)->shared_from_this());

return GetWinningChance(*pOurRace, ships, *pmRaces, sFriends, sEnemies, pAnomaly, false);
return GetWinningChance(*pOurRace, ships, *pmRaces, sFriends, sEnemies, pAnomaly, false, limit);
}

// Funktion überprüft, ob die Rassen in einem Kampf sich gegeneinander aus diplomatischen Gründen
Expand Down
4 changes: 2 additions & 2 deletions BotE Game/trunk/Source/Gamedata/Ships/Combat.h
Expand Up @@ -72,8 +72,8 @@ class CCombat : public CObject
/**
* Funktion zum Berechnen der groben prozentualen Siegchance einer Rasse. Die Siegchance liegt zwischen 0 und 1.
*/
static double GetWinningChance(const CRace& OurRace, const std::vector<boost::shared_ptr<CShips>>& vInvolvedShips, const CRaceController& races, std::set<const CRace*>& friends, std::set<const CRace*>& enemies, const CAnomaly* const pAnomaly, bool include_fleet);
static double GetWinningChance(const CRace* pOurRace, const CArray<CShips*>& vInvolvedShips, const CRaceController* pmRaces, std::set<const CRace*>& sFriends, std::set<const CRace*>& sEnemies, const CAnomaly* pAnomaly);
static double GetWinningChance(const CRace& OurRace, const std::vector<boost::shared_ptr<CShips>>& vInvolvedShips, const CRaceController& races, std::set<const CRace*>& friends, std::set<const CRace*>& enemies, const CAnomaly* const pAnomaly, bool include_fleet, bool limit);
static double GetWinningChance(const CRace* pOurRace, const CArray<CShips*>& vInvolvedShips, const CRaceController* pmRaces, std::set<const CRace*>& sFriends, std::set<const CRace*>& sEnemies, const CAnomaly* pAnomaly, bool limit);

/**
* Funktion überprüft, ob die Rassen in einem Kampf sich gegeneinander aus diplomatischen Gründen
Expand Down

0 comments on commit af2ccd9

Please sign in to comment.