diff options
author | Patrick Davison <snapwilliam@gmail.com> | 2013-03-13 02:26:09 -0700 |
---|---|---|
committer | Patrick Davison <snapwilliam@gmail.com> | 2013-03-13 02:26:09 -0700 |
commit | 32cce4bee8a242f7a2e6d6a9e1c9e77b4af87728 (patch) | |
tree | 8f6068568fe0121380efb0e8bbb9985359245cf7 | |
parent | 1c9f62a731637f1d373485473f064626d311d705 (diff) | |
download | pathery-32cce4bee8a242f7a2e6d6a9e1c9e77b4af87728.tar.xz |
Achievement back-end for Insane Speed - and any other 'Extra' unlocks like it.
-rw-r--r-- | includes/constants.php | 28 | ||||
-rw-r--r-- | includes/datas.php | 92 | ||||
-rw-r--r-- | pages/achievements.php | 80 |
3 files changed, 129 insertions, 71 deletions
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 .= "<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; - } + $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 .= "<table><tr><td onclick='changeWallColor(\"$uValue\")' style='background-color:$uValue;' class='grid_td_rocks'></td></tr></table>"; + break; + + case UNLOCK_WALL_EMBLEM: + $r .= "$uName Emblem!"; + $r .= "<div class='emblemDisplay' title='' style='background: #999 url(../images/marks/$uValue);' >"; + //$r .= "<div class='grid_inner grid_td_gray'></div></div>"; + $r .= "<div class='emblemDisplayInner' style='width:35px; height:35px;'></div></div>"; + break; + + case UNLOCK_DISPLAY_COLOR: + $r .= "<br /><span style='color:$uValue;font-weight:bold;font-size:110%;background-color:#222;'>$uName Username color!</span>"; + 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') { diff --git a/pages/achievements.php b/pages/achievements.php index 249077c..a5e56ed 100644 --- a/pages/achievements.php +++ b/pages/achievements.php @@ -20,8 +20,9 @@ else // $userID = 3;
$viewer = true;
-if ($userID == $_SESSION['userID'])
+if ($userID == $_SESSION['userID']) {
$viewer = false;
+}
if ($_GET['apply'] == 'true') {
applyCareerMazesAchievements($userID);
@@ -69,9 +70,9 @@ echo "</tr></table>"; $debug = false;
-if ($_GET['debuglevels'] == 'yes')
+if ($_GET['debuglevels'] == 'yes') {
$debug = true;
-
+}
if ($_GET['showemblems'] == 'all') {
@@ -147,10 +148,11 @@ return("#".substr("000000".dechex($n),-6)); //Self-healing code for unlocks.
if (!$viewer) {
- applyAchievements($userID, 1);
- applyAchievements($userID, 2);
- applyAchievements($userID, 3);
- applyAchievements($userID, 4);
+ applyAchievements($userID, ACHIEVEMENT_MOVES_CAREER);
+ applyAchievements($userID, ACHIEVEMENT_MAZE_CAREER);
+ applyAchievements($userID, ACHIEVEMENT_MAZE_MASTERY);
+ applyAchievements($userID, ACHIEVEMENT_CHAMPION_POINTS);
+ applyAchievements($userID, ACHIEVEMENT_PERFECT_DAY);
}
?>
@@ -307,8 +309,9 @@ order by maxLevel.type"; $result = mysql_query($sql);
if ($result) {
- while ($row = mysql_fetch_assoc($result))
+ while ($row = mysql_fetch_assoc($result)) {
$achievements[$row['type']] = $row;
+ }
}
@@ -358,35 +361,41 @@ echo " <div style='width:100%; height:100%; background-color:transparent; background-size:100%;' class='grid_td_rocks grid_inner'></div>
</div>$UDisplay</h1>";
-function displayUnlockItem($uType, $item) {
+function unlockItemAsTD($uType, $item) {
$aLevel = $item['aLevel'];
$aCompleted = $item['dateUnlocked'];
- $aTypeNames[1] = "Path Career Level $aLevel";
- $aTypeNames[2] = "Mazes Career Level $aLevel";
- $aTypeNames[3] = "Maze Mastery Level $aLevel";
- $aTypeNames[4] = "Champion Level $aLevel";
- $aTypeNames[32] = 'Completing Tutorial';
+ $aTypeNames[ACHIEVEMENT_MOVES_CAREER] = "Path Career Level $aLevel";
+ $aTypeNames[ACHIEVEMENT_MAZE_CAREER] = "Mazes Career Level $aLevel";
+ $aTypeNames[ACHIEVEMENT_MAZE_MASTERY] = "Maze Mastery Level $aLevel";
+ $aTypeNames[ACHIEVEMENT_CHAMPION_POINTS] = "Champion Level $aLevel";
+ $aTypeNames[ACHIEVEMENT_PERFECT_DAY] = "Perfect Days $aLevel";
+ $aTypeNames[ACHIEVEMENT_TUTORIAL] = 'Completing Tutorial';
$by = $aTypeNames[$item['aType']];
$on = relative_date(strtotime($aCompleted));
$unlockTitle = "$item[name]. From $by $on";
- if ($item['aType'] == -1)
+ if ($item['aType'] == -1) {
$unlockTitle = "$item[name]";
+ }
$border = 'border: 1px solid #000; border-width: 2px 0px 2px 0px;';
$border = 'border: 1px solid #000;';
$class = 'grid_td_walls';
+ //$r .= displayUnlock($uType, $item[value], $unlockTitle);
+ //return $r;
+
switch ($uType) {
- case 1:
+ case 1:
if ($GLOBALS['wallColor'] == $item[value]) {
$class = 'grid_td_active';
$border = 'border: 1px solid #26b;';
}
$r .= "<td class='grid_td $class' id='color_$item[id]' title='$unlockTitle' onClick='colorclick(this,\"$item[value]\", \"$item[id]\")' style='padding: 0px;background-color:$item[value];$border'></td>";
break;
- case 2:
+
+ case 2:
if ($GLOBALS['wallEmblem'] == $item[value]) {
$class = 'grid_td_active';
$border = 'border: 1px solid #26b;';
@@ -394,13 +403,18 @@ function displayUnlockItem($uType, $item) { $r .= "<td class='grid_td_walls' title='$unlockTitle' id='' onClick='emblemclick(this,\"$item[value]\", \"$item[id]\")' style='background: #999 url(../images/marks/$item[value]);$border' >
<div class='grid_inner $class grid_td_walls'></div></td>";
break;
- case 3:
+
+ case 3:
if ($GLOBALS['nameColor'] == $item[value])
$border = 'border: 1px solid #26b;';
$r .= "<td class='name_color_select'><span title='$unlockTitle' onClick='namecolorclick(this,\"$item[value]\", \"$item[id]\")' style='color:$item[value]; margin-right:15px;$border'>";
$r .= " $item[name] ";
$r .= "</span></td>";
break;
+
+ case UNLOCK_EXTRAS:
+ $r .= "<td style='border: 1px solid gray;' class='name_color_select' title='$unlockTitle'>$item[name]</td>";
+ break;
}
return $r;
}
@@ -408,11 +422,12 @@ function displayUnlockItem($uType, $item) { if (isset($unlocks)) {
echo "<h2>Unlocks</h2>";
-
+
//Define some names
$uTypeNames[1] = "Wall Colors";
$uTypeNames[2] = "Emblems";
$uTypeNames[3] = "Username Colors";
+ $uTypeNames[UNLOCK_EXTRAS] = "Extras";
$uSubtypeNames[1][0] = "Darker";
$uSubtypeNames[1][1] = "Brighter";
@@ -426,7 +441,7 @@ if (isset($unlocks)) { echo "<h3>$uTypeNames[$uType] unlocked:</h3>";
foreach ($unlock as $item) {
- $subtype[$item['subtype']][] = displayUnlockItem($uType, $item);
+ $subtype[$item['subtype']][] = unlockItemAsTD($uType, $item);
if ((sizeof($subtype[$item['subtype']]) + 1) % 14 == 0)
$subtype[$item['subtype']][] = '</tr></table><table><tr>';
}
@@ -487,13 +502,14 @@ foreach($achievements as $aType => $a) { $aTypeNames[1] = "<img src='../images/Achievement_PathCareer.png' style='width:36px;height:36px;vertical-align:middle'>Path Career Level $aLevel!";
$aTypeNames[2] = "<img src='../images/Achievement_MazeCareer.png' style='width:36px;height:36px;vertical-align:middle'>Mazes Career Level $aLevel!";
$aTypeNames[3] = "<img src='../images/MedalSilverCAR.png' style='width:36px;height:36px;vertical-align:middle'>Maze Mastery Level $aLevel!";
- $aTypeNames[4] = "<img src='../images/championpoints.png' style='width:36px;height:36px;vertical-align:middle'>Champion Level $aLevel!";
+ $aTypeNames[ACHIEVEMENT_CHAMPION_POINTS] = "<img src='../images/championpoints.png' style='width:36px;height:36px;vertical-align:middle'>Champion Level $aLevel!";
+ $aTypeNames[ACHIEVEMENT_PERFECT_DAY] = "Perfect Day level $aLevel!";
$aTypeNames[32] = 'Tutorial Complete!';
$aTypeCurrency[1] = "total moves mazed";
$aTypeCurrency[2] = "mazes played";
$aTypeCurrency[3] = "mazes with (tied) top score";
- $aTypeCurrency[4] = "champion points";
+ $aTypeCurrency[ACHIEVEMENT_CHAMPION_POINTS] = "champion points";
$name = $aTypeNames[$aType];
$currency = $aTypeCurrency[$aType];
@@ -543,26 +559,6 @@ foreach($achievements as $aType => $a) { }
-function displayUnlock($uType, $uValue, $uName) {
- switch ($uType) {
- case 1:
- $r .= "$uName Wall Color!";
- $r .= "<table><tr><td onclick='changeWallColor(\"$uValue\")' style='background-color:$uValue;' class='grid_td_rocks'></td></tr></table>";
- break;
- case 2:
- $r .= "$uName Emblem!";
- $r .= "<div class='emblemDisplay' title='' style='background: #999 url(../images/marks/$uValue);' >";
- //$r .= "<div class='grid_inner grid_td_gray'></div></div>";
- $r .= "<div class='emblemDisplayInner' style='width:35px; height:35px;'></div></div>";
- break;
- case 3:
- $r .= "<br /><span style='color:$uValue;font-weight:bold;font-size:110%;background-color:#222;'>$uName Username color!</span>";
- break;
- }
- return $r;
-}
-
-
?>
</div>
|