136 lines
3.3 KiB
JavaScript
136 lines
3.3 KiB
JavaScript
'use strict';
|
|
|
|
const path = require('path');
|
|
const { pathToFileURL } = require('url');
|
|
|
|
const SHEET_WIDTH = 1536;
|
|
const SHEET_HEIGHT = 1872;
|
|
const CELL_WIDTH = 192;
|
|
const CELL_HEIGHT = 208;
|
|
const SHEET_URL = pathToFileURL(path.join(__dirname, 'maple', 'spritesheet.webp')).href;
|
|
|
|
function cell(row, col, facingBasis) {
|
|
return {
|
|
sheetUrl: SHEET_URL,
|
|
sheetWidth: SHEET_WIDTH,
|
|
sheetHeight: SHEET_HEIGHT,
|
|
frameX: col * CELL_WIDTH,
|
|
frameY: row * CELL_HEIGHT,
|
|
frameWidth: CELL_WIDTH,
|
|
frameHeight: CELL_HEIGHT,
|
|
facingBasis: facingBasis || 'left'
|
|
};
|
|
}
|
|
|
|
function rowFrames(row, startCol, count, facingBasis) {
|
|
const frames = [];
|
|
for (let index = 0; index < count; index += 1) {
|
|
frames.push(cell(row, startCol + index, facingBasis));
|
|
}
|
|
return frames;
|
|
}
|
|
|
|
module.exports = {
|
|
width: 48,
|
|
height: 52,
|
|
clips: {
|
|
idle0: {
|
|
fps: 1.4,
|
|
frames: rowFrames(0, 0, 6, 'left')
|
|
},
|
|
idle1: {
|
|
fps: 1.4,
|
|
frames: rowFrames(6, 0, 6, 'left')
|
|
},
|
|
idle2: {
|
|
fps: 1.4,
|
|
frames: rowFrames(7, 0, 6, 'left')
|
|
},
|
|
idle3: {
|
|
fps: 1.4,
|
|
frames: rowFrames(8, 0, 6, 'left')
|
|
},
|
|
walkRight: {
|
|
fps: 4.4,
|
|
frames: rowFrames(1, 0, 8, 'right')
|
|
},
|
|
walkLeft: {
|
|
fps: 4.4,
|
|
frames: rowFrames(2, 0, 8, 'left')
|
|
},
|
|
inspectLeft: {
|
|
fps: 2.2,
|
|
frames: rowFrames(3, 0, 4, 'left')
|
|
},
|
|
inspectRight: {
|
|
fps: 2.2,
|
|
frames: rowFrames(3, 0, 4, 'left')
|
|
},
|
|
pounceLeft: {
|
|
fps: 4,
|
|
frames: rowFrames(4, 0, 5, 'left')
|
|
},
|
|
pounceRight: {
|
|
fps: 4,
|
|
frames: rowFrames(4, 0, 5, 'left')
|
|
},
|
|
sleep: {
|
|
fps: 1,
|
|
frames: [
|
|
cell(5, 3, 'left')
|
|
]
|
|
},
|
|
sleepWakeLeft: {
|
|
fps: 2.6,
|
|
frames: rowFrames(5, 4, 3, 'left'),
|
|
nextClip: 'idle0'
|
|
},
|
|
sleepWakeRight: {
|
|
fps: 2.6,
|
|
frames: rowFrames(5, 4, 3, 'left'),
|
|
nextClip: 'idle0'
|
|
},
|
|
transitionIdleWalkLeft: {
|
|
fps: 3,
|
|
frames: rowFrames(2, 0, 3, 'left'),
|
|
nextClip: 'walkLeft'
|
|
},
|
|
transitionIdleWalkRight: {
|
|
fps: 3,
|
|
frames: rowFrames(1, 0, 3, 'right'),
|
|
nextClip: 'walkRight'
|
|
},
|
|
transitionIdleSleep: {
|
|
fps: 2.8,
|
|
frames: rowFrames(5, 0, 4, 'left'),
|
|
nextClip: 'sleep'
|
|
}
|
|
},
|
|
transitions: {
|
|
'idle0->walkLeft': 'transitionIdleWalkLeft',
|
|
'idle1->walkLeft': 'transitionIdleWalkLeft',
|
|
'idle2->walkLeft': 'transitionIdleWalkLeft',
|
|
'idle3->walkLeft': 'transitionIdleWalkLeft',
|
|
'idle0->walkRight': 'transitionIdleWalkRight',
|
|
'idle1->walkRight': 'transitionIdleWalkRight',
|
|
'idle2->walkRight': 'transitionIdleWalkRight',
|
|
'idle3->walkRight': 'transitionIdleWalkRight',
|
|
'idle0->sleep': 'transitionIdleSleep',
|
|
'idle1->sleep': 'transitionIdleSleep',
|
|
'idle2->sleep': 'transitionIdleSleep',
|
|
'idle3->sleep': 'transitionIdleSleep',
|
|
'inspectLeft->walkLeft': 'transitionIdleWalkLeft',
|
|
'inspectRight->walkRight': 'transitionIdleWalkRight',
|
|
'sleep->idle0': 'sleepWakeLeft',
|
|
'sleep->idle1': 'sleepWakeLeft',
|
|
'sleep->idle2': 'sleepWakeLeft',
|
|
'sleep->idle3': 'sleepWakeLeft',
|
|
'sleep->walkLeft': 'sleepWakeLeft',
|
|
'sleep->walkRight': 'sleepWakeRight',
|
|
'sleep->inspectLeft': 'sleepWakeLeft',
|
|
'sleep->inspectRight': 'sleepWakeRight',
|
|
'sleep->pounceLeft': 'sleepWakeLeft',
|
|
'sleep->pounceRight': 'sleepWakeRight'
|
|
}
|
|
};
|