PageRenderTime 51ms CodeModel.GetById 28ms RepoModel.GetById 0ms app.codeStats 0ms

/solar27/include/update/army_convoy.php

https://bitbucket.org/sebs/mosolar
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
  1. <?php
  2. function HandleArmyConvoys($game_id)
  3. {
  4. global $DB,$TPL;
  5. $time_now = time(NULL);
  6. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_armyconvoy");
  7. while (!$rs->EOF) {
  8. $rs2 = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE id=" . $rs->fields["empire_to"]);
  9. $rs3 = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE id=" . $rs->fields["empire_from"]);
  10. if (($rs2->EOF) || ($rs3->EOF)) {
  11. $DB->Execute("DELETE FROM game".$game_id."_tb_armyconvoy WHERE id=" . $rs->fields["id"]);
  12. $rs->MoveNext();
  13. continue;
  14. }
  15. if ($rs->fields["time_end"] <= $time_now) {
  16. if (($rs->fields["convoy_type"] == CONF_CONVOY_INVASION_RETREAT) || ($rs->fields["convoy_type"] == CONF_CONVOY_DEFENSE_RETREAT)) {
  17. // returning convoy!
  18. //print "*** Returning convoy ...\r\n";
  19. $target_empire = new Empire($DB, new Template($DB,$game_id), new GameplayCosts($DB));
  20. $result = $target_empire->Load($rs->fields["empire_from"]);
  21. if ($result["code"] == true) {
  22. $target_empire->army->data["soldiers"] += $rs->fields["convoy_soldiers"];
  23. $target_empire->army->data["fighters"] += $rs->fields["convoy_fighters"];
  24. $target_empire->army->data["lightcruisers"] += $rs->fields["convoy_lightcruisers"];
  25. $target_empire->army->data["heavycruisers"] += $rs->fields["convoy_heavycruisers"];
  26. $target_empire->army->data["carriers"] += $rs->fields["carriers"];
  27. $target_empire->Save();
  28. }
  29. if (!$DB->Execute("DELETE FROM game".$game_id."_tb_armyconvoy WHERE id=" . $rs->fields["id"])) trigger_error($DB->ErrorMsg());
  30. } else {
  31. if ($rs->fields["convoy_type"] == CONF_CONVOY_INVASION) {
  32. //print "*** Attacking convoy ...\r\n";
  33. $invasion = new Invasion($DB, $rs->fields);
  34. $invasion->Attack();
  35. } else {
  36. //print "*** Defense convoy ...\r\n";
  37. // make the defense convoy come back if the invasion is done.
  38. $rs2 = $DB->Execute("SELECT * FROM game".$game_id."_tb_armyconvoy WHERE id=" . $rs->fields["convoy_target"]);
  39. if (($rs2->EOF) || ($rs2->fields["convoy_type"] == CONF_CONVOY_INVASION_RETREAT)) {
  40. $time_start = $rs->fields["time_start"];
  41. $time_end = $rs->fields["time_end"];
  42. $time_elapsed = $time_now - $time_start;
  43. 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"])) {
  44. trigger_error($DB->ErrorMsg());
  45. }
  46. $evt = new EventCreator($DB);
  47. $evt->from = -1;
  48. $evt->to = $rs->fields["empire_to"];
  49. $evt->type = CONF_EVENT_CONVOY_RETREAT;
  50. $evt->params = $rs->fields["empire_from"];
  51. $evt->send();
  52. }
  53. }
  54. }
  55. }
  56. $rs->MoveNext();
  57. }
  58. }
  59. ?>