/solar27/include/update/army_convoy.php
PHP | 86 lines | 54 code | 27 blank | 5 comment | 19 complexity | e388d1c29d950ac22415bafa595adb4e MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, BSD-3-Clause, LGPL-2.0, MIT, GPL-2.0
- <?php
- function HandleArmyConvoys($game_id)
- {
- global $DB,$TPL;
- $time_now = time(NULL);
-
- $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_armyconvoy");
- while (!$rs->EOF) {
- $rs2 = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE id=" . $rs->fields["empire_to"]);
- $rs3 = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE id=" . $rs->fields["empire_from"]);
- if (($rs2->EOF) || ($rs3->EOF)) {
- $DB->Execute("DELETE FROM game".$game_id."_tb_armyconvoy WHERE id=" . $rs->fields["id"]);
- $rs->MoveNext();
- continue;
- }
- if ($rs->fields["time_end"] <= $time_now) {
- if (($rs->fields["convoy_type"] == CONF_CONVOY_INVASION_RETREAT) || ($rs->fields["convoy_type"] == CONF_CONVOY_DEFENSE_RETREAT)) {
- // returning convoy!
- //print "*** Returning convoy ...\r\n";
- $target_empire = new Empire($DB, new Template($DB,$game_id), new GameplayCosts($DB));
- $result = $target_empire->Load($rs->fields["empire_from"]);
-
- if ($result["code"] == true) {
- $target_empire->army->data["soldiers"] += $rs->fields["convoy_soldiers"];
- $target_empire->army->data["fighters"] += $rs->fields["convoy_fighters"];
- $target_empire->army->data["lightcruisers"] += $rs->fields["convoy_lightcruisers"];
- $target_empire->army->data["heavycruisers"] += $rs->fields["convoy_heavycruisers"];
- $target_empire->army->data["carriers"] += $rs->fields["carriers"];
- $target_empire->Save();
- }
-
- if (!$DB->Execute("DELETE FROM game".$game_id."_tb_armyconvoy WHERE id=" . $rs->fields["id"])) trigger_error($DB->ErrorMsg());
-
- } else {
- if ($rs->fields["convoy_type"] == CONF_CONVOY_INVASION) {
- //print "*** Attacking convoy ...\r\n";
- $invasion = new Invasion($DB, $rs->fields);
- $invasion->Attack();
- } else {
-
- //print "*** Defense convoy ...\r\n";
- // make the defense convoy come back if the invasion is done.
- $rs2 = $DB->Execute("SELECT * FROM game".$game_id."_tb_armyconvoy WHERE id=" . $rs->fields["convoy_target"]);
- if (($rs2->EOF) || ($rs2->fields["convoy_type"] == CONF_CONVOY_INVASION_RETREAT)) {
- $time_start = $rs->fields["time_start"];
- $time_end = $rs->fields["time_end"];
- $time_elapsed = $time_now - $time_start;
- if (!$DB->Execute("UPDATE game".$game_id."_tb_armyconvoy SET convoy_type=" . CONF_CONVOY_DEFENSE_RETREAT . ",time_start=$time_now,time_end=".($time_now + $time_elapsed)." WHERE id=" . $rs->fields["id"])) {
- trigger_error($DB->ErrorMsg());
- }
- $evt = new EventCreator($DB);
- $evt->from = -1;
- $evt->to = $rs->fields["empire_to"];
- $evt->type = CONF_EVENT_CONVOY_RETREAT;
- $evt->params = $rs->fields["empire_from"];
- $evt->send();
- }
- }
- }
- }
- $rs->MoveNext();
- }
- }
- ?>