add ids platformer
This commit is contained in:
parent
f6336babdb
commit
3501f5086a
|
@ -12,9 +12,9 @@ Fetches the entire list as a JSON, including levels of type `type`. `type` can b
|
||||||
|
|
||||||
**Returns**: An array of [`NLWLevel`](#nlwlevel--level)s.
|
**Returns**: An array of [`NLWLevel`](#nlwlevel--level)s.
|
||||||
|
|
||||||
#### `/ids`
|
#### `/ids?type={type}`
|
||||||
|
|
||||||
Fetches the IDS list as a JSON. **Experimental.**
|
Fetches the IDS list as a JSON, including levels of type `type`. `type` can be `regular`, `platformer` or `all` and defaults to `regular`. **Experimental.**
|
||||||
|
|
||||||
**Returns**: An array of [`IDSLevel`](#idslevel-level)s.
|
**Returns**: An array of [`IDSLevel`](#idslevel-level)s.
|
||||||
|
|
||||||
|
|
43
ids.js
43
ids.js
|
@ -3,6 +3,7 @@ import { persistently } from './persistance.js';
|
||||||
|
|
||||||
const IDS_ID = '15ehtAIpCR8s04qIb8zij9sTpUdGJbmAE_LDcfVA3tcU';
|
const IDS_ID = '15ehtAIpCR8s04qIb8zij9sTpUdGJbmAE_LDcfVA3tcU';
|
||||||
const IDS_REGULAR_LEVELS_ID = 1309758655;
|
const IDS_REGULAR_LEVELS_ID = 1309758655;
|
||||||
|
const IDS_PLATFORMER_LEVELS_ID = 506524049;
|
||||||
|
|
||||||
const fruityLevels = {
|
const fruityLevels = {
|
||||||
'The Place': 'The Place',
|
'The Place': 'The Place',
|
||||||
|
@ -38,7 +39,7 @@ const colors = {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchRegularCells(sheet) {
|
async function fetchRegularCells(sheet) {
|
||||||
console.log('fetching cells');
|
console.log('fetching regular cells');
|
||||||
// we need this for formatting :)
|
// we need this for formatting :)
|
||||||
await persistently(async () => await sheet.loadCells('A:B'));
|
await persistently(async () => await sheet.loadCells('A:B'));
|
||||||
|
|
||||||
|
@ -70,8 +71,41 @@ async function fetchRegularCells(sheet) {
|
||||||
return { levels, tiers, broken, creators, skillsets, descriptions };
|
return { levels, tiers, broken, creators, skillsets, descriptions };
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchLevels(sheet) {
|
async function fetchPlatformerCells(sheet) {
|
||||||
const { levels, tiers, broken, creators, skillsets, descriptions } = await fetchRegularCells(sheet);
|
console.log('fetching platformer cells');
|
||||||
|
// we need this for formatting :)
|
||||||
|
await persistently(async () => await sheet.loadCells('A:B'));
|
||||||
|
|
||||||
|
let levels = [];
|
||||||
|
let tiers = [];
|
||||||
|
let broken = [];
|
||||||
|
|
||||||
|
let rowID = 1;
|
||||||
|
let previousTier = 'penis tier :33';
|
||||||
|
while (true) {
|
||||||
|
const cell = sheet.getCell(rowID, 0);
|
||||||
|
if (!cell || cell == null || cell.value == null) break;
|
||||||
|
const color = cell.backgroundColor || {};
|
||||||
|
const colorString = Math.round((color.red || 0) * 255) + ',' + Math.round((color.green || 0) * 255) + ',' + Math.round((color.blue || 0) * 255);
|
||||||
|
let tier = colors[colorString];
|
||||||
|
if (!tier) tier = { tier: previousTier };
|
||||||
|
if (rowID > 50 && tier.tier === 'Fuck') tier = { tier: previousTier, broken: 'no' };
|
||||||
|
levels.push(cell.value.toString())
|
||||||
|
tiers.push(tier.tier);
|
||||||
|
broken.push(tier.broken || null);
|
||||||
|
previousTier = tier.tier;
|
||||||
|
rowID++;
|
||||||
|
}
|
||||||
|
|
||||||
|
const creators = await persistently(async () => await sheet.getCellsInRange('C2:C'));
|
||||||
|
const skillsets = await persistently(async () => await sheet.getCellsInRange('E2:E'));
|
||||||
|
const descriptions = await persistently(async () => await sheet.getCellsInRange('F2:F'));
|
||||||
|
|
||||||
|
return { levels, tiers, broken, creators, skillsets, descriptions };
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchLevels(sheet, platformer) {
|
||||||
|
const { levels, tiers, broken, creators, skillsets, descriptions } = await (platformer ? fetchPlatformerCells(sheet) : fetchRegularCells(sheet));
|
||||||
|
|
||||||
let levelObjs = [];
|
let levelObjs = [];
|
||||||
|
|
||||||
|
@ -107,6 +141,7 @@ export async function fetchAllLevels() {
|
||||||
|
|
||||||
console.log('fetching IDS levels');
|
console.log('fetching IDS levels');
|
||||||
return {
|
return {
|
||||||
regular: await fetchLevels(doc.sheetsById[IDS_REGULAR_LEVELS_ID]),
|
regular: await fetchLevels(doc.sheetsById[IDS_REGULAR_LEVELS_ID], false),
|
||||||
|
platformer: await fetchLevels(doc.sheetsById[IDS_PLATFORMER_LEVELS_ID], true),
|
||||||
};
|
};
|
||||||
}
|
}
|
21
index.js
21
index.js
|
@ -16,12 +16,13 @@ let levels = {
|
||||||
},
|
},
|
||||||
ids: {
|
ids: {
|
||||||
regular: [],
|
regular: [],
|
||||||
|
platformer: [],
|
||||||
},
|
},
|
||||||
metadata: [],
|
metadata: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
function getAllLevels() {
|
function getAllLevels() {
|
||||||
return [...levels.nlw.regular, ...levels.nlw.platformer, ...levels.nlw.pending, ...levels.ids.regular];
|
return [...levels.nlw.regular, ...levels.nlw.platformer, ...levels.nlw.pending, ...levels.ids.regular, ...levels.ids.platformer];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function exists(f) {
|
async function exists(f) {
|
||||||
|
@ -41,6 +42,7 @@ async function loadCache() {
|
||||||
if (await exists(path.join(cacheFolder, 'nlw-pending.json'))) levels.nlw.pending = JSON.parse(await fs.readFile(path.join(cacheFolder, 'nlw-pending.json'), 'utf8'));
|
if (await exists(path.join(cacheFolder, 'nlw-pending.json'))) levels.nlw.pending = JSON.parse(await fs.readFile(path.join(cacheFolder, 'nlw-pending.json'), 'utf8'));
|
||||||
if (await exists(path.join(cacheFolder, 'nlw-platformer.json'))) levels.nlw.platformer = JSON.parse(await fs.readFile(path.join(cacheFolder, 'nlw-platformer.json'), 'utf8'));
|
if (await exists(path.join(cacheFolder, 'nlw-platformer.json'))) levels.nlw.platformer = JSON.parse(await fs.readFile(path.join(cacheFolder, 'nlw-platformer.json'), 'utf8'));
|
||||||
if (await exists(path.join(cacheFolder, 'ids-regular.json'))) levels.ids.regular = JSON.parse(await fs.readFile(path.join(cacheFolder, 'ids-regular.json'), 'utf8'));
|
if (await exists(path.join(cacheFolder, 'ids-regular.json'))) levels.ids.regular = JSON.parse(await fs.readFile(path.join(cacheFolder, 'ids-regular.json'), 'utf8'));
|
||||||
|
if (await exists(path.join(cacheFolder, 'ids-platformer.json'))) levels.ids.regular = JSON.parse(await fs.readFile(path.join(cacheFolder, 'ids-platformer.json'), 'utf8'));
|
||||||
if (await exists(path.join(cacheFolder, 'metadata.json'))) levels.metadata = JSON.parse(await fs.readFile(path.join(cacheFolder, 'metadata.json'), 'utf8'));
|
if (await exists(path.join(cacheFolder, 'metadata.json'))) levels.metadata = JSON.parse(await fs.readFile(path.join(cacheFolder, 'metadata.json'), 'utf8'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +51,7 @@ async function saveCache() {
|
||||||
await fs.writeFile(path.join(cacheFolder, 'nlw-pending.json'), JSON.stringify(levels.nlw.pending));
|
await fs.writeFile(path.join(cacheFolder, 'nlw-pending.json'), JSON.stringify(levels.nlw.pending));
|
||||||
await fs.writeFile(path.join(cacheFolder, 'nlw-platformer.json'), JSON.stringify(levels.nlw.platformer));
|
await fs.writeFile(path.join(cacheFolder, 'nlw-platformer.json'), JSON.stringify(levels.nlw.platformer));
|
||||||
await fs.writeFile(path.join(cacheFolder, 'ids-regular.json'), JSON.stringify(levels.ids.regular));
|
await fs.writeFile(path.join(cacheFolder, 'ids-regular.json'), JSON.stringify(levels.ids.regular));
|
||||||
|
await fs.writeFile(path.join(cacheFolder, 'ids-platformer.json'), JSON.stringify(levels.ids.platformer));
|
||||||
await fs.writeFile(path.join(cacheFolder, 'metadata.json'), JSON.stringify(levels.metadata));
|
await fs.writeFile(path.join(cacheFolder, 'metadata.json'), JSON.stringify(levels.metadata));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,7 +226,21 @@ app.get('/list', (req, res) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
app.get('/ids', (req, res) => {
|
app.get('/ids', (req, res) => {
|
||||||
res.json(levels.ids.regular);
|
let list;
|
||||||
|
if (!type || type === '' || type === 'regular') {
|
||||||
|
list = levels.ids.regular;
|
||||||
|
} else if (type === 'platformer') {
|
||||||
|
list = levels.ids.regular;
|
||||||
|
} else if (type === 'all') {
|
||||||
|
list = [
|
||||||
|
...levels.ids.regular.map(l => ({ type: 'regular', ...l })),
|
||||||
|
...levels.ids.platformer.map(l => ({ type: 'platformer', ...l })),
|
||||||
|
];
|
||||||
|
} else {
|
||||||
|
return res.status(400);
|
||||||
|
}
|
||||||
|
|
||||||
|
res.json(list.map(l => ({ ...(getMetadata(l) || {}), ...l })));
|
||||||
});
|
});
|
||||||
|
|
||||||
const port = process.env.PORT || 8080
|
const port = process.env.PORT || 8080
|
||||||
|
|
Loading…
Reference in New Issue