diff --git a/public/list.html b/public/list.html
index 55ef341..bef0d8b 100644
--- a/public/list.html
+++ b/public/list.html
@@ -23,8 +23,9 @@
let charts = document.createElement('ul');
for (const chart of doc.charts) {
- let l = document.createElement('li');
- l.innerText = `${chart.difficulty} ${chart.rating} - ${chart.name}`
+ let l = document.createElement('li');
+ l.innerText = `${chart.difficulty} ${chart.rating} - ${chart.name}\n` +
+ `${chart.steps} steps, ${chart.mines} mines, ${chart.jumps} jumps, ${chart.hands} hands, ${chart.holds} holds, ${chart.rolls} rolls`
charts.insertAdjacentElement('beforeend', l);
}
el.insertAdjacentElement('beforeend', charts);
diff --git a/src/lib/smparse.ts b/src/lib/smparse.ts
index 6736c6e..6e955ba 100644
--- a/src/lib/smparse.ts
+++ b/src/lib/smparse.ts
@@ -1,6 +1,4 @@
export function parseSM(data: string) {
- data = data.replace(/[\n\r]/g,'');
-
// steps
const difficulties = [];
const steps = data.split('#NOTES:');
@@ -18,11 +16,25 @@ export function parseSM(data: string) {
diff.rating = Number(stepsSplit[3]);
diff.radarvalues = stepsSplit[4].split(',').map(v => Number(v));
+ const chart = stepsSplit[5];
+ diff.rawChart = chart;
+
+ diff.steps = chart.split(/[124]/g).length - 1;
+ diff.mines = chart.split('M').length - 1;
+ diff.jumps = chart.split(/[124]0{0,2}[124]/g).length - 1;
+ diff.hands = chart.split(/[124]0{0,1}[124]0{0,1}[124]/g).length - 1;
+ diff.holds = chart.split('2').length - 1;
+ diff.rolls = chart.split('4').length - 1;
+
+ diff.steps -= diff.jumps; // jumps are counted as 1 step
+
difficulties.push(diff);
}
}
}
+ data = data.replace(/[\n\r]/g,'');
+
// metadata
const lines = data.split(';').filter(l => l.startsWith('#'));
const obj: any = {};
diff --git a/src/schema.ts b/src/schema.ts
index 6b38590..e902248 100644
--- a/src/schema.ts
+++ b/src/schema.ts
@@ -40,7 +40,14 @@ const Chart = new Schema({
ratingsVote: {type: [UserRating], default: []},
spoilered: {type: Boolean, default: false},
- hidden: {type: Boolean, default: false}
+ hidden: {type: Boolean, default: false},
+
+ steps: {type: Number, default: 0},
+ mines: {type: Number, default: 0},
+ jumps: {type: Number, default: 0},
+ hands: {type: Number, default: 0},
+ holds: {type: Number, default: 0},
+ rolls: {type: Number, default: 0},
});
const Comment = new Schema({
diff --git a/src/upload.ts b/src/upload.ts
index e916f9f..98006c6 100644
--- a/src/upload.ts
+++ b/src/upload.ts
@@ -2,7 +2,6 @@ import { tmpdir } from 'os';
import * as fs from 'fs';
const StreamZip = require('node-stream-zip');
-import { returnStatic } from './lib/util';
import { parseSM } from './lib/smparse';
import { File } from './schema';