PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/solar27/include/game/newturn/lottery.php

https://bitbucket.org/sebs/mosolar
PHP | 101 lines | 70 code | 29 blank | 2 comment | 18 complexity | 2c70ac07288d93e89b11583bba40cc49 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. // Solar Imperium is licensed under GPL2, Check LICENSE.TXT for mode details //
  3. function NewTurn_HandleLotteryPayout($game_id, $empire)
  4. {
  5. global $DB,$GAME;
  6. if ($GAME["template"]->coord["lottery_date"] < time(NULL))
  7. {
  8. // we determine who is a winner
  9. $pool = array();
  10. $range = 0;
  11. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE lottery_tickets > 0 AND active='1'");
  12. while(!$rs->EOF)
  13. {
  14. $p = array();
  15. $p["empire"] = $rs->fields["id"];
  16. $p["start"] = $range;
  17. $range += $rs->fields["lottery_tickets"];
  18. $p["end"] = $range;
  19. $pool[] = $p;
  20. $rs->MoveNext();
  21. }
  22. if (count($pool) != 0) {
  23. srand(time(NULL));
  24. $winner = rand(0,$range);
  25. $winner_empire = -1;
  26. for ($i=0;$i<count($pool);$i++)
  27. {
  28. if (($pool[$i]["start"] <= $winner) && ($pool[$i]["end"] > $winner))
  29. {
  30. $winner_empire = $pool[$i]["empire"];
  31. break;
  32. }
  33. }
  34. if ($winner_empire != -1) {
  35. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE id='$winner_empire'");
  36. if (!$rs) trigger_error($DB->ErrorMsg());
  37. if ($empire->data["id"] == $winner_empire) {
  38. $empire->data["credits"] += $GAME["template"]->coord["lottery_cash"];
  39. $empire->save();
  40. } else {
  41. if (!$DB->Execute("UPDATE game".$game_id."_tb_empire SET credits='".($rs->fields["credits"]+$GAME["template"]->coord["lottery_cash"])."' WHERE id='$winner_empire'")) trigger_error($DB->ErrorMsg());
  42. }
  43. $evt = new EventCreator($DB);
  44. $evt->type = CONF_EVENT_LOTTERYWINNER;
  45. $evt->from = -1;
  46. $evt->params = array("empire_id"=>$rs->fields["id"],"empire_emperor"=>$rs->fields["emperor"],"empire_name"=>$rs->fields["name"],"gender"=>$rs->fields["gender"],"lottery_cash"=>$GAME["template"]->coord["lottery_cash"]);
  47. $evt->broadcast();
  48. $GAME["template"]->coord["lottery_cash"] = 0;
  49. }
  50. }
  51. }
  52. if ($GAME["template"]->coord["lottery_cash"] == 0)
  53. {
  54. $date = mktime(0,0,1,date("m"),date("d")+1,date("Y"));
  55. $jackpot = 0;
  56. $count = 0;
  57. $rs = $DB->Execute("SELECT credits FROM game".$game_id."_tb_empire WHERE active='1'");
  58. while (!$rs->EOF)
  59. {
  60. $jackpot += abs($rs->fields["credits"]);
  61. $count++;
  62. $rs->MoveNext();
  63. }
  64. $jackpot /= ($count>0?$count:1);
  65. $jackpot = $GAME["system"]->alterNumber($jackpot,25);
  66. $query = "UPDATE game".$game_id."_tb_coordinator SET lottery_cash='".$jackpot."',lottery_date='$date'";
  67. if (!$DB->Execute($query)) trigger_error($DB->ErrorMsg());
  68. $query = "UPDATE game".$game_id."_tb_empire SET lottery_tickets='0' WHERE active = '1'";
  69. if (!$DB->Execute($query)) trigger_error($DB->ErrorMsg());
  70. }
  71. }
  72. ?>