Skip to content

Commit 95137e7

Browse files
committed
final script API?
1 parent ab08c95 commit 95137e7

6 files changed

Lines changed: 62 additions & 65 deletions

File tree

TODO

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ https://forums.sonicretro.org/index.php?threads/sprite-rotation-utility.8848/#po
3030
==
3131
generate definition project files from sonlvl
3232
copy / paste mappings
33-
file - project - mappings
3433
time travel for undo/redo
3534
import palette from spritesheet https://yarnpkg.com/en/package/node-vibrant
3635
==

app/components/file/index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
import React, { useEffect, useState, useRef } from 'react';
22
import { observer } from 'mobx-react';
33
import { Item, Input, File as FileInput, Select, Editor } from '#ui';
4-
import { listing } from '#formats/scripts';
4+
import { listing, load } from '#formats/scripts';
55

66
export const File = observer(() => {
77

88
// useEffect(() => {
99

1010

1111
// }, []);
12+
if (listing.length) {
13+
console.log('script');
14+
load(listing[0].value);
15+
}
1216
return <div>
1317
left align
1418
<FileInput />

app/formats/scripts/index.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
// listing.js
22

33
export { default as listing } from './listing';
4-
5-
// function scriptDir() {
6-
7-
// }
4+
export { default as load } from './load';
85

96
// next: file menu + custom loader -> remove brace
107
//

app/formats/scripts/listing.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ const scriptPaths = uniq([
99
process.cwd(),
1010
]).map(path => join(path, 'scripts'));
1111

12-
const scriptDir = scriptPaths.find(path => fs.existsSync(path) && fs.lstatSync(path).isDirectory());
12+
export const scriptDir = scriptPaths.find(path => (
13+
fs.existsSync(path) && fs.lstatSync(path).isDirectory()
14+
));
1315

1416
const scripts = observable([]);
1517

1618
const { readdir } = fs.promises;
1719

18-
async function loadScripts(...args) {
20+
async function loadScripts() {
1921
try {
2022
const list = await readdir(scriptDir);
2123
scripts.replace(list.map(filename => ({

app/formats/scripts/load.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import { scriptDir } from './listing';
2+
3+
14
const globals = {
25
dc: {
36
b: 8,

scripts/Sonic 1.js

Lines changed: 49 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,52 @@
11
// Flex 2 Mapping Definition
22

3-
const {
4-
label,
5-
info,
6-
offsetTable,
7-
mappings,
8-
dplcs,
9-
write,
10-
read,
11-
nybble,
12-
dc,
13-
} = Flex2;
3+
const { mappings, dplcs, offsetTable, write, read, dc, nybble } = Flex2;
144

15-
offsetTable(dc.w, 'mappings');
16-
mappings(
17-
(mapping, i) => {
18-
// header(() => {
19-
// read()
20-
// })
21-
if (i === 0) mapping.ref.endIndex = read(dc.b);
22-
mapping.top = read(dc.b);
23-
read(nybble);
24-
mapping.width = read(2) + 1;
25-
mapping.height = read(2) + 1;
26-
mapping.priority = read(1);
27-
mapping.palette = read(2);
28-
mapping.yflip = read(1);
29-
mapping.xflip = read(1);
30-
mapping.offset = read(11);
31-
mapping.left = read(dc.b);
32-
// if (i > mapping.ref.endIndex) return end;
33-
},
34-
(mapping, i) => {
35-
if (i === 0) write(dc.b, mapping.parent.length);
36-
write(dc.b, mapping.top);
37-
write(nybble, 0);
38-
write(2, mapping.width - 1);
39-
write(2, mapping.height - 1);
40-
write(1, mapping.priority);
41-
write(2, mapping.palette);
42-
write(1, mapping.yflip);
43-
write(1, mapping.xflip);
44-
write(11, mapping.offset);
45-
write(dc.b, mapping.left);
46-
},
47-
);
48-
offsetTable(dc.w, 'dplcs');
49-
dplcs(
50-
(dplc, i) => {
51-
if (i === 0) read(dc.b);
52-
dplc.size = read(nybble);
53-
dplc.offset = read(nybble * 3);
54-
},
55-
(dplc, i) => {
56-
if (i === 0) write(dc.b, dplc.parent.length);
57-
write(nybble, dplc.size);
58-
write(nybblr * 3, dplc.offset);
59-
},
60-
);
5+
mappings({
6+
header: offsetTable(dc.w), // [read, write]
7+
sprites: [
8+
(mapping, i) => {
9+
if (i === 0) mapping.ref.endIndex = read(dc.b);
10+
mapping.top = read(dc.b);
11+
read(nybble);
12+
mapping.width = read(2) + 1;
13+
mapping.height = read(2) + 1;
14+
mapping.priority = read(1);
15+
mapping.palette = read(2);
16+
mapping.yflip = read(1);
17+
mapping.xflip = read(1);
18+
mapping.offset = read(11);
19+
mapping.left = read(dc.b);
20+
if (i > mapping.ref.endIndex) return end;
21+
},
22+
(mapping, i) => {
23+
if (i === 0) write(dc.b, mapping.parent.length);
24+
write(dc.b, mapping.top);
25+
write(nybble, 0);
26+
write(2, mapping.width - 1);
27+
write(2, mapping.height - 1);
28+
write(1, mapping.priority);
29+
write(2, mapping.palette);
30+
write(1, mapping.yflip);
31+
write(1, mapping.xflip);
32+
write(11, mapping.offset);
33+
write(dc.b, mapping.left);
34+
},
35+
],
36+
});
37+
38+
dplcs({
39+
header: offsetTable(dc.w),
40+
sprites: [
41+
(dplc, i) => {
42+
if (i === 0) read(dc.b);
43+
dplc.size = read(nybble);
44+
dplc.offset = read(nybble * 3);
45+
},
46+
(dplc, i) => {
47+
if (i === 0) write(dc.b, dplc.parent.length);
48+
write(nybble, dplc.size);
49+
write(nybblr * 3, dplc.offset);
50+
},
51+
],
52+
});

0 commit comments

Comments
 (0)