From 32cce4bee8a242f7a2e6d6a9e1c9e77b4af87728 Mon Sep 17 00:00:00 2001 From: Patrick Davison Date: Wed, 13 Mar 2013 02:26:09 -0700 Subject: Achievement back-end for Insane Speed - and any other 'Extra' unlocks like it. --- includes/constants.php | 28 +++++++++++++++ includes/datas.php | 92 ++++++++++++++++++++++++++++++++++---------------- 2 files changed, 91 insertions(+), 29 deletions(-) (limited to 'includes') diff --git a/includes/constants.php b/includes/constants.php index a6826b1..7b32819 100644 --- a/includes/constants.php +++ b/includes/constants.php @@ -75,4 +75,32 @@ $mapNamesByType = array(1 => 'Simple', 2 => 'Normal', 3 => 'Complex', 4 => 'Spec * Make sure the first one is always 0... */ $tierChallengeRequirements = array(0, 5, 10, 15, 20, 25, 30); + + + +/** + * Unlock Types + */ +define('UNLOCK_WALL_COLOR', 1); +define('UNLOCK_WALL_EMBLEM', 2); +define('UNLOCK_DISPLAY_COLOR', 3); +define('UNLOCK_WALL_ROTATION', 4); +define('UNLOCK_EXTRAS', 8); +// MISC SUBTYPES: + +define('MISC_UNLOCK_INSANE_SPEED', 1); + +/** + * Achievement Types + */ +define('ACHIEVEMENT_MOVES_CAREER', 1); +define('ACHIEVEMENT_MAZE_CAREER', 2); +define('ACHIEVEMENT_MAZE_MASTERY', 3); +define('ACHIEVEMENT_CHAMPION_POINTS', 4); +define('ACHIEVEMENT_PERFECT_DAY', 5); + +define('ACHIEVEMENT_TUTORIAL', 32); + + + ?> diff --git a/includes/datas.php b/includes/datas.php index 74487fd..7e64732 100644 --- a/includes/datas.php +++ b/includes/datas.php @@ -19,7 +19,7 @@ function getNotified($userID) { FROM `achievements` WHERE `notified` = false AND userID = '$userID' - LIMIT 25"; + LIMIT 5"; $resultA = mysql_query($sql); if (mysql_num_rows($resultA) <= 0) @@ -54,20 +54,7 @@ function getNotified($userID) { 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 .= "
"; - break; - case 2: - $unlocked .= "$uName Emblem!"; - $unlocked .= "
"; - $unlocked .= "
"; - break; - case 3: - $unlocked .= "
$uName Username color!
"; - break; - } + $unlocked .= displayUnlock($uType, $uValue, $uName); } } // ---------- Prepare response @@ -110,6 +97,32 @@ function getNotified($userID) { // ---------- Done! } +function displayUnlock($uType, $uValue, $uName) { + switch ($uType) { + case UNLOCK_WALL_COLOR: + $r .= "$uName Wall Color!"; + $r .= "
"; + break; + + case UNLOCK_WALL_EMBLEM: + $r .= "$uName Emblem!"; + $r .= "
"; + //$r .= "
"; + $r .= "
"; + break; + + case UNLOCK_DISPLAY_COLOR: + $r .= "
$uName Username color!"; + break; + + case UNLOCK_EXTRAS: + $r .= "Extras: $uName"; + break; + } + return $r; +} + + //Returns true when an achievement is applied. // Usage example: applyCareerAchievement($userID); // TODO: DEPRECIATED @@ -531,13 +544,25 @@ function getAchievementCurrency($userID, $aType) { $sql = "SELECT championPoints FROM `users` WHERE `ID` = '$userID'"; + break; + case 5: + $sql = "SELECT count(*) + FROM solutions + INNER JOIN mapOfTheDay ON solutions.mapID = mapOfTheDay.mapID + WHERE mapOfTheDay.mapType + IN ( 1, 2, 3, 4 ) + AND solutions.userID = '$userID' + GROUP BY solutions.userID, mapOfTheDay.mapDate + HAVING COUNT( isTiedForHighScore ) = 4"; + $result = mysql_query($sql) OR die("SQL query failed; $sql"); + return mysql_num_rows($result); break; } - if ($sql == '') - return false; + if ($sql == '') return false; $result = mysql_query($sql) OR die("SQL query failed; $sql"); - if (mysql_num_rows($result) == 1) + if (mysql_num_rows($result) == 1) { list($r) = mysql_fetch_row($result); + } return $r; } @@ -552,22 +577,20 @@ function getAchievementLevel($userID, $aType) { ORDER BY `level` DESC LIMIT 1"; $result = mysql_query($sql); - if (mysql_num_rows($result) == 1) + if (mysql_num_rows($result) == 1) { list($r) = mysql_fetch_row($result); + } return $r; } function getAchievementsArray($type) { - if ($type == 1) - return getCareerPathArray(); - if ($type == 2) - return getCareerMazesArray(); - if ($type == 3) - return getMazeMasteryArray(); - if ($type == 4) - return getChampionPointsArray(); + if ($type == ACHIEVEMENT_MOVES_CAREER) return getCareerPathArray(); + if ($type == ACHIEVEMENT_MAZE_CAREER) return getCareerMazesArray(); + if ($type == ACHIEVEMENT_MAZE_MASTERY) return getMazeMasteryArray(); + if ($type == ACHIEVEMENT_CHAMPION_POINTS) return getChampionPointsArray(); + if ($type == ACHIEVEMENT_PERFECT_DAY) return getPerfectDayArray(); //Tutorial - if ($type == 32) { + if ($type == ACHIEVEMENT_TUTORIAL) { $r[1] = array(1, 1, '#4444ff', 'Blue'); return $r; } @@ -655,11 +678,22 @@ function getChampionPointsArray() { $r[7] = array(8000, 2, 'CrossXLDonut_B_I.png', 'Inverted Dark Large Intersection', 0); $r[8] = array(16000, 2, 'DiamondLarge_B.png', 'Dark Large Diamond', 0); $r[9] = array(32000, 1, '#22ff22', 'Neon Lime', 1); - //$r[7] = array(75, 2, 'CircleSmall_W_I.png', 'Inverted Bright Small Circle', 0); return $r; } +//TYPE 5 +function getPerfectDayArray() { + //$cp[0] = array(requiredpoints, type, 'value', 'name'); + $r[1] = array(1, UNLOCK_EXTRAS, MISC_UNLOCK_INSANE_SPEED, 'Insane Speed'); + //These numbers temporarly unreasonable + $r[2] = array(9275, UNLOCK_WALL_EMBLEM, 'CircleSmall_W_I.png', 'Inverted Bright Small Circle', 0); + $r[3] = array(10000, UNLOCK_WALL_EMBLEM, 'DiamondLarge_W_I.png', 'Inverted Light Large Diamond', 0); + + return $r; +} + + //Select Members function getMembers($pageNumber = 1, $pageDivide = 50, $order = 'DESC', $orderBy = 'dateJoined') { -- cgit v1.2.3