0.0.56 • Published 9 months ago

eastward.js v0.0.56

Weekly downloads
-
License
GPL-3.0-only
Repository
github
Last release
9 months ago

eastward.js

Typescript library for imort/export assets of the video game Eastward.

No Browser Support

Installation into an existing project

To install eastward.js as a dependency of your Node.js project:

npm install eastward.js

eastward.js is made with TypeScript.

How to use

Command Line usage

npx eastward --help for help.

If you installed eastward.js globally,

npm install -g eastward.js

you can just use eastward --help

Usage: eastward [MODE] [OPTION]... [FILE]...
Mode and Option:
        extract         Extract all assets with types from game root directory to output directory. Without explicit --type option, all assets will be extracted.
                --root          game root directory
                -T, --type      asset type; eastward --help type to get list
                --out           output directory
        unzip           Extract data from .g files to output directory.
                --out           output directory
                [FILE]          .g files
        zip             Archive all data from root directory to output .g file.
                --root          root directory
                --out           output .g file
        hmg2png         Read hmg files and convert to png files.
                -r              Read recursive in directory
                --in            Input directory or file
                --out           Output directory or file
        png2hmg         Read png files and convert to hmg files.
                -r              Read recursive in directory
                --in            Input directory or file
                --out           Output directory or file
        json2msg                Read JSON files and convert to msgpack files.
                -r              Read recursive in directory
                --in            Input directory or file
                --out           Output directory or file
        inject          Read files from root and inject them into .g file.
                --root          Input directory
                --in            Input .g file
                --out           Output .g file

Source code usage

Example for extract some assets from the root game folder.

import { Eastward, registerAll } from "eastward.js";

const root = "C:/SteamLibrary/steamapps/common/Eastward";
const eastward = new Eastward({ root });
await eastward.init();
registerAll(eastward); // register all asset types

await eastward.extractTo("./extract");

console.log("extracting finished");

Or you can just extract some types of assets.

import { Eastward, LocalePackAsset } from "eastward.js";

const root = "C:/SteamLibrary/steamapps/common/Eastward";
const eastward = new Eastward({ root });
await eastward.init();
eastward.registerAssetLoader("locale_pack", LocalePackAsset);

await eastward.extractTo("./extract_locale_pack");

console.log("extracting locale_pack finished");

Example for extract certain assets from the root game folder.

import { Eastward, TextureAsset, registerAll } from "eastward.js";

const root = "C:/SteamLibrary/steamapps/common/Eastward";
const eastward = new Eastward({ root });
await eastward.init();
registerAll(eastward); // register all asset types

const texture = await eastward.loadAsset<TextureAsset>("texture/ui/icon/miniSam.png");
if (texture) {
  await texture.saveFile("./miniSam.png")
}

console.log("extracting finished");

Example for reading asset from archive.

import { GArchive } from "eastward.js";
import { writeFile } from "fs/promises";

const archive = new GArchive();
await archive.load(
  "C:/SteamLibrary/steamapps/common/Eastward/content/game/locale.g"
);

const data = await archive.getFileData("1fbba5dfab829f507358f58c1c2dc59a");
if (data == null) {
  process.exit(-1);
}
writeFile("./CH1.lua", data);

Example for writing asset to archive.

import { GArchive } from "eastward.js";
import { readFile } from "fs/promises";

const archive = new GArchive();
await archive.load(
  "C:/SteamLibrary/steamapps/common/Eastward/content/game/locale.g"
);
const data = await readFile("./CH1.lua");

await archive.setFileData("1fbba5dfab829f507358f58c1c2dc59a", data);

await archive.saveFile("./locale.g");
0.0.40

10 months ago

0.0.41

10 months ago

0.0.42

10 months ago

0.0.43

10 months ago

0.0.44

10 months ago

0.0.45

10 months ago

0.0.46

10 months ago

0.0.47

10 months ago

0.0.37

10 months ago

0.0.38

10 months ago

0.0.39

10 months ago

0.0.30

10 months ago

0.0.31

10 months ago

0.0.32

10 months ago

0.0.33

10 months ago

0.0.34

10 months ago

0.0.35

10 months ago

0.0.36

10 months ago

0.0.26

10 months ago

0.0.27

10 months ago

0.0.28

10 months ago

0.0.29

10 months ago

0.0.20

11 months ago

0.0.21

11 months ago

0.0.22

11 months ago

0.0.23

10 months ago

0.0.24

10 months ago

0.0.25

10 months ago

0.0.16

11 months ago

0.0.17

11 months ago

0.0.18

11 months ago

0.0.19

11 months ago

0.0.51

10 months ago

0.0.52

10 months ago

0.0.53

10 months ago

0.0.54

9 months ago

0.0.55

9 months ago

0.0.56

9 months ago

0.0.50

10 months ago

0.0.48

10 months ago

0.0.49

10 months ago

0.0.10

11 months ago

0.0.11

11 months ago

0.0.12

11 months ago

0.0.13

11 months ago

0.0.14

11 months ago

0.0.3

11 months ago

0.0.2

11 months ago

0.0.15

11 months ago

0.0.9

11 months ago

0.0.8

11 months ago

0.0.5

11 months ago

0.0.4

11 months ago

0.0.6

11 months ago

0.0.1

11 months ago