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

/lib/dbconns.php

https://bitbucket.org/mikel3377/webgame
PHP | 274 lines | 208 code | 52 blank | 14 comment | 6 complexity | 76ce7a50a97a4b34b148a5a1f6ff170c MD5 | raw file
  1. <?php
  2. include('configuration.php');
  3. class MySql
  4. {
  5. public static function Init()
  6. {
  7. return MySql::openmysql();
  8. }
  9. public static function RegenerateTables()
  10. {
  11. MySql::drop_tables();
  12. MySql::create_tables();
  13. MySql::create_triggers();
  14. MySql::gen_default_data();
  15. }
  16. public static function CreateGame( $user1, $user2 )
  17. {
  18. return self::create_game( array( $user1, $user2));;
  19. }
  20. private static function CreateUser($name,$pass)
  21. {
  22. $name = mysql_real_escape_string( $name );
  23. $query = "INSERT INTO userpass (user, pass, color)
  24. VALUES ('$name', '" . pass_hash($pass) . "', '#FFFFFF')";
  25. mysql_query($query) or die("mysql_error()");
  26. }
  27. // this may probly be moved to updatelib later maybe, or just be called idk
  28. public static function CreateUnit( $gameid, $oid, $x, $y, $type )
  29. {
  30. return self::add_unit($gameid, $oid, $x, $y, $type);
  31. }
  32. //private
  33. private static $my_sql_link = null;
  34. private static function openmysql()
  35. {
  36. if( MySql::$my_sql_link ) return MySql::$my_sql_link;
  37. MySql::$my_sql_link = mysql_connect('localhost', 'derp', 'herpdong');
  38. if (!MySql::$my_sql_link) {
  39. die( mysql_error());
  40. }
  41. mysql_select_db("webgame") or die(mysql_error());
  42. return MySql::$my_sql_link;
  43. }
  44. private static function create_tables()
  45. {
  46. $query = 'CREATE TABLE userpass (
  47. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  48. user VARCHAR(200),
  49. pass VARCHAR(60),
  50. credits INT DEFAULT 0,
  51. wins INT DEFAULT 0,
  52. color VARCHAR(8))';
  53. mysql_query($query) or die(mysql_error());
  54. echo "<div>userpass table created</div>";
  55. $query = "CREATE TABLE games(
  56. id INT NOT NULL AUTO_INCREMENT,
  57. PRIMARY KEY(id),
  58. label VARCHAR(60),
  59. activeuser INT NOT NULL,
  60. updateid INT DEFAULT 0,
  61. turn INT DEFAULT 1,
  62. height INT,
  63. width INT,
  64. seed INT,
  65. INDEX( activeuser ),
  66. FOREIGN KEY ( activeuser )
  67. REFERENCES userpass(id))";
  68. mysql_query($query) or die(mysql_error());
  69. echo "<div>games table created</div>";
  70. $query = "CREATE TABLE usergames(
  71. gameid INT NOT NULL,
  72. userid INT NOT NULL,
  73. resources INT NOT NULL DEFAULT 0,
  74. PRIMARY KEY( gameid, userid ),
  75. FOREIGN KEY( gameid )
  76. REFERENCES games(id),
  77. FOREIGN KEY( userid )
  78. REFERENCES userpass(id))";
  79. mysql_query($query) or die(mysql_error());
  80. echo "<div>usergames table created</div>";
  81. $query = "CREATE TABLE units(
  82. id INT NOT NULL AUTO_INCREMENT,
  83. PRIMARY KEY(id),
  84. name VARCHAR(30),
  85. ownerid INT,
  86. gameid INT NOT NULL,
  87. type INT NOT NULL,
  88. actionused BOOLEAN NOT NULL DEFAULT FALSE,
  89. x INT NOT NULL,
  90. y INT NOT NULL,
  91. hp INT NOT NULL,
  92. maxhp INT NOT NULL,
  93. moverange INT NOT NULL,
  94. moves INT NOT NULL DEFAULT 0,
  95. INDEX( gameid ),
  96. FOREIGN KEY(gameid)
  97. REFERENCES games( id ),
  98. INDEX( ownerid ),
  99. FOREIGN KEY(ownerid)
  100. REFERENCES userpass( id ))";
  101. mysql_query($query) or die(mysql_error());
  102. echo "<div>units table created</div>";
  103. $query = "CREATE TABLE gameupdates(
  104. id INT NOT NULL AUTO_INCREMENT,
  105. PRIMARY KEY(id),
  106. gameid INT NOT NULL,
  107. type INT NOT NULL,
  108. param1 INT NOT NULL,
  109. param2 INT NOT NULL,
  110. param3 INT NOT NULL,
  111. param4 INT DEFAULT NULL,
  112. FOREIGN KEY(gameid)
  113. REFERENCES games( id ))";
  114. mysql_query($query) or die(mysql_error());
  115. echo "<div>gameupdates table created</div>";
  116. $query = "CREATE TABLE chatmessages(
  117. id INT NOT NULL AUTO_INCREMENT,
  118. PRIMARY KEY(id),
  119. gameid INT NOT NULL,
  120. username VARCHAR(30),
  121. message VARCHAR(100),
  122. FOREIGN KEY(gameid)
  123. REFERENCES games( id ))";
  124. mysql_query($query) or die(mysql_error());
  125. echo "<div>chatmessages table created</div>";
  126. }
  127. private static function create_triggers()
  128. {
  129. $query = "CREATE
  130. TRIGGER gameupdatetrigger AFTER INSERT
  131. ON gameupdates FOR EACH ROW BEGIN
  132. UPDATE games SET games.updateid = NEW.id WHERE games.id = NEW.gameid;
  133. END";
  134. mysql_query($query) or die(mysql_error());
  135. echo "<div>Trigger unitsgameupdate created</div>";
  136. }
  137. private static function get_game_active_player( $game_id )
  138. {
  139. $query = "SELECT user FROM userpass, games WHERE userpass.id = games.activeuser AND games.id = $game_id";
  140. $result = mysql_query($query);
  141. if( $row = mysql_fetch_array($result))
  142. {
  143. return $row['user'];
  144. }
  145. return null;
  146. }
  147. private static function add_unit( $gid, $oid, $x, $y, $type )
  148. {
  149. $name = GenerateName();
  150. if( $type == 0 )
  151. $name = GenerateBaseName();
  152. $t = UnitConfiguration::GetByID( $type );
  153. $query = "INSERT INTO units( gameid, ownerid, name, type, x, y, moves, moverange, hp, maxhp, actionused )
  154. VALUES( $gid, $oid, '$name', $type, $x, $y, $t->MoveRange, $t->MoveRange, $t->MaxHP, $t->MaxHP, false )";
  155. mysql_query($query) or die(mysql_error());
  156. return mysql_insert_id();
  157. }
  158. private static function create_game( $users )
  159. {
  160. $r = rand();
  161. $name = NameGenerator::BattleNameGenerator();
  162. $name = $name->Generate();
  163. $query = "INSERT INTO games(label, activeuser, width, height, seed )
  164. VALUES( '$name', 2, 21, 15, $r )";
  165. mysql_query($query) or die(mysql_error());
  166. $gameid = mysql_insert_id();
  167. echo "<div>game $gameid added</div>";
  168. $map = new Map( $gameid );
  169. $i = 0;
  170. $positions = array( array( 8,7, false), array(13,7, true), array( 20, 7 ));
  171. foreach( $users as $user )
  172. {
  173. $pos = array(rand(2,19), rand(2,14), false);
  174. $x = $pos[0];
  175. $y = $pos[1];
  176. $flip = $pos[2];
  177. $query = "INSERT INTO usergames( gameid, userid, resources )
  178. VALUES( $gameid, $user, 2000 )";
  179. mysql_query($query) or die(mysql_error());
  180. self::add_unit($gameid, $user, $x, $y, 4);
  181. // add_unit($gameid, $user, $x+4, $y-4, 2);
  182. }
  183. return $gameid;
  184. }
  185. private static function gen_default_data()
  186. {
  187. self::CreateUser('mikel3377','mikelfei');
  188. self::CreateUser('herp','dong');
  189. mysql_query("UPDATE userpass SET color='#FFFF00' WHERE user='herp'") or die(mysql_error());
  190. mysql_query("UPDATE userpass SET color='#0000FF' WHERE user='mikel3377'") or die(mysql_error());
  191. //for( $i = 0; $i < 5; $i++)
  192. // gen_game(20+($i+1)*10, 1, 2);
  193. for( $i = 0; $i < 4; $i++)
  194. self::create_game( array( 1, 2));
  195. mysql_query("INSERT INTO chatmessages (gameid, username, message) VALUES (1, 'GOD', 'mike is a fag roflcopter')") or die(mysql_error());
  196. }
  197. private static function drop_tables()
  198. {
  199. mysql_query("DROP TABLE IF EXISTS units") or die(mysql_error());
  200. //echo "<div>units table deleted</div>";
  201. mysql_query("DROP TABLE IF EXISTS unitgroups") or die(mysql_error());
  202. //echo "<div>unitgroups table deleted</div>";
  203. mysql_query("DROP TABLE IF EXISTS gameupdates") or die(mysql_error());
  204. //echo "<div>gamemessages table deleted</div>";
  205. mysql_query("DROP TABLE IF EXISTS chatmessages") or die(mysql_error());
  206. //echo "<div>chatmessages table deleted</div>";
  207. mysql_query("DROP TABLE IF EXISTS gamemessages") or die(mysql_error());
  208. //echo "<div>gamemessages table deleted</div>";
  209. mysql_query("DROP TABLE IF EXISTS usergames") or die(mysql_error());
  210. //echo "<div>usergames table deleted</div>";
  211. mysql_query("DROP TABLE IF EXISTS games") or die(mysql_error());
  212. //echo "<div>games table deleted</div>";
  213. mysql_query("DROP TABLE IF EXISTS userpass") or die(mysql_error());
  214. //echo "<div>userpass table deleted</div>";
  215. echo "<div>all tables dropped</div>";
  216. }
  217. }
  218. function pass_hash($pass){
  219. //hashes a given password
  220. return hash_hmac('ripemd160', $pass, 'herpderp912');
  221. }
  222. ?>