/**
 * roundInfo()
 * Return the info required to fill $ROUND.
 * @param BattleReport $report
 * @param array $attackers
 * @param array $defenders
 * @param PlayerGroup $attackerGroupObj
 * @param PlayerGroup $defenderGroupObj
 * @param int $i
 * @return array
 */
function roundInfo(BattleReport $report, $attackers, $defenders, PlayerGroup $attackerGroupObj, PlayerGroup $defenderGroupObj, $i, $attInfo, $defInfo)
{
    // the last round doesn't has next round, so we not ask for fire etc
    $round = null;
    // the last round doesn't has next round, so we not ask for fire etc
    if ($i <= $report->getLastRoundNumber()) {
        $round = $report->getRound($i);
    }
    return array('attack' => $i > $report->getLastRoundNumber() ? 0 : $round->getAttackersFirePower(), 'defense' => $i > $report->getLastRoundNumber() ? 0 : $round->getDefendersFirePower(), 'defShield' => $i > $report->getLastRoundNumber() ? 0 : $round->getDefendersAssorbedDamage(), 'attackShield' => $i > $report->getLastRoundNumber() ? 0 : $round->getAttachersAssorbedDamage(), 'attackAmount' => $i > $report->getLastRoundNumber() ? 0 : $round->getAttackersFireCount(), 'defendAmount' => $i > $report->getLastRoundNumber() ? 0 : $round->getDefendersFireCount(), 'attackers' => $attackers, 'defenders' => $defenders, 'attackA' => $attInfo[1], 'defenseA' => $defInfo[1], 'infoA' => $attInfo[0], 'infoD' => $defInfo[0]);
}
Example #2
0
 public static function startBattle($battleId, $attackerId, $defenderId)
 {
     $db = mysqli_connect("localhost", "root", "1234", "ant_rpg");
     $attackerRequest = mysqli_query($db, "SELECT tfb.quantity,a.ant_id,a.attack FROM troops_for_battle tfb\n      \tJOIN ant a\n\t    \tON tfb.ant_id=a.ant_id\n        WHERE tfb.battleid = " . $battleId);
     $defenderRequest = mysqli_query($db, "SELECT ua.quantity,a.attack,a.ant_id FROM user_ants ua JOIN ant a ON ua.ant_id=a.ant_id\n        WHERE user_id = " . $defenderId);
     $attackerATT = 0;
     while ($row = $attackerRequest->fetch_assoc()) {
         $attackerATT = $attackerATT + $row['quantity'] * $row['attack'];
     }
     $defendATT = 0;
     $attacker = User::getUserById($attackerId)['username'];
     $defender = User::getUserById($defenderId)['username'];
     while ($row = $defenderRequest->fetch_assoc()) {
         $defendATT = $defendATT + $row['quantity'] * $row['attack'];
     }
     if ($attackerATT > $defendATT) {
         $diff = $defendATT;
         $attackerAnts = Ants::getAntsByUserId($attackerId);
         for ($i = 0; $i < 2; $i++) {
             if ($i == count($attackerAnts) - 1) {
                 $attackerAnts[$i] = $attackerAnts[$i] - $diff;
             } else {
                 if ($diff > $attackerAnts[$i]) {
                     $diff = $diff - $attackerAnts[$i];
                     $attackerAnts[$i] = 0;
                 }
             }
             Ants::updateTroops($i + 1, $attackerAnts[$i], $battleId);
         }
         BattleReport::sendReport($attackerId, "You have won the attack versus player " . $defender . " and lost " . $defendATT . " troops", $defendATT);
         BattleReport::sendReport($defenderId, "You lost defence versus " . $attacker . " and lost " . $defendATT . " troops", $defendATT);
         Action::returnArmy($battleId);
         Ants::UpdateAntsToZero($defenderId);
     } elseif ($attackerATT == $defendATT) {
         BattleReport::sendReport($attackerId, "Draw you lost all your troops versus " . $defender, $defendATT);
         BattleReport::sendReport($attackerId, "Draw you lost all your troops versus " . $attacker, $defendATT);
         Ants::UpdateAntsToZero($defenderId);
     } else {
         $diff = $attackerATT;
         $defenderAnts = Ants::getAntsByUserId($defenderId);
         for ($i = 0; $i < 2; $i++) {
             if ($i == count($defenderAnts) - 1) {
                 $defenderAnts[$i] = $defenderAnts[$i] - $diff;
             } else {
                 if ($diff > $defenderAnts[$i]) {
                     $diff = $diff - $defenderAnts[$i];
                     $defenderAnts[$i] = 0;
                 }
             }
             Ants::updateAntsTo($i + 1, $defenderAnts[$i], $defenderId);
         }
         BattleReport::sendReport($defenderId, "You have won the defence versus player " . $attacker . " and lost " . $attackerATT . " troops", $attackerATT);
         BattleReport::sendReport($attackerId, "You lost the attack versus " . $defender . " and lost " . $attackerATT . " troops", $attackerATT);
     }
     mysqli_query($db, "UPDATE attack SET battled=1 WHERE idattack=" . $battleId);
 }