mdx-m3-viewer
Version:
A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.
59 lines (46 loc) • 1.18 kB
JavaScript
import TokenStream from '../../mdlx/tokenstream';
/**
* war3map.wts - the string table file.
*
* Contains a map of number->string.
* When other map data like triggers use the string TRIGSTR_XXX, where XXX is a number, the value will be fetched from the table.
*/
export default class War3MapWts {
/**
* @param {?string} buffer
*/
constructor(buffer) {
/** @member {Map<number, string>} */
this.stringMap = new Map();
if (buffer) {
this.load(buffer);
}
}
/**
* @param {string} buffer
*/
load(buffer) {
let stream = new TokenStream(buffer);
let token;
stream.index += 3; // ???
while ((token = stream.read())) {
if (token === 'STRING') {
let index = stream.readInt();
stream.read(); // {
let end = buffer.indexOf('}', stream.index);
this.stringMap.set(index, buffer.slice(stream.index, end).trim());
stream.index = end;
}
}
}
/**
* @return {string}
*/
save() {
let buffer = ''; // ???
for (let [key, value] of this.stringMap) {
buffer += `STRING ${key}\n{\n${value}\n}\n`;
}
return buffer;
}
}