@dada78641/bwmapimage
Version:
Generates images of StarCraft: Brood War and Remastered maps
37 lines (33 loc) • 976 B
JavaScript
// @dada78641/bwmapimage <https://github.com/msikma/bwmapimage>
// © MIT license
import XXH from 'xxhashjs'
// To ensure our hashes are unique.
const HASH_MAGIC = 0xDADA
/**
* Returns a 64-bit xxHash hash value for the given parsed map.
*
* This hash should be used only for caching purposes, not for identification purposes.
*/
export function getMapHash(mapData) {
const hash = XXH.h64(HASH_MAGIC)
hash.update(mapData._tiles)
for (const unit of mapData.units) {
const buffer = new ArrayBuffer(20)
const view = new Uint32Array(buffer)
view[0] = unit.x
view[1] = unit.y
view[2] = unit.unitId
view[3] = unit.player
view[4] = unit.resourceAmt
hash.update(buffer)
}
for (const sprite of mapData.sprites) {
const buffer = new ArrayBuffer(12)
const view = new Uint32Array(buffer)
view[0] = sprite.x
view[1] = sprite.y
view[2] = sprite.spriteId
hash.update(buffer)
}
return hash.digest().toString(16)
}