PageRenderTime 39ms CodeModel.GetById 11ms RepoModel.GetById 0ms app.codeStats 0ms

/solar27/joingame.php

https://bitbucket.org/sebs/mosolar
PHP | 200 lines | 147 code | 41 blank | 12 comment | 24 complexity | ca8fd83988042c2be295060e219876b1 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. define("LANGUAGE_DOMAIN","system");
  4. require_once("include/init.php");
  5. if (!isset($_SESSION["player"])) {
  6. $DB->CompleteTrans();
  7. die(header("Location: welcome.php"));
  8. }
  9. if (!isset($_GET["GAME"])) {
  10. $DB->CompleteTrans();
  11. die(T_("Invalid GAME ID!"));
  12. }
  13. $rs = $DB->Execute("SELECT * FROM system_tb_games WHERE id=".intval($_GET["GAME"]));
  14. if ($rs->EOF) {
  15. $DB->CompleteTrans();
  16. die(T_("Invalid GAME ID!"));
  17. }
  18. $game_data = $rs->fields;
  19. // **************************************************************
  20. // Join now callback
  21. // **************************************************************
  22. if ((isset($_GET["JOINNOW"])) && isset($_POST["empire_name"])) {
  23. $game_id = intval($_GET["GAME"]);
  24. $empire_name = addslashes($_POST["empire_name"]);
  25. $emperor_name = addslashes($_POST["emperor_name"]);
  26. $gender = addslashes($_POST["gender"]);
  27. $autobio = addslashes($_POST["autobiography"]);
  28. if ($empire_name == "") { $DB->CompleteTrans(); die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Invalid empire name!"))); }
  29. if ($emperor_name == "") { $DB->CompleteTrans(); die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Invalid emperor/emperess name!"))); }
  30. if ($gender == "") { $DB->CompleteTrans(); die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Invalid gender!"))); }
  31. if ($autobio == "") $autobio = T_("--- No biography defined ---");
  32. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_coordinator");
  33. if ($rs->EOF) { $DB->CompleteTrans(); die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Game not resetted yet!"))); }
  34. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE emperor='$emperor_name'");
  35. if (!$rs->EOF) { $DB->CompleteTrans(); die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Emperor/emperess name already in use!"))); }
  36. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE name='$empire_name'");
  37. if (!$rs->EOF) { $DB->CompleteTrans(); die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Empire name already in use!"))); }
  38. // 1 check if its a premium
  39. if ($game_data["premium_only"] ==1) {
  40. if ($_SESSION["player"]["premium"] != 1) {
  41. $DB->CompleteTrans();
  42. die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("You need to be a premium member to join this game!")));
  43. }
  44. }
  45. // 2 check if its already full
  46. $rs = $DB->Execute("SELECT COUNT(*) FROM game".$game_id."_tb_empire WHERE active < 2");
  47. if ($rs->fields[0] >= $game_data["max_players"]) {
  48. $DB->CompleteTrans();
  49. die(header("Location: joingame.php?GAME=".intval($_GET["GAME"])."&WARNING=".T_("Too much players, this game is full!")));
  50. }
  51. // 3 find a valid starmap position
  52. $x = 0;
  53. $y = 0;
  54. do {
  55. $x = -1000+(rand(0,40) * 50);
  56. $y = -1000+(rand(0,40) * 50);
  57. $rs = $DB->Execute("SELECT * FROM game".$game_id."_tb_empire WHERE (x>=".($x-50)." AND x<=".($x+50).") AND (y>=".($y-50)." AND y<=".($y+50).") AND active < 2");
  58. } while(!$rs->EOF);
  59. $default_logo = $default_logo[rand(0,count($default_logo)-1)];
  60. $premium = $_SESSION["player"]["premium"];
  61. // 4 insert data in dabase
  62. $query = "INSERT INTO game".$game_id."_tb_empire (player_id,
  63. emperor,
  64. name,
  65. gender,
  66. logo,
  67. biography,
  68. active,
  69. date,
  70. last_turn_date,
  71. turns_left,
  72. protection_turns_left,
  73. credits,
  74. last_credits,
  75. population,
  76. food,
  77. x,y,premium,food_rate,ore_rate,petroleum_rate)
  78. VALUES(".$_SESSION["player"]["id"].",
  79. '".$emperor_name."',
  80. '".$empire_name."',
  81. '".$gender."',
  82. '$default_logo',
  83. '".$autobio."',
  84. 1,
  85. ".time(NULL).",
  86. ".time(NULL).",
  87. ".$game_data["turns_per_day"].",
  88. ".$game_data["protection_turns"].",
  89. ".CONF_START_CREDITS.",
  90. ".CONF_START_CREDITS.",
  91. ".CONF_START_POPULATION.",
  92. ".CONF_START_FOOD.",$x,$y,$premium,".CONF_DEFAULT_AUTOSELL_RATE.",".CONF_DEFAULT_AUTOSELL_RATE.",".CONF_DEFAULT_AUTOSELL_RATE."
  93. );";
  94. $DB->Execute($query);
  95. if (!$DB) trigger_error($DB->ErrorMsg());
  96. $id = $DB->Insert_ID();
  97. $query = "INSERT INTO game".$game_id."_tb_production (empire) values($id)";
  98. $DB->Execute($query);
  99. $query = "INSERT INTO game".$game_id."_tb_supply (empire, rate_soldier) values($id,100);";
  100. $DB->Execute($query);
  101. $query = "INSERT INTO game".$game_id."_tb_planets (
  102. empire,
  103. food_planets,
  104. ore_planets,
  105. tourism_planets,
  106. supply_planets,
  107. gov_planets,
  108. edu_planets,
  109. research_planets,
  110. urban_planets,
  111. petro_planets,
  112. antipollu_planets)
  113. VALUES(
  114. $id,
  115. ".CONF_START_FOOD_PLANETS.",
  116. ".CONF_START_ORE_PLANETS.",
  117. ".CONF_START_TOURISM_PLANETS.",
  118. ".CONF_START_SUPPLY_PLANETS.",
  119. ".CONF_START_GOV_PLANETS.",
  120. ".CONF_START_EDU_PLANETS.",
  121. ".CONF_START_RESEARCH_PLANETS.",
  122. ".CONF_START_URBAN_PLANETS.",
  123. ".CONF_START_PETRO_PLANETS.",
  124. ".CONF_START_ANTIPOLLU_PLANETS."
  125. );";
  126. $DB->Execute($query);
  127. $query = "INSERT INTO game".$game_id."_tb_army (empire,soldiers,fighters,stations)
  128. VALUES($id,".CONF_START_SOLDIERS.",".CONF_START_FIGHTERS.",".CONF_START_STATIONS.");";
  129. $DB->Execute($query);
  130. $evt_type = CONF_EVENT_NEWEMPIRE;
  131. $evt_from = $id;
  132. $evt_params = array("empire_emperor"=>$emperor_name,"empire_name"=>$empire_name,"gender"=>$gender);
  133. $evt_sticky = 0;
  134. $evt_seen = 0;
  135. $evt_height = 160;
  136. $query = "SELECT * FROM game".$game_id."_tb_empire WHERE active=1";
  137. $recipients = $DB->Execute($query);
  138. while(!$recipients->EOF)
  139. {
  140. $query = "INSERT INTO game".$game_id."_tb_event (event_type,event_from,event_to,params,seen,sticky,date,height) ".
  141. "VALUES(".$evt_type.",".$evt_from.",".$recipients->fields["id"].",'".addslashes(serialize($evt_params))."',".$evt_seen.",".$evt_sticky.",".time(NULL).",".$evt_height.")";
  142. if (!$DB->Execute($query)) trigger_error($DB->ErrorMsg());
  143. $recipients->MoveNext();
  144. }
  145. // garbage collection
  146. $timeout_unseen = time(NULL) - CONF_UNSEEN_EVENT_TIMEOUT;
  147. $timeout_seen = time(NULL) - CONF_SEEN_EVENT_TIMEOUT;
  148. if (!$DB->Execute("DELETE FROM game".$game_id."_tb_event WHERE date < $timeout_unseen AND seen=0")) trigger_error($this->DB->ErrorMsg());
  149. if (!$DB->Execute("DELETE FROM game".$game_id."_tb_event WHERE date < $timeout_seen AND seen=1")) trigger_error($this->DB->ErrorMsg());
  150. $DB->CompleteTrans();
  151. die(header("Location: gamesbrowser.php?SUCCESS"));
  152. }
  153. // ***************************************************
  154. // Display page
  155. // ***************************************************
  156. $TPL->assign("game_id",$_GET["GAME"]);
  157. $DB->CompleteTrans();
  158. $TPL->display("page_joingame.html");
  159. ?>