Skip to content
Snippets Groups Projects
Commit 8d77c11b authored by Lorenz Martin Diel's avatar Lorenz Martin Diel
Browse files

first integration of XML to units

parent 325cecb3
Branches
No related tags found
No related merge requests found
...@@ -76,7 +76,7 @@ namespace advanced_wars ...@@ -76,7 +76,7 @@ namespace advanced_wars
MatchupTabel damageMatrix; MatchupTabel damageMatrix;
std::vector<Unit *> units; std::vector<Unit *> units;
/*
void Unit::attack(Unit& enemy) { void Unit::attack(Unit& enemy) {
int offDamage = 50; int offDamage = 50;
...@@ -88,6 +88,47 @@ namespace advanced_wars ...@@ -88,6 +88,47 @@ namespace advanced_wars
this->health = this->health - defDamage; this->health = this->health - defDamage;
std::cout << "Health ally:" << this->health << std::endl; std::cout << "Health ally:" << this->health << std::endl;
} }
}*/
void Unit::attack(Unit &enemy)
{
// Zuerst die Tabel für die primäre Waffe der angreifenden Einheit holen
auto &attackerSecondaryWeaponTable = secWeapon[id];
// Schadenswert für die angreifende Einheit gegen die verteidigende Einheit berechnen
if (attackerSecondaryWeaponTable.find(enemy.id) != attackerSecondaryWeaponTable.end())
{
int attackerDamageValue = attackerSecondaryWeaponTable[enemy.id];
// Berechne den Schaden in Abhängigkeit der Gesundheit der angreifenden Einheit
int offDamage = attackerDamageValue * (static_cast<float>(health) / max_health);
// Schaden auf den Gegner anwenden
enemy.health -= offDamage;
std::cout << "Enemy health after attack: " << enemy.health << std::endl;
// Prüfen, ob der Gegner noch am Leben ist um zurückzuschlagen
if (enemy.health > 0)
{
// Tabelle für die primäre Waffe der verteidigenden Einheit holen
auto &defenderSecondaryWeaponTable = secWeapon[enemy.id];
if (defenderSecondaryWeaponTable.find(this->id) != defenderSecondaryWeaponTable.end())
{
int defenderDamageValue = defenderSecondaryWeaponTable[this->id];
int defDamage = defenderDamageValue * (static_cast<float>(enemy.health) / enemy.max_health);
// Schaden auf die angreifende Einheit anwenden
this->health -= defDamage;
std::cout << "Ally health after retaliation: " << this->health << std::endl;
}
}
}
else
{
std::cerr << "No damage value found for attack from unit " << static_cast<int>(id)
<< " against unit " << static_cast<int>(enemy.id) << std::endl;
}
} }
void Unit::update_position(int posX, int posY) void Unit::update_position(int posX, int posY)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment