'api/v1/games/' . $game->packageName . '/purchases',
buildPurchases($game)
);
- /**/
-
- /* this crashes babylonian twins
- writeJson(
- 'api/v1/games/' . $game->packageName . '/purchases',
- "{}\n"
- );
- */
writeJson(
'api/v1/apps/' . $game->packageName . '.json',
}
}
+calculateRank($games);
+
foreach ($developers as $developer) {
writeJson(
//index.htm does not need a rewrite rule
. '/products/index.htm',
buildDeveloperProducts($developer['products'], $developer['info'])
);
+ writeJson(
+ //index.htm does not need a rewrite rule
+ 'api/v1/developers/' . $developer['info']->uuid
+ . '/current_gamer',
+ buildDeveloperCurrentGamer()
+ );
}
writeJson('api/v1/discover-data/discover.json', buildDiscover($games));
writeJson('api/v1/discover-data/home.json', buildDiscoverHome($games));
+//make
+writeJson(
+ 'api/v1/discover-data/tutorials.json',
+ buildMakeCategory('Tutorials', filterByGenre($games, 'Tutorials'))
+);
+
+
function buildDiscover(array $games)
{
+ $games = removeMakeGames($games);
$data = [
'title' => 'DISCOVER',
'rows' => [],
);
}
- $genres = getAllGenres($games);
+ $genres = removeMakeGenres(getAllGenres($games));
sort($genres);
addChunkedDiscoverRows($data, $genres, 'Genres');
usort(
$games,
function ($gameA, $gameB) {
- return strcmp($gameA->title, $gameB->title);
+ return strcasecmp($gameA->title, $gameB->title);
}
);
$chunks = array_chunk($games, 4);
return $data;
}
+function buildMakeCategory($name, $games)
+{
+ $data = [
+ 'title' => $name,
+ 'rows' => [],
+ 'tiles' => [],
+ ];
+
+ usort(
+ $games,
+ function ($gameA, $gameB) {
+ return strcasecmp($gameA->title, $gameB->title);
+ }
+ );
+ addDiscoverRow($data, '', $games);
+
+ return $data;
+}
+
function buildDiscoverHome(array $games)
{
//we do not want anything here for now
];
}
+function buildDeveloperCurrentGamer()
+{
+ return [
+ 'gamer' => [
+ 'uuid' => '00702342-0000-1111-2222-c3e1500cafe2',
+ 'username' => 'stouyapi',
+ ],
+ ];
+}
+
/**
* For /api/v1/developers/xxx/products/?only=yyy
*/
}
}
+/**
+ * Implements a sensible ranking system described in
+ * https://stackoverflow.com/a/1411268/2826013
+ */
+function calculateRank(array $games)
+{
+ $averageRatings = array_map(
+ function ($game) {
+ return $game->rating->average;
+ },
+ $games
+ );
+ $average = array_sum($averageRatings) / count($averageRatings);
+ $C = $average;
+ $m = 500;
+
+ foreach ($games as $game) {
+ $R = $game->rating->average;
+ $v = $game->rating->count;
+ $game->rating->rank = ($R * $v + $C * $m) / ($v + $m);
+ }
+}
+
function getFirstVideoUrl($media)
{
foreach ($media as $medium) {
return null;
}
+function removeMakeGames(array $games)
+{
+ return filterByGenre($games, 'Tutorials', true);
+}
+
+function removeMakeGenres($genres)
+{
+ $filtered = [];
+ foreach ($genres as $genre) {
+ if ($genre != 'Tutorials' && $genre != 'Builds') {
+ $filtered[] = $genre;
+ }
+ }
+ return $filtered;
+}
+
function writeJson($path, $data)
{
global $wwwDir;