Spaces:
Running
Running
import { bin2str } from './common'; | |
export default (data, map) => { | |
let view = new DataView(data.buffer, data.byteOffset, data.byteLength); | |
for (let i = 0; i < data.byteLength / 2; i++) { | |
let bits = view.getUint16(i * 2); | |
let altm = {}; | |
// how many levels below altitude should we display a grey block | |
// for a tunnel? | |
altm.tunnelLevels = (((bits >> 8) & 0b11111100) >> 2); | |
// related to tunnel? | |
// appears to be set to 1 for hydroelectric dams and nearby | |
// surface water tiles | |
// not used for now | |
//altm.unknownBits = ((bits >> 8) & 0b00000011); | |
// level / altitude | |
altm.altitude = (bits & 0b0000000000011111); | |
// unknown, not always accurate (rely on XTER value instead) | |
// not used for now | |
//altm.waterLevel = (bits & 0b0000000001100000) >> 5; | |
// unknown, not always accurate (rely on XTER value instead) | |
// not used for now | |
//altm.waterCovered = (bits & 0b0000000010000000) >> 7; | |
// raw binary values as strings for research/debug | |
altm.binaryText = { | |
bits: bin2str(bits, 16), | |
first8bits: bin2str((bits & 0b1111111100000000) >> 8, 8), | |
last8bits: bin2str((bits & 0b0000000011111111), 8), | |
//tunnelLevelsBits: bin2str(altm.tunnelLevels, 8), | |
//unknownBits: bin2str(altm.unknownBits, 8), | |
//altitudeBits: bin2str(altm.altitude, 8), | |
//waterLevelBits: bin2str(altm.waterLevel, 8), | |
//waterCoveredBits: bin2str(altm.waterCovered, 8), | |
}; | |
map.cells[i]._segmentData.ALTM = altm; | |
} | |
}; |