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; | |
| } | |
| }; |