summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--includes/datas.php288
1 files changed, 284 insertions, 4 deletions
diff --git a/includes/datas.php b/includes/datas.php
index 2a47a4c..c6f7666 100644
--- a/includes/datas.php
+++ b/includes/datas.php
@@ -12,11 +12,16 @@ function topScores($mapid, $top = 5) {
users.displayName as display,
solutions.moves as m,
users.ID as ID,
+ userData.displayColor,
+ userData.wallColor,
+ userData.wallEmblem,
solutions.dateModified as cdate
FROM
`users`
JOIN `solutions`
ON users.ID = solutions.userID
+ LEFT JOIN `userData`
+ ON users.ID = userData.userID
WHERE solutions.mapID = '$mapid'
ORDER BY solutions.moves DESC, solutions.dateModified ASC
LIMIT $top
@@ -27,12 +32,21 @@ function topScores($mapid, $top = 5) {
$output .= "<table class='score'>";
$output .= "<tr>";
$output .= "<th>Rank</th>";
+ $output .= "<th>Badge</th>";
$output .= "<th>Name</th>";
$output .= "<th>Moves</th>";
- $output .= "<th title='Time since map generated'>Time</th>";
+ $output .= "<th title='Time since map generation'>Time</th>";
$output .= "</tr>";
- while (list($diff, $display, $moves, $userID, $cdate) = mysql_fetch_row($result)) {
+ while (list($diff, $display, $moves, $userID, $displayColor, $wallColor, $wallEmblem, $cdate) = mysql_fetch_row($result)) {
$i++;
+ if (!isset($displayColor)) {
+ $sql = "INSERT INTO `userData` (`userID`, `displayColor`, `wallColor`)
+ VALUES ('$userID', '#cccccc', '#666666')";
+ mysql_query($sql);
+ $displayColor = '#cccccc';
+ $wallColor = '#666666';
+ $wallEmblem = '';
+ }
if ($_SESSION['userID'] == $userID)
$output .= "<tr style='background-color: #356;'>";
else
@@ -41,10 +55,14 @@ function topScores($mapid, $top = 5) {
$cdate = date("g:i A", strtotime($cdate));
$output .= "<td>$i</td>";
- $output .= "<td><span title='UserID: $userID'>$display</span></td>";
+ $output .= "<td><div class='grid_td' style='width:35px; height:35px; ";
+ $output .= "background:$wallColor";
+ if ($wallEmblem != '')
+ $output .= " url(images/marks/$wallEmblem)";
+ $output .= ";'><div style='background-color:transparent;' class='grid_td_inner grid_td_rocks'></div></td>";
+ $output .= "<td><span title='UserID: $userID'><a href='achievements?id=$userID' style='color:$displayColor'>$display</a></span></td>";
$output .= "<td>$moves</td>";
$output .= "<td title='Improved $cdate (EST)'>$diff</td>";
- //$output .= "<b>$i. <span title='UserID: $userID'>$display</span> with $moves moves. In $diff<br /></b>";
$output .= "</tr>";
}
$output .= "</table>";
@@ -52,4 +70,266 @@ function topScores($mapid, $top = 5) {
return $output;
}
+
+//Returns text refering to any notifications.
+function getNotified($userID) {
+
+ $sql = "SELECT `ID`, `type`, `level`
+ FROM `achievements`
+ WHERE `notified` = false
+ AND userID = '$userID'
+ LIMIT 1";
+
+ $result = mysql_query($sql);
+ if (mysql_num_rows($result) !== 1)
+ return false;
+
+ // --------- We found an achievement they don't know they got!
+ list($aID, $aType, $aLevel) = mysql_fetch_row($result);
+
+ $aTypeNames[1] = "Path Career Level $aLevel!";
+ $aTypeNames[2] = "Mazes Career Level $aLevel!";
+ $aTypeNames[32] = 'Tutorial Complete!';
+
+ $aName = $aTypeNames[$aType];
+
+ // --------- Any unlocks for this achievement?
+ $sql = "SELECT `type`, `name`, `value`
+ FROM `unlocks`
+ WHERE `achievementID` = '$aID'";
+ $result = mysql_query($sql);
+ $unlocked = '';
+ if (mysql_num_rows($result) >= 1) {
+ $unlocked = "You've unlocked: ";
+ while (list($uType, $uName, $uValue) = mysql_fetch_row($result)) {
+ switch ($uType) {
+ case 1:
+ $unlocked .= "$uName Wall Color!";
+ $unlocked .= "<table><tr><td onclick='changeWallColor(\"$uValue\")' style='background-color:$uValue;' class='grid_td_rocks'></td></tr></table>";
+ break;
+ case 2:
+ $unlocked .= "$uName Emblem!";
+ $unlocked .= "<div class='grid_td_rocks' title='' onClick='emblemclick(this,\"$uValue\", \"0\")' style='background: #999 url(../images/marks/$uValue);' >";
+ $unlocked .= "<div class='grid_inner grid_td_walls'></div></div>";
+ break;
+ case 3:
+ $unlocked .= "<br /><span style='color:$uValue;'>$uName Username color!</span><br />";
+ break;
+ }
+ }
+ }
+
+ // ---------- Prepare response
+
+ $r = "<strong>$aName</strong>";
+ if ($unlocked !== '') {
+ $r .= "<center>$unlocked";
+ $r .= "<a href='achievements'>";
+ $r .= "Go select this now</a>";
+ $r .= "</center>";
+ }
+ // "Next level at $nextLevelN"; // unavailable data?
+
+ // ---------- Mark that we have notified the user
+ $sql = "UPDATE `achievements`
+ SET `notified` = 1
+ WHERE `ID` = '$aID'";
+ mysql_query($sql);
+
+ return $r;
+ // ---------- Done!
+}
+
+//Returns true when an achievement is applied.
+// Usage example: applyCareerAchievement($userID);
+function applyCareerPathAchievements($userID) {
+ $sql = "SELECT
+ SUM(solutions.moves) as totalMoves
+ FROM `solutions`
+ WHERE userID = '$userID'";
+ $result = mysql_query($sql);
+
+ // --------- User hasn't played yet.
+ if (mysql_num_rows($result) != 1)
+ return false;
+
+ list($uTotalMoves) = mysql_fetch_row($result);
+
+ // ------- Select the highest level they've achieved.
+ $sql = "SELECT `level`
+ FROM `achievements`
+ WHERE `userID` = '$userID'
+ AND `type` = 1
+ ORDER BY `level` DESC
+ LIMIT 1";
+ $result = mysql_query($sql);
+ // --------- No achievements yet?
+ if (mysql_num_rows($result) == 1)
+ list($aLevel) = mysql_fetch_row($result);
+ else
+ $aLevel = 0;
+
+ $cp = getCareerPathArray();
+
+ //Is there a next level for this?
+ $aNextLevel = $aLevel + 1;
+ if (!isset($cp[$aNextLevel]))
+ return false;
+ list($required, $unlockType, $unlockValue, $unlockName) = $cp[$aNextLevel];
+
+ if ($uTotalMoves < $required)
+ return false;
+
+ $sql = "INSERT INTO `achievements`
+ (`userID`, `type`, `level`)
+ VALUES ('$userID', 1, '$aNextLevel')";
+ mysql_query($sql);
+ $aID = mysql_insert_id();
+
+ // ------- User gets unlock. (unlocks plural is possible here)
+ $sql = "INSERT INTO `unlocks`
+ (`userID`, `achievementID`, `type`, `subType`, `name`, `value`)
+ VALUES ('$userID', '$aID', '$unlockType', NULL, '$unlockName', '$unlockValue')";
+ mysql_query($sql);
+ return true;
+}
+
+//Almost a duplicate of applyCareerPathAchievements
+function applyCareerMazesAchievements($userID) {
+ $sql = "SELECT
+ COUNT(*) as totalSolutions
+ FROM `solutions`
+ WHERE userID = '$userID'";
+ $result = mysql_query($sql);
+
+ // --------- User hasn't played yet.
+ if (mysql_num_rows($result) != 1)
+ return false;
+
+ list($uTotalSolutions) = mysql_fetch_row($result);
+
+ // ------- Select the highest level they've achieved.
+ $sql = "SELECT `level`
+ FROM `achievements`
+ WHERE `userID` = '$userID'
+ AND `type` = 2
+ ORDER BY `level` DESC
+ LIMIT 1";
+ $result = mysql_query($sql);
+ // --------- No achievements yet?
+ if (mysql_num_rows($result) == 1)
+ list($aLevel) = mysql_fetch_row($result);
+ else
+ $aLevel = 0;
+
+ $cm = getCareerMazesArray();
+
+ //Is there a next level for this?
+ $aNextLevel = $aLevel + 1;
+ if (!isset($cm[$aNextLevel]))
+ return false;
+ list($required, $unlockType, $unlockValue, $unlockName) = $cm[$aNextLevel];
+
+ if ($uTotalSolutions < $required)
+ return false;
+
+ $sql = "INSERT INTO `achievements`
+ (`userID`, `type`, `level`)
+ VALUES ('$userID', 2, '$aNextLevel')";
+ mysql_query($sql);
+ $aID = mysql_insert_id();
+
+ // ------- User gets unlock. (unlocks plural is possible here)
+ $sql = "INSERT INTO `unlocks`
+ (`userID`, `achievementID`, `type`, `subType`, `name`, `value`)
+ VALUES ('$userID', '$aID', '$unlockType', NULL, '$unlockName', '$unlockValue')";
+ mysql_query($sql);
+ return true;
+}
+
+//Challenges including the Tutorial.
+function applyChallengeAchievements($userID, $challengeID, $mapID, $solution, $moves) {
+ if ($challengeID == '1') {
+ //echo 'challengeID'.$mapID;
+ //echo 'moves'.$moves;
+ if ($moves == 75 AND $mapID == 5) {
+ //echo 'true story';
+ // -------- Completed the tutorial!
+
+ //have they already completed he tutorial?
+ $sql = "SELECT `level`
+ FROM `achievements`
+ WHERE `userID` = '$userID'
+ AND `type` = 32
+ ORDER BY `level` DESC
+ LIMIT 1";
+ $result = mysql_query($sql);
+ if (mysql_num_rows($result) == 1)
+ return false;
+
+ // -------- This is the first time they've completed the tutorial!
+ $sql = "INSERT INTO `achievements`
+ (`userID`, `type`, `level`)
+ VALUES ('$userID', 32, '1')";
+ mysql_query($sql);
+ $aID = mysql_insert_id();
+
+ // ------- User gets unlock. (unlocks plural is possible here)
+ $sql = "INSERT INTO `unlocks`
+ (`userID`, `achievementID`, `type`, `subType`, `name`, `value`)
+ VALUES ('$userID', '$aID', '1', NULL, 'Blue', '#4444ff')";
+ mysql_query($sql);
+ return true;
+ }
+ }
+}
+
+
+function getAchievementsArray($type) {
+ if ($type == 1)
+ return getCareerPathArray();
+ if ($type == 2)
+ return getCareerMazesArray();
+ //Tutorial
+ if ($type == 32) {
+ $r[1] = array(1, 1, '#4444ff', 'Blue');
+ return $r;
+ }
+ return array();
+}
+
+//TYPE 1
+function getCareerPathArray() {
+ //$cp[0] = array(requiredmoves, type, 'value', 'name');
+ $cp[1] = array(100, 1, '#229922', 'Green');
+ $cp[2] = array(400, 1, '#9922ff', 'Purple');
+ $cp[3] = array(11, 2,'CircleSmall.png','Small White Circle');
+ $cp[4] = array(11, 2,'StarsR_W.png','Starry White');
+ $cp[5] = array(11, 2,'StarsR_B.png','Starry Black');
+ $cp[6] = array(11, 1, '#a9b1f6', 'Steel Blue');
+ $cp[7] = array(5000, 3, '#aafcbb', 'Green');
+ $cp[8] = array(7500, 3, '#ffffaa', 'Yellow');
+
+ return $cp;
+}
+
+//TYPE 2
+function getCareerMazesArray() {
+ //$cp[0] = array(requiredmazes, type, 'value', 'name');
+ $cm[1] = array(1, 1, '#eeeeee', 'Silver');
+ $cm[2] = array(5, 1, '#22aaaa', 'Teal');
+ $cm[3] = array(20, 1, '#ff3344', 'Red');
+ $cm[4] = array(50, 1, '#aaaa22', 'Chartreuse');
+ $cm[5] = array(75, 1, '#cc22aa', 'Orange');
+ $cm[6] = array(100, 1, '#ff9922', 'Magenta');
+
+ return $cm;
+}
+
+
+function apply() {
+
+
+}
+
?>