mdx-m3-viewer
Version:
A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.
49 lines (36 loc) • 1.11 kB
text/typescript
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 {
stringMap: Map<number, string> = new Map();
constructor(buffer?: string) {
if (buffer) {
this.load(buffer);
}
}
load(buffer: string) {
let stream = new TokenStream(buffer);
let token;
stream.index += 3; // ???
while ((token = stream.readToken())) {
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;
}
}
}
save() {
let buffer = ''; // ???
for (let [key, value] of this.stringMap) {
buffer += `STRING ${key}\n{\n${value}\n}\n`;
}
return buffer;
}
}