/** * 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]); }
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); }