From b46fb4b28c5133ad09cf14d032bb981f4c497128 Mon Sep 17 00:00:00 2001 From: Patrick Davison Date: Thu, 2 Feb 2012 22:29:43 -0800 Subject: Achievement functions added to datas.php --- includes/datas.php | 288 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 284 insertions(+), 4 deletions(-) (limited to 'includes') 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 .= ""; $output .= ""; $output .= ""; + $output .= ""; $output .= ""; $output .= ""; - $output .= ""; + $output .= ""; $output .= ""; - 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 .= ""; else @@ -41,10 +55,14 @@ function topScores($mapid, $top = 5) { $cdate = date("g:i A", strtotime($cdate)); $output .= ""; - $output .= ""; + $output .= "
RankBadgeNameMovesTimeTime
$i$display
= 1) { + $unlocked = "You've unlocked: "; + while (list($uType, $uName, $uValue) = mysql_fetch_row($result)) { + switch ($uType) { + case 1: + $unlocked .= "$uName Wall Color!"; + $unlocked .= "
"; + break; + case 2: + $unlocked .= "$uName Emblem!"; + $unlocked .= "
"; + $unlocked .= "
"; + break; + case 3: + $unlocked .= "
$uName Username color!
"; + break; + } + } + } + + // ---------- Prepare response + + $r = "$aName"; + if ($unlocked !== '') { + $r .= "
$unlocked"; + $r .= ""; + $r .= "Go select this now"; + $r .= "
"; + } + // "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() { + + +} + ?> -- cgit v1.2.3