Fessie Räumt Auf Konservierungsprojekt

Dazu hier die Möglichkeit, die aktuellen Daten der Top 10 als JSON abzurufen:
https://fessie.max-reimann.de/?show=json

1 „Gefällt mir“

Geil! Davon habe ich direkt Gebrauch gemacht:

Ich habe dazu die Highscore testweise hartkodiert ins Javascript gepackt. Der Highscore-Link am Ende macht nichts, wenn man ihn normal anklickt. Man muss „speichern unter“.

fileinput = document.getElementsByTagName("input")[0];
resultpre = document.getElementById("result");
highscore = [
  {
    "rang": 1,
    "name": "ja",
    "score": 252800
  },
  {
    "rang": 2,
    "name": "max",
    "score": 125300
  },
  {
    "rang": 3,
    "name": "hackerman",
    "score": 124600
  },
  {
    "rang": 4,
    "name": "Nun",
    "score": 100000
  },
  {
    "rang": 5,
    "name": "martin",
    "score": 93300
  },
  {
    "rang": 6,
    "name": "martin",
    "score": 92500
  },
  {
    "rang": 7,
    "name": "max",
    "score": 91200
  },
  {
    "rang": 8,
    "name": "martin",
    "score": 90000
  },
  {
    "rang": 9,
    "name": "leer hier",
    "score": 86800
  },
  {
    "rang": 10,
    "name": "martin",
    "score": 81900
  }
];
fileinput.addEventListener('change', function() {
    var reader = new FileReader();
    reader.onload = function() {

    var arrayBuffer = this.result,
      array = new Uint8Array(arrayBuffer),
      binaryString = String.fromCharCode.apply(null, array),
      view = new DataView(arrayBuffer),
      offset = 0;
    
    // read
      
    resultpre.append("Geräusche: " + view.getUint32(offset, true) + "\n");
    offset += 4;
    resultpre.append("Musik: " + view.getUint32(offset, true) + "\n");
    offset += 4;
    resultpre.append("Stereo: " + view.getUint8(offset, true) + "\n");
    offset += 1;
    resultpre.append("Auflösung: " + view.getUint8(offset) + "\n");
    offset += 1;
    resultpre.append("Details: " + view.getUint8(offset) + "\n");
    offset += 1;
    resultpre.append("Level: " + view.getUint32(offset, true) + "\n");
    offset += 4;
    while(offset < view.byteLength) {
        score = view.getUint32(offset, true);
        offset += 4;
        strlen = view.getUint32(offset, true);
        offset += 4;
        username = "";
        for(charpos =0; charpos<strlen; charpos++)
        {
            username += String.fromCharCode(view.getUint8(offset));
            offset++;
        }
        resultpre.append(score + " "+ username +"\n");
    }
    
    // write
    
    offset = 15;
    highscorebytelength = highscore.map(x => x.name.length + 8).reduce((partial, x) => partial + x, 0);
    resultpre.append("highscorebytelenth: " + highscorebytelength);
    arrayBuffer = arrayBuffer.transfer(offset + highscorebytelength);
    view = new DataView(arrayBuffer);
    highscore.forEach(function(entry){
        view.setUint32(offset, entry.score, true);
        offset += 4;
        view.setUint32(offset, entry.name.length, true);
        offset += 4;
        Array.from(entry.name).forEach(function(x){
            view.setUint8(offset, x.charCodeAt());
            offset++;
        });
    });
    blob = new Blob([view.buffer], { type: "application/octet-stream"});
    link = document.createElement('a');
    link.href = window.URL.createObjectURL(blob);
    link.innerText = "Highscore"
    link.download = "data.fcg";
    resultpre.parentElement.appendChild(link);
  }
  reader.readAsArrayBuffer(this.files[0]);
  console.log(fileinput);
}, false);

Man könnte die Daten auch live holen mit:

fetch("https://fessie.max-reimann.de/?show=json").then(x => x.json().then(y => highscore = y));
1 „Gefällt mir“