"use strict"; import {Common} from "http://localhost:18000/Public/ecma/Utils/Common.ecma.js"; import {Tools} from "../Utils/Tools.ecma.js"; export const SFFv2PaletteModel = (function(){ const SFFv2PaletteModel = function(data, sff){ const self = this; this.group = null; this.item = null; this.columns = null; this.link = null; this.data_offset = null; this.data_length = null; this.palette = null; const constructor = () => { Object.entries(Tools.load_binary(data, [ ["group", "integer", 2], ["item", "integer", 2], ["columns", "integer", 2], ["link", "integer", 2], ["data_offset", "integer", 4], ["data_length", "integer", 4] ])).forEach(([key, value]) => { self[key] = value; }); if(self.data_length > 0) self.palette = sff.slice(self.data_offset, self.data_offset + self.data_length); }; constructor(); }; return SFFv2PaletteModel; })(); export const SFFv2SpriteModel = (function(){ const SFFv2SpriteModel = function(data, sff){ const self = this; this.group = null; this.item = null; this.width = null; this.height = null; this.x = null; this.y = null; this.link = null; this.format = null; this.depth = null; this.data_offset = null; this.data_length = null; this.palette_index = null; this.flags = null; this.data = null; const constructor = () => { Object.entries(Tools.load_binary(data, [ ["group", "integer", 2], ["item", "integer", 2], ["width", "integer", 2], ["height", "integer", 2], ["x", "integer", 2], ["y", "integer", 2], ["link", "integer", 2], ["format", "integer", 1], ["depth", "integer", 1], ["data_offset", "integer", 4], ["data_length", "integer", 4], ["palette_index", "integer", 2], ["flags", "integer", 2] ])).forEach(([key, value]) => { self[key] = value; }); if(self.data_length > 0) self.data = sff.slice(self.data_offset, self.data_offset + self.data_length); }; constructor(); }; return SFFv2SpriteModel; })(); export const SFFv2Model = (function(){ const SFFv2Model = function(sff, callback = null){ const self = this; this.signature = ""; this.version = []; this.sprites = []; this.palettes = []; this.sprite_offset = null; this.sprite_count = null; this.palette_offset = null; this.palette_count = null; const constructor = () => { Object.entries(Tools.load_binary(sff.slice(0, 512), [ ["signature", "string", 12], ["version", "bytes", 4], ["reserved1", "bytes", 4], ["reserved2", "bytes", 4], ["compat_ver", "bytes", 4], ["reserved3", "bytes", 4], ["sprite_offset", "integer", 4], ["sprite_count", "integer", 4], ["palette_offset", "integer", 4], ["palette_count", "integer", 4], ["literal_data_offset", "integer", 4], ["literal_data_length", "integer", 4], ["translated_data_offset", "integer", 4], ["translated_data_length", "integer", 4], ["filler", "bytes", 448] ])).forEach(([key, value]) => { if(self[key] !== undefined) self[key] = value; }); while(self.sprite_offset < self.sprite_count){ self.sprites.push(new SFFv2SpriteModel(sff.slice(self.sprite_offset, self.sprite_offset + 16), sff)); self.sprite_offset += 16; }; while(self.palette_offset < self.palette_count){ self.palettes.push(new SFFv2PaletteModel(sff.slice(self.palette_offset, self.palette_offset + 28), sff)); self.palette_offset += 28; }; Common.call(callback, self); }; constructor(); }; return SFFv2Model; })();