Skip to content

metsavir/elmajs

 
 

Repository files navigation

Release npm npm bundle size codecov

elmajs

Elasto Mania NPM package for working with all main game files: levels, replays, LGRs and state.dat.

Install

npm install elmajs --save

Documentation and usage

See https://elmadev.github.io/elmajs/ for extended documentation. You will find the repository here: https://github.com/elmadev/elmajs

Opening and editing a level file in Node.js

const fs = require('fs');
const { Level } = require('elmajs');

const fileBuffer = fs.readFileSync('C:/EOL/lev/groof89.lev');
const level = Level.from(fileBuffer);
level.name = 'rename level';
level.top10.single = []; // remove single player best times list
fs.writeFileSync('testlev.lev', level.toBuffer());

Using UMD bundle in browser directly

<head>
  <script src="https://unpkg.com/[email protected]/umd/main.js"></script>
  <script>
    (async () => {
      const file = await fetch('https://eol.ams3.digitaloceanspaces.com/replays/vq0y3cwqfn/37Spef5269.rec');
      const buffer = await file.arrayBuffer();
      const rec = ElmaJS.Replay.from(buffer); // the UMD bundle adds a ElmaJS global variable with all functionality

      const info = document.getElementById('info');
      // returns whether ride in replay is finished (has a touch event as the final event)
      // and the time (if finished, exact same of event -- otherwise approximation based on frame count or a touch event)
      const { finished, time, reason } = rec.getTime();
      info.innerHTML = `${rec.level}: ${time}`; // QWQUU037.LEV: 52690
    })()
  </script>
</head>

<body>
  <div id="info"></div>
</body>

Contribute

  1. Fork this project
  2. Enter the following:
git clone https://github.com/YOUR-NAME/elmajs.git
cd elmajs
yarn
  1. Create your changes.
  2. yarn test and make sure everything passes.
  3. Send a pull request!

Do not modify any of the tests unless you know there is a mistake, or you need to add a new test for a new feature, or if something is missing.

Issues

If you spot any errors, make a new issue and write as many details as you can regarding the error.

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 97.5%
  • JavaScript 2.2%
  • HTML 0.3%