PageRenderTime 29ms CodeModel.GetById 58ms RepoModel.GetById 0ms app.codeStats 0ms

/website/set_topscore.asp

https://github.com/cornflakesuperstar/minesweeper
ASP | 82 lines | 68 code | 14 blank | 0 comment | 31 complexity | 2ab95fb68941d80bd2c1c67984233549 MD5 | raw file
  1. <%@ LANGUAGE = JScript %>
  2. <%
  3. Response.Write(main());
  4. function main() {
  5. var boardType = Request.QueryString("boardType");
  6. var timeTaken = Request.QueryString("timeTaken");
  7. var name = Request.QueryString("name");
  8. var dateRecorded = Request.QueryString("dateRecorded");
  9. if (boardType == "" || timeTaken == "" || name == "" || dateRecorded == "") {
  10. return;
  11. }
  12. //read top scores from XML file
  13. //NOTE: DOES NOT HANDLE CONCURRENT ACCESSES TO THE FILE YET
  14. filename = "top_scores.xml";
  15. var xml = Server.CreateObject("Microsoft.XMLDOM");
  16. xml.async = false;
  17. xml.load(Server.MapPath(".") + "\\top_scores.xml");
  18. var numScoresRecorded = xml.selectSingleNode("topScores/numberScoresRecorded").text;
  19. var rank = -1;
  20. var scoresOnBoard = xml.selectNodes("topScores/" + boardType + "/score");
  21. var scoreBefore = null;
  22. var notFound = true;
  23. for (var i = 0; i < scoresOnBoard.length && notFound; i++) {
  24. var currentScore = scoresOnBoard[i].selectSingleNode("timeTaken").text;
  25. if (parseInt(timeTaken) < parseInt(currentScore)) {
  26. rank = i;
  27. notFound = false;
  28. }
  29. scoreBefore = scoresOnBoard[i];
  30. }
  31. var lastScore = false;
  32. if (notFound && rank == -1) {
  33. if (i < numScoresRecorded - 1) {
  34. rank = i + 1;
  35. notFound = false;
  36. lastScore = true;
  37. }
  38. else if (i <= numScoresRecorded) {
  39. rank = i;
  40. notFound = false;
  41. lastScore = true;
  42. }
  43. }
  44. if (rank > numScoresRecorded || rank == -1 || (scoresOnBoard.length != 0 && notFound)) {
  45. return;
  46. }
  47. var newScore = xml.createElement("score");
  48. var timeTakenNode = xml.createElement("timeTaken");
  49. timeTakenNode.text = timeTaken;
  50. var nameNode = xml.createElement("name");
  51. nameNode.text = name;
  52. var dateRecordedNode = xml.createElement("dateRecorded");
  53. dateRecordedNode.text = dateRecorded;
  54. newScore.appendChild(timeTakenNode);
  55. newScore.appendChild(nameNode);
  56. newScore.appendChild(dateRecordedNode);
  57. var board = xml.selectSingleNode("topScores/" + boardType);
  58. if (rank == 0 && scoresOnBoard.length == 0) {
  59. board.appendChild(newScore);
  60. } else if (rank == board.childNodes.length || lastScore) {
  61. board.appendChild(newScore);
  62. }else {
  63. board.insertBefore(newScore, scoreBefore);
  64. }
  65. xml.save (Server.mappath(".") + "\\top_scores.xml")
  66. return xml.xml;
  67. }
  68. %>