diff options
Diffstat (limited to 'includes')
-rw-r--r-- | includes/datas.php | 288 |
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() { + + +} + ?> |