diff options
Diffstat (limited to 'js')
-rw-r--r-- | js/mapspecs.js | 46 | ||||
-rw-r--r-- | js/scores.js | 224 |
2 files changed, 251 insertions, 19 deletions
diff --git a/js/mapspecs.js b/js/mapspecs.js index e1def28..ee9759d 100644 --- a/js/mapspecs.js +++ b/js/mapspecs.js @@ -20,6 +20,7 @@ else if (document.attachEvent) { // IE 8- }
var isChallenge = false;
+var isTutorial = false;
var solution = new Array();
var blocks = new Array();
@@ -190,6 +191,12 @@ function requestSol(mapID) { ajax.runAJAX();
}
+function requestChallengeSolution(mapID, challengeID) {
+ ajax.requestFile = "do.php?r=getChallengeSolution&mapID="+mapID+'&challengeID='+challengeID; //prepare strdata
+ ajax.onCompletion = requestSolDone; // specify function to be executed on response
+ ajax.runAJAX();
+}
+
function requestSolDone() {
var JO;
JO = decryptJSON(ajax.response);
@@ -261,7 +268,10 @@ function request_path_done() { return;
}
+
var disptext = "Record: "+JO.best+" by "+JO.bestby;
+ if (isChallenge)
+ disptext = '';
updateDsp(JO.mapid, 'dspID', disptext);
mapdata[mapid].moveCount = new Object;
@@ -277,18 +287,6 @@ function request_path_done() { mapdata[mapid].pathColor[i] = '#ffffff';
animatePath(JO.path[i].path, mapid, JO.path[i].start, i);
}
-
- //Mark off challenges
- //TODO: Temporarly disabled because it breaks the tutorial;
- if(isChallenge && 2 == 4)
- {
- for(var i = 0; i < JO.completedChallenges.length; i++)
- {
- var challengeId = JO.completedChallenges[i];
- document.getElementById("challenge_id_" + challengeId).className = "challenge_complete";
- }
- }
-
}
function decryptJSON(text) {
@@ -323,6 +321,22 @@ function animatePathDone(mapid) { if (isChallenge == true) {
challengeGo(mapid);
}
+ //Mark off challenges
+ //TODO: This hack is stupidd :(
+ if(isChallenge && isTutorial == false)
+ {
+ for(var i = 0; i < mapjson[mapid].completedChallenges.length; i++)
+ {
+ var challengeId = mapjson[mapid].completedChallenges[i];
+ var handle = document.getElementById("challenge_id_" + challengeId);
+
+ if (handle.className.indexOf('challenge_complete') < 0) {
+
+ handle.className = "challenge_complete";
+ flashelement("challenge_id_" + challengeId, 4);
+ }
+ }
+ }
}
function checkSound(mapid) {
@@ -597,6 +611,7 @@ function doanimate(x, y, p, c, mapid, pathNumber) { switch (selected) {
case '1':
rs =120;
+ rs =0;
break;
case '2':
@@ -670,8 +685,13 @@ function doanimate(x, y, p, c, mapid, pathNumber) { // if (mapdata[mapid].moveCount[1] < mapdata[mapid].moveCount[pathNumber] - 2
// || mapdata[mapid].moveCount[0] < mapdata[mapid].moveCount[pathNumber] - 2)
// rs = rs + 100;
+
+ if (count[mapid] % 2 == 1 && rs == 0)
+ doanimate(x,y,p,t,mapid,pathNumber);
+ else
+ setTimeout("doanimate("+x+","+y+",'"+p+"','"+t+"','"+mapid+"','"+pathNumber+"')",rs);
+ //setTimeout("doanimate("+x+","+y+",'"+p+"','"+t+"','"+mapid+"','"+pathNumber+"')",1);
- setTimeout("doanimate("+x+","+y+",'"+p+"','"+t+"','"+mapid+"','"+pathNumber+"')",rs);
}
diff --git a/js/scores.js b/js/scores.js index 0c1383f..734683a 100644 --- a/js/scores.js +++ b/js/scores.js @@ -28,10 +28,12 @@ function scoresRequestPage(mapid, page) { ajax.runAJAX();// Do it!
return true;
}
+
function scoresRequestLoading() {
//Signify that it's working in some manner?
//console.log("I'm loading teh page...");
}
+
function scoresRequestPageDone() {
//console.log("Request Page Done", ajax.response);
var JO = decryptJSON(ajax.response);
@@ -46,6 +48,7 @@ function scoresRequestPageDone() { }
}
}
+
function scoresUpdatePage(mapid, page, html) {
// console.log("Updating Page", mapid, page);
scoresPreparePage(mapid, page);
@@ -55,6 +58,7 @@ function scoresUpdatePage(mapid, page, html) { scoresShowPage(mapid, page);
}
}
+
function scoresShowMyPage(mapid) {
//Future use
}
@@ -101,6 +105,7 @@ function scoresPreparePage (mapid, page) { }
return true;
}
+
function scoresFormatPage(JO) {
// console.log("Formating page");
@@ -132,14 +137,14 @@ function scoresFormatPage(JO) { styleClass = 'border-top: 6px solid #777799;';
p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title='Scored "+scoredLocalTime.format("h:MM:ss TT")+"'>";
- p = p+ "<td style='text-align:left;'>";
+ p = p+ "<td class='scoreMedal'>";
if (u.medal == 'gold') {
- p = p+ "<img title='Current Champion' src='../images/MedalGoldCAR.png' style='width:32px;height:32px;vertical-align:middle'>";
+ p = p+ "<img title='Current Champion' src='../images/MedalGoldCAR.png'>";
} else if (u.medal == 'silver') {
- p = p+ "<img title='Tied Top Score' src='../images/MedalSilverCAR.png' style='width:32px;height:32px;vertical-align:middle'>";
+ p = p+ "<img title='Tied Top Score' src='../images/MedalSilverCAR.png'>";
} else {
- p = p+ "<img src='../images/blank.png' style='width:32px;height:32px;vertical-align:middle'>";
+ p = p+ "<img src='../images/blank.png'>";
}
p = p+ i+ "</td>";
p = p+ "<td style='vertical-align: middle;'>";
@@ -148,7 +153,7 @@ function scoresFormatPage(JO) { p = p+ " </div>";
p = p+ " </div>";
p = p+ "";
- p = p+ "<span style='float:left; padding: 5px 0px 3px 3px; width:120px; overflow:hidden; text-overflow: ellipsis; white-space:nowrap; '><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
+ p = p+ "<span class='scoreName'><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
p = p+ "</td>";
p = p+ "<td style='text-align:right;'>"+u.moves+"</td>";
p = p+ "</tr>";
@@ -181,6 +186,7 @@ function scoresFormatPage(JO) { //p = JO.navi+p;
return p;
}
+
function scoresFormatPageNavi(JO) {
var r = '';
var showedPrevPage = true;
@@ -208,4 +214,210 @@ function scoresFormatPageNavi(JO) { }
return r;
-}
\ No newline at end of file +}
+
+
+//Memberlist related functions:
+var membersPages = new Object;
+var membersCurrentPage = 1;
+
+function membersRequestPage(page) {
+ console.log('membersRequestPage', page);
+ if (typeof(ajax) != 'object') {
+ setTimeout(function() {membersRequestPage(page)},200);
+ return false;
+ }
+ // Ask again if it's busy.
+ switch (ajax.xmlhttp.readyState) {
+ case 4:
+ case 0:
+ break;
+ default:
+ setTimeout(function() {membersRequestPage(page)},300);
+ return false;
+ }
+
+ //console.log("Requesting Page", page, ajax.inUse);
+ // == Additionally, check for achievements.
+ ajax.requestFile = "do.php?r=reqMemberPage&reqPage="+page;
+ ajax.onCompletion = membersRequestPageDone; // Specify function to be executed on response.
+ //ajax.onLoading = '';
+ //ajax.onLoaded = '';
+ //ajax.onFail = '';
+ ajax.runAJAX();// Do it!
+ return true;
+}
+
+function membersRequestPageDone() {
+ //console.log("Request Page Done", ajax.response);
+ var JO = decryptJSON(ajax.response);
+ if (JO == undefined)
+ return;
+ membersUpdatePage(JO.page, membersFormatPage(JO));
+}
+
+function membersShowPage(page) {
+ page = page - 0;
+ console.log('membersShowPage', page);
+ if (membersPreparePage(page) == false) {
+ membersCurrentPage = page;
+ //Signify some sort of loadingness?
+ //Request Page
+ membersRequestPage(page);
+ return;
+ }
+
+ if (typeof(membersPages[page].html) === 'undefined') {
+ membersRequestPage(page);
+ membersCurrentPage = page;
+ return;
+ }
+ document.getElementById('members').innerHTML = membersPages[page].html
+
+ //Also; update the page
+
+ if (page != membersCurrentPage) {
+ membersRequestPage(page);
+ }
+ membersCurrentPage = page;
+}
+
+function membersPreparePage (page) {
+ if (typeof(membersPages) != 'object') {
+ membersPages = new Object;
+ membersPages[page] = new Object;
+ return false;
+ }
+ if (typeof(membersPages[page]) != 'object') {
+ membersPages[page] = new Object;
+ return false;
+ }
+ return true;
+}
+
+function membersUpdatePage(page, html) {
+ console.log("Updating Page", page);
+ membersPreparePage(page);
+ membersPages[page].html = html;
+ if (page == membersCurrentPage) {
+ membersShowPage(page);
+ }
+}
+
+function membersFormatPageNavi(JO) {
+ var r = '';
+ var showedPrevPage = true;
+ for (var i = 1; i <= JO.pageCount; i++) {
+ if (
+ (JO.page > i - 3 && JO.page < i + 3)
+ || (i == 1)
+ || (i == JO.pageCount)
+ || (i == JO.userPage)
+ ) {
+
+ if (!showedPrevPage)
+ r = r + ' ... ';
+ if (JO.page == i) {
+ r = r + " <b style='color:#aaaabb; font-size:150%;'>" + i + "</b>";
+ } else if (i == JO.userPage) {
+ r = r + " <a href='javascript:membersShowPage("+i+")' style='color:#99cc99;' title='You are on this page'><i>" + i + '</i></a>';
+ } else {
+ r = r + " <a href='javascript:membersShowPage("+i+")'>" + i + '</a>';
+ }
+ showedPrevPage = true;
+ } else {
+ showedPrevPage = false;
+ }
+ }
+
+ return r;
+}
+
+function membersFormatPage(JO) {
+ // console.log("Formating page");
+
+ var p = "<table class='score'>";
+ if (JO.pageCount > 1) {
+ var navi = membersFormatPageNavi(JO);
+ p = p+"<tr><td colspan='9' style='text-align:center;'>"+navi+"</td></tr>";
+ }
+
+ p = p+"<tr title='Updated "+JO.updateTime+"'>";
+ p = p+"<th>Rank</th>";
+ p = p+"<th style='width:125px; overflow:hidden; text-align:left; padding-left:42px;'>Name</th>";
+ p = p+"<th>Mazes</th>";
+ p = p+"<th>Moves</th>";
+ p = p+"<th>Past Week</th>";
+ p = p+"<th>Wins</th>";
+ p = p+"<th>Ties</th>";
+ p = p+"<th>Joined</th>";
+ p = p+"<th>Last Login</th>";
+ p = p+"</tr>";
+
+ var showedLastUser = true;
+ var x = 0;
+
+ var previousI = 0;
+
+ for (var i in JO.users) {
+ var u = JO.users[i];
+ var scoredLocalTime = new Date();
+ scoredLocalTime.setTime(scoredLocalTime.getTime() - u.secondsSinceScored * 1000);
+
+ var styleClass = '';
+
+ if (previousI != i + 1)
+ if (previousI < i - 1 && previousI != 0)
+ styleClass = 'border-top: 6px solid #777799;';
+
+ p = p+ "<tr style='"+styleClass+" background-color: "+u.background+"; color:"+u.displayColor+";' title='Scored "+scoredLocalTime.format("h:MM:ss TT")+"'>";
+ p = p+ "<td style='text-align:left;'>";
+ p = p+ i+ "</td>";
+ p = p+ "<td style='vertical-align: middle;'>";
+ p = p+ " <div class='grid_td' style='float:left; width:35px; height:35px; background:"+u.wallColor+" url(images/marks/"+u.wallEmblem+");'>";
+ p = p+ " <div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'>";
+ p = p+ " </div>";
+ p = p+ " </div>";
+ p = p+ "";
+ p = p+ "<span class='scoreName'><a href='achievements?id="+u.ID+"' style='color:"+u.displayColor+"'>"+u.display+"</a></span>";
+ p = p+ "</td>";
+
+ p = p+ "<td style='text-align:right;'>"+u.totalMazes+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalMoves+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalMovesThisWeek+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalWins+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.totalTies+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.dateJoined+"</td>";
+ p = p+ "<td style='text-align:right;'>"+u.dateLogin+"</td>";
+ p = p+ "</tr>";
+
+ previousI = i;
+ }
+
+ //p = p+"<tr><th colspan='3' style='text-align:center;'>"+navi+"</th></tr>";
+ p = p+"</table>";
+
+ var nextPage = JO.page - 0 + 1;
+ var prevPage = JO.page - 1;
+
+ if (JO.pageCount > 1) {
+ if (JO.page < JO.pageCount) {
+ p = p+"<a href='javascript:membersShowPage("+nextPage+")' class='rightBtn scoreActive'>></a>";
+ } else
+ p = "<div class='rightBtn scoreDisabled'>></div>"+p;
+ if (JO.page > 1) {
+ p = "<a href='javascript:membersShowPage("+prevPage+")' class='leftBtn scoreActive'><</a>"+p;
+ } else
+ p = "<div class='leftBtn scoreDisabled'><</div>"+p;
+ }
+ p = "<div class='scoreContainer1'>"+p+"</div>";
+
+ //console.log(p);
+ //console.log('jo page', JO.page);
+ //console.log('jo pagecount', JO.pageCount);
+ //p = JO.navi+p;
+ return p;
+}
+
+
+
|